﻿var pnlCallbacks=[];

function RMapInit(cfg)
{
	if(window.RMap==null)
		return;
	
  RMap.MapApplication.resourcesUrl = appSettings.rmapResourcesUrl;
  RMap.MapApplication.settingsUrl = appSettings.rmapSettingsUrl;
  RMap.MapApplication.proxyUrl = appSettings.proxyUrl;
  RMap.MapApplication.indImg = "Common/hourglass_anim.gif";

  var mapSettings = RMap.MapSettingsLoader.loadMap(RMap.MapApplication.settingsUrl);
  if(mapSettings.failed==true)
  {
      mapSettings.defaultCenter={x:499000, y:110000};
      mapSettings.defaultCoordinateSystem=RMap.CoordinateSystem.getCoordinateSystem("EPSG:2170");
      mapSettings.tileMapCoordinateSystem=RMap.CoordinateSystem.getCoordinateSystem("EPSG:2170");
      mapSettings.zoomLevels=[256];
  }
  mapSettings.detailZoomLevel=mapSettings.getBestZoomLevel("8m");
  mapSettings.defaultZoomLevel=mapSettings.getBestZoomLevel("500m");
  var z=9;
  var pers=cfg.persist ? loadRMapState() : null;
  if(pers!=null)
  {
		if(pers.x!=null && pers.y!=null)
			mapSettings.defaultCenter={x:pers.x, y:pers.y};
		if(pers.z!=null)
			z=pers.z
	}
  var config = {zoomLevel:z, mapSettings:mapSettings};
  var ctrlInd=RMap.MapControl.createIndicatorControl();
  var ctrlNav=RMap.MapControl.createNavigationControl();
  map = new RMap.Map()       
  map.initialize(document.getElementById(cfg.mapCnt), config);
  map.addControl(ctrlInd, { left:'6px', top:'6px' });
  map.addControl(ctrlNav, { top: '5px', left: '5px' });
  map.setOpacity(25);
  if(cfg.persist)
		map.attachEvent("view", saveRMapState)
	cfg.vzrokDict=GetDictValue("vzrokDict", cfg.lng);
	cfg.catDict=GetDictValue("catDict", cfg.lng);
	cfg.sortDict=GetDictValue("sortDict", cfg.lng);
  window.map=map;
  window.mapCfg=cfg;
	window.lysMgr={};
	window.fltMgr={};
	mapSettings.defaultCenter={x:499000, y:110000};

  //Inicializacija kontrolnika za sloje 
  var lysStr="";
  var lys=cfg.lys.split(",");
  var tujina=false;
  for(var f=0;f<lys.length;f++)
  {
		if(lys[f].replace(/ /g,"").toLowerCase()=='tujina')
			tujina=true;

		if(lys[f].replace(/ /g,"").toLowerCase()=='events')
		{
			if(lysStr!="")
				lysStr+="&nbsp; &nbsp;";
			lysStr+=RMapLayerTemplate('events', GetDictValue('events', cfg.lng));
		}
		if(lys[f].replace(/ /g,"").toLowerCase()=='cameras')
		{
			if(lysStr!="")
				lysStr+="&nbsp; &nbsp;";
			lysStr+=RMapLayerTemplate('cameras', GetDictValue('cameras', cfg.lng));
		}
		if(lys[f].replace(/ /g,"").toLowerCase()=='weather')
		{
			if(lysStr!="")
				lysStr+="&nbsp; &nbsp;";
			lysStr+=RMapLayerTemplate('weather', GetDictValue('weather', cfg.lng));
		}					
		if(lys[f].replace(/ /g,"").toLowerCase()=='counters')
		{
			if(lysStr!="")
				lysStr+="&nbsp; &nbsp;";
			lysStr+=RMapLayerTemplate('counters', GetDictValue('counters', cfg.lng));
		}	
		if(lys[f].replace(/ /g,"").toLowerCase()=='burja')
		{
			if(lysStr!="")
				lysStr+="&nbsp; &nbsp;";
			lysStr+=RMapLayerTemplate('burja', GetDictValue('burja', cfg.lng));
		}		
  }
  document.getElementById(cfg.lysCnt).innerHTML = "<H2 class='moduletitle RMapControl'>" + GetDictValue("layTitle", cfg.lng) + "</H2><span style='position:absolute; right:0px; top:0px;'><a href='" + appSettings.fullSizeMap + (cfg.lng > '' ? "?lng=" + (cfg.lng) : "") + "' target='_blank'>" + GetDictValue("fullsize", cfg.lng) + "</a></span><br/>" + lysStr; //<img src='"+appSettings.iconsRepository+"fullscreen.gif' style='margin-right:5px; vertical-align:bottom;'/>
   
  //Inicializacija kontrolnika za filtre
  var n=0;
	var fltStr="";
	for(var key in mapCfg.vzrokDict)
	{
		var ok=false;
		if(pers!=null && pers.valid=="true" && pers.flt!=null)
		{
			ok=true;
			for(var f=0;f<pers.flt.length;f++)
			{
				if(pers.flt[f]==mapCfg.vzrokDict[key])
					ok=false;
			}
		}
		else
		{
			if(mapCfg.vzrokDict[key]!=3)
				ok=true;
		}
		if(n==0)
			fltStr+="<tr>";
		fltStr+="<td style='text-align:left; vertical-align:top'>";
		fltStr+=RMapFilterTemplate(mapCfg.vzrokDict[key].toString(), key, ok);
		fltStr+="</td>";		
		n++;
		if(n==4)
		{
			fltStr+="</tr>";
			n=0;
		}
	}
	if(fltStr!="")
	{
		if(n>0)
		{
			for(var f=n;f<4;f++)
				fltStr+="<td> &nbsp; </td>";
		}
		fltStr="<table border='0', cellspacing='0' style='width:100%'>" + fltStr + "</table>";
	}
	document.getElementById(cfg.fltCnt).innerHTML="<br/><H2 class='moduletitle RMapControl'>"+GetDictValue("fltTitle", cfg.lng)+"</H2><span style='position:absolute; right:0px; bottom:0px;'><a href='javascript:RMapShowAll()'>"+GetDictValue("fltAll", cfg.lng)+"</a></span><br/>" + fltStr;	

	//Inicializacija kontrolnika za ACDC filtre
  var n=0;
	var fltStr="";
	for(var key in mapCfg.catDict)
	{
		var ok=false;
		if(pers!=null && pers.valid=="true" && pers.flt!=null)
		{
			ok=true;
			for(var f=0;f<pers.flt.length;f++)
			{
				if(pers.flt[f]==mapCfg.catDict[key])
					ok=false;
			}
		}
		else
		{
			ok=true;
		}
		if(n==0)
			fltStr+="<tr>";
		fltStr+="<td style='text-align:left; vertical-align:top'>";
		fltStr+=RMapCatFilterTemplate(mapCfg.catDict[key].toString(), key, ok);
		fltStr+="</td>";		
		n++;
		if(n==2)
		{
			fltStr+="</tr>";
			n=0;
		}
	}
	if(fltStr!="")
	{
		if(n>0)
		{
			for(var f=n;f<2;f++)
				fltStr+="<td> &nbsp; </td>";
		}
		fltStr="<table border='0', cellspacing='0' style='width:100%'>" + fltStr + "</table>";
	}
	document.getElementById(cfg.fltCnt).innerHTML += "<hr/>"+fltStr;


  //Inicializacija kontrolnika za sorte
  var defSrt=null;
  for(var key in mapCfg.sortDict)
  {
		if(pers!=null && pers.srt!=null && pers.srt==mapCfg.sortDict[key])
			defSrt=key;
  }
  var srtStr="";
	for(var key in mapCfg.sortDict)
	{
		var ok=false;
		if(srtStr!="")
				srtStr+=" &nbsp; &nbsp; &nbsp; ";
		else if(defSrt==null)
			ok=true;
		if(defSrt==key)
			ok=true;
		srtStr+=RMapSortTemplate(mapCfg.sortDict[key].toString(), key, ok);
	}
	document.getElementById(cfg.fltCnt).innerHTML += "<hr/>"+srtStr;
	document.getElementById(cfg.fltCnt).style.marginBottom = "10px";
  var sLys=cfg.sLys.split(",");
	if(pers!=null && pers.valid=="true")
		sLys=pers.lys.split(",");

  for(var f=0;f<sLys.length;f++)
  {
		var l=sLys[f].toLowerCase();
		if(l=="events" || l=="cameras" || l=="weather" || l=="counters" || l=="burja")
			RMapLayerClicked(l, true, map, document.getElementById(window.mapCfg.clientId+"_LysChk_"+l));
	}
	RMapFilterApply();
	
	if(tujina==true)
		RMapTujinaInit("tujina", map);
	
	for(var f=0;f<pnlCallbacks.length;f++)
		pnlCallbacks[f]();
}

function isMapVisible()
{
	return document.getElementById(mapCfg.mapCnt).parentNode.style.display=="";
}

function RMapLayerTemplate(key, text)
{
	return "<span style='cursor:pointer'><input id='"+window.mapCfg.clientId+"_LysChk_"+key+"' type='checkbox' onclick='RMapLayerChkClicked(&quot;"+key+"&quot;, this);'/>&nbsp;<span id='"+window.mapCfg.clientId+"_LysName_"+key+"' onclick='RMapLayerNameClicked(&quot;"+key+"&quot;, this)'>"+text+"</span></span>";
}
function RMapFilterTemplate(key, text, ok)
{
	return "<span style='cursor:pointer'><input id='"+window.mapCfg.clientId+"_FltChk_"+key+"' type='checkbox' " + (ok==true ? "checked='true'" : "") + " onclick='RMapFilterChkClicked(&quot;"+key+"&quot;, this);'/>&nbsp;<span id='"+window.mapCfg.clientId+"_FltName_"+key+"' onclick='RMapFilterNameClicked(&quot;"+key+"&quot;, this)'>"+text+"</span></span>";
}
function RMapCatFilterTemplate(key, text, ok)
{
	return "<span style='cursor:pointer'><input id='"+window.mapCfg.clientId+"_CatFltChk_"+key+"' type='checkbox' " + (ok==true ? "checked='true'" : "") + " onclick='RMapFilterChkClicked(&quot;"+key+"&quot;, this);'/>&nbsp;<span id='"+window.mapCfg.clientId+"_CatFltName_"+key+"' onclick='RMapFilterNameClicked(&quot;"+key+"&quot;, this)'>"+text+"</span></span>";
}
function RMapSortTemplate(key, text, ok)
{
	return "<span style='cursor:pointer'><input id='"+window.mapCfg.clientId+"_SrtChk_"+key+"' type='radio' name='"+window.mapCfg.clientId+"_SrtGroup' " + (ok==true ? "checked='true'" : "") + " onclick='RMapSortChkClicked(&quot;"+key+"&quot;, this);'/>&nbsp;<span id='"+window.mapCfg.clientId+"_SrtName_"+key+"' onclick='RMapSortNameClicked(&quot;"+key+"&quot;, this)'>"+text+"</span></span>";
}

function saveRMapState(map)
{
	if(window.setCookieValue==null || window.map==null || window.mapCfg==null || window.mapCfg.persist!=true)
		return;
	
	clearTimeout(window.RMapStateTimeout);
	window.RMapStateTimeout=setTimeout(saveRMapStateFunc,500);
}
function saveRMapStateFunc()
{
	var map=window.map;
	var c=map.getCenter();
	var z=map.getZoomLevel();
	var lys="";
	for(var l in map.layers)
	{
		if(map.layers[l].isHidden()==false)
			lys+= (lys>"" ? "," : "") + l;
	}
	var flt=RMapGetFilter();
	var srt=RMapGetSort();
	if(srt==null)
		srt="";
	var str="valid:true|x:"+c.x + "|y:"+c.y + "|z:"+z + "|lys:"+lys + "|srt:"+srt + "|flt:"+flt;
	setCookieValue("PrometRMap",str);
}
function loadRMapState()
{
	if(window.getCookieValue==null)
		return;
		
	var valid="false";
	var x=null;
	var y=null;
	var z=null;
	var lys="";
	var srt="";
	var flt="";
	var str=getCookieValue ? getCookieValue("PrometRMap") : "";
	var s=str.split("|");
	for(var f=0;f<s.length;f++)
	{
		var ss=s[f].split(":");
		if(ss.length==2)
		{
			if(ss[0]=="valid")
				valid=ss[1];
			if(ss[0]=="x")
				x=parseFloat(ss[1]);
			if(ss[0]=="y")
				y=parseFloat(ss[1]);
			if(ss[0]=="z")
				z=parseFloat(ss[1]);
			if(ss[0]=="lys")
				lys=ss[1];
			if(ss[0]=="srt")
				srt=ss[1];
			if(ss[0]=="flt")
				flt=ss[1].split(",");						
		}
	}
	return {valid:valid, x:x, y:y, z:z, lys:lys, srt:srt, flt:flt};
}
    
// Tujina
function RMapTujinaInit(key, map)
{
	var styler = new RMap.CustomStyler(Delegate.create(this, function(feature)
	{
		var ps = new RMap.MarkerStyle();
		ps.iconSrc=appSettings.iconsRepository+"countries/"+feature.getId()+".gif";
		ps.iconSize={width:26,height:17};
		ps.anchor={left:13,top:9};
		return ps;
	})); 
  var layer=map.addDrawingLayer(key);
  layer.setStyler(styler);
  var arr=[];
  arr[0]={id:"a", x:510000, y:183000};
  arr[1]={id:"i", x:360000, y:100000};
  arr[2]={id:"h", x:630000, y:180000};
  arr[3]={id:"hr", x:570000, y:50000};
  for(var f=0;f<arr.length;f++)
  {
		var cnt="";
		var lnk=appSettings["tujinaLink_"+arr[f].id][0];
		var ftr=new RMap.Feature(arr[f].id, new RMap.Geometry(RMap.GeometryType.Point,[arr[f].x, arr[f].y]), {title:GetDictValue("tujina_"+arr[f].id, mapCfg.lng), link:lnk});                                 
		layer.getFeatureView().getStorage().add(ftr);
  }
}

var kategorijaSortOrder = { A:"1", H:"2", G:"3", R:"4", L:"5" };
var kategorijaSort = Delegate.create(this, function(feature1, feature2)
{
	var fp = feature1.properties["kategorija"];
	var sp = feature2.properties["kategorija"];

	if ((fp == sp))
		return 0;

	var fp2 = kategorijaSortOrder[("" + fp).substring(0, 1)];
	var sp2 = kategorijaSortOrder[("" + sp).substring(0, 1)];

	fp2 = (fp2 > '' ? fp2 + "_" : "9_") + fp;
	sp2 = (sp2 > '' ? sp2 + "_" : "9_") + sp;

	return fp2 > sp2 ? -1 : 1;
});

// Dogodki
function RMapEventsInit(key, map)
{
  var evtIContent=function(feature)
  {      
    var cnt="<span>";
    if(window.mapCfg.lng=="EN")
        cnt+=feature.properties["opisEn"];
    else
        cnt+=feature.properties["opis"];
    cnt+=" "+GetDictValue("listTime", window.mapCfg.lng)+": " + feature.properties['updated'].format(GetDictValue("dateFormat", window.mapCfg.lng)) + "</span>";
    return cnt;
  }
  var evtPContent=function(feature)
  {    
		var cnt=[]; 
		var vis=isMapVisible();
		cnt.push("<table class='PrometPanelItem' title='"+(vis ? GetDictValue("showonmap", window.mapCfg.lng) : "")+"' border='0' cellspacing='0' style='cursor:"+(vis ? "pointer" : "default") + "; width:100%; border:"+appSettings.tblBrdColor+" 1px solid; border-top:0px'><tr>");
		var vzrok=lngDict.SI.vzrokDict[feature.properties['vzrok']];
		var prior = parseInt(feature.properties['prioriteta']);
		var icon = appSettings.iconsRepository+"Traffic/nzap"+vzrok+(prior==1 ? "" : (prior<9 ? "m" : "s"))+".gif";
		var cas = feature.properties['updated'].format(GetDictValue("dateFormat", window.mapCfg.lng));
		
		cnt.push("<td style='width:50px; text-align:center; vertical-align:middle'><img src='"+icon+"'/></td>");
		var kat = feature.properties['kategorija'];
		if(kat==null)
			kat=" &nbsp; ";
		cnt.push("<td style='width:80px; text-align:center; vertical-align:middle'>"+kat+"</td>");
		var str="";
    if(window.mapCfg.lng=="EN")
        str=feature.properties["opisEn"];
    else
        str=feature.properties["opis"];
    if(str=="")
			str=" &nbsp; ";
    cnt.push("<td>"+str+"</td>");
 		cnt.push("<td style='width:80px; text-align:left; vertical-align:top'>"+cas.replace(" ","<br/>")+"</td>");
    cnt.push("</tr></table>");
    return cnt.join("");
  }  
  var evtStyler = function(feature)
  {
		var ps = new RMap.MarkerStyle();
		try
		{          
			var icon;
			var vzrok=lngDict.SI.vzrokDict[feature.properties['vzrok']];	
			var prior = parseInt(feature.properties['prioriteta']);
			ps.iconSrc = appSettings.iconsRepository+"dogodki/nzap"+vzrok;
			if(prior==1)
			{
					ps.iconSize={width:25,height:25};
					ps.anchor={left:13,top:13};
			}
			else if(prior<9)
			{
					ps.iconSrc+="m";
					ps.iconSize={width:20,height:20};
					ps.anchor={left:10,top:10};
			}      
			else if(prior>=9)
			{
					ps.iconSrc+="s";
					ps.iconSize={width:15,height:15};
					ps.anchor={left:8,top:8};
			}    
			ps.iconSrc+=".gif";         
		}
		catch(ex)
		{}
		return ps;
  }
	var url=appSettings.eventsUrl;                
	var evtLoader = new RMap.FeatureReader(url, 'get', new RMap.JsonDeserializer({item:'dogodki.dogodek',id:'id',x:'x',y:'y'}), null, null, null, null);
	
  var props=
  [
      new RMap.Property('prioriteta', Number, RMap.PropertyInfo.Sortable, null, null, "Pomembnost"),
      new RMap.Property('updated', Date, RMap.PropertyInfo.Sortable, null, null, "Zadnja sprememba"),
      new RMap.Property('kategorija', String, RMap.PropertyInfo.Sortable, null, null, "Kategorija")
  ]
	var evtSchema = new RMap.FeatureSchema(props, RMap.CoordinateSystem.getCoordinateSystem('EPSG:2170'));
	evtSchema.setInfoWindowContentTemplate(Delegate.create(this, evtIContent));
	evtSchema.setPanelItemContentTemplate(Delegate.create(this, evtPContent));
	var evtStorage = new RMap.RemoteFeatureStorage(evtSchema, evtLoader, 61000, true);
	var eventView = new RMap.FeatureView(evtStorage);
	eventView.setFilter(Delegate.create(this, RMapEvtFilterFunc));
	RMapApplySortToView(eventView);
	var evtStyler=new RMap.CustomStyler(Delegate.create(this,evtStyler))
	var evtLayer = new RMap.DrawingLayer(key, eventView, evtStyler);
	map.addLayer(evtLayer);  
	
	evtLayer.evtStyler=evtStyler; // to zato, da je na voljo tudi za RMapEventsMejeInit().
  window.lysMgr[key]=evtLayer;
	return evtLayer;
}

// Dogodki na državnih cestah
function RMapEventsCesteInit(key, map)
{
	var evtLayer=null;
	if(window.lysMgr["events"]==null)
	{
		evtLayer=RMapEventsInit("events", map);
		evtLayer.hide();
	}
	if(map.layers["events"]==null)
		return false;		
	
	var cesteView = new RMap.FeatureView(map.layers["events"].getFeatureView().getStorage());
	cesteView.setFilter(Delegate.create(this, RMapCesteFilterFunc));
	RMapApplySortToView(cesteView);
	var cesteLayer = new RMap.DrawingLayer(key, cesteView, map.layers["events"].evtStyler);
	map.addLayer(cesteLayer);
	window.lysMgr[key]=cesteLayer;
	return cesteLayer;
}

// Dogodki na mejnih prehodih
function RMapEventsMejeInit(key, map)
{
	var evtLayer=null;
	if(window.lysMgr["events"]==null)
	{
		evtLayer=RMapEventsInit("events", map);
		evtLayer.hide();
	}
	if(map.layers["events"]==null)
		return false;		
	
	var mejeView = new RMap.FeatureView(map.layers["events"].getFeatureView().getStorage());
	mejeView.setFilter(Delegate.create(this, RMapMejeFilterFunc));
	var mejeLayer = new RMap.DrawingLayer(key, mejeView, map.layers["events"].evtStyler);
	map.addLayer(mejeLayer);
	window.lysMgr[key]=mejeLayer;
	return mejeLayer;
}

  
// Kamere
function RMapCamerasInit(key, map)
{
	var camStyler = new RMap.CustomStyler(Delegate.create(this, function(feature)
	{
		var ps = new RMap.MarkerStyle();
		ps.iconSrc=appSettings.iconsRepository+"Traffic/acam.gif";
		ps.iconSize={width:18,height:16};
		ps.anchor={left:9,top:8};
		return ps;
	})); 

	var url=appSettings.camerasUrl+"small_"+(mapCfg.lng=="EN" ? "en" : "si");
	var camLoader = new RMap.FeatureReader(url, 'get', new RMap.GeoRssDeserializer());
	var camSchema = new RMap.FeatureSchema([], RMap.CoordinateSystem.getCoordinateSystem('EPSG:2170'), null, null, null, null);
	var camStorage = new RMap.RemoteFeatureStorage(camSchema, camLoader, 0, true);    
	var camLayer = new RMap.DrawingLayer(key, camStorage.getDefaultView(), camStyler);
	map.addLayer(camLayer);
	window.lysMgr[key]=camLayer;
	return camLayer;
}

// Vreme
function RMapWeatherInit(key, map)
{
  var weaIContent=function(feature)
  {      
    var cnt=feature.properties.domain_longTitle + "<br/>";
    if(feature.properties.nn_shortText>'')
			cnt += feature.properties.nn_shortText + ", ";
    cnt += feature.properties.t + " " + feature.properties.td_var_unit;
    if(feature.properties.wwsyn_shortText>'')
			cnt += "<br/>" + feature.properties.wwsyn_shortText;
    return cnt;
  }

	var weaStyler = new RMap.CustomStyler(Delegate.create(this, function(feature)
	{
		var ps = new RMap.MarkerStyle();
		if(feature.properties['nn_icon-wwsyn_icon']>'')
			ps.iconSrc=appSettings.weatherIconsUrl + feature.properties['nn_icon-wwsyn_icon'] + ".png";
		else
//			ps.iconSrc=appSettings.iconsRepository + "Weather/nipodatka.png";
			ps.iconSrc=appSettings.iconsRepository + "blank.gif";
		return ps;
	})); 

	var url=appSettings.weatherXmlUrl + (mapCfg.lng=="EN" ? "_en" : "_si");
	var weaLoader = new RMap.FeatureReader(url, 'get', new RMap.JsonDeserializer({item:'data.metData', x:'domain_lon', y:'domain_lat'}), null, null, "json", null);
	var weaSchema = new RMap.FeatureSchema([], RMap.CoordinateSystem.getCoordinateSystem('EPSG:4326'));
	weaSchema.setInfoWindowContentTemplate(Delegate.create(this, weaIContent));
	var weaStorage = new RMap.RemoteFeatureStorage(weaSchema, weaLoader, 61000*3, true);    
	var weaLayer = new RMap.DrawingLayer(key, weaStorage.getDefaultView(), weaStyler);
	map.addLayer(weaLayer);  
	window.lysMgr[key]=weaLayer;
	return weaLayer;
}

// Števci
function RMapCountersInit(key, map)
{
  var iContent=function(feature)
  {
		var str=[];
		str.push("<b>" + feature.properties["stevci_cestaOpis"] + ", "+GetDictValue('stvLoc', mapCfg.lng).toLowerCase()+" " + feature.properties["stevci_lokacijaOpis"]+"</b><br/><br/>");
		var ss=[[],[],[],[],[],[],[]];
		var ftrs=storage.getFeatures();
		for(var f=0;f<ftrs.length;f++)
		{
			var prps=ftrs[f].properties;
			if(prps["stevci_lokacija"]==feature.properties["stevci_lokacija"])
			{
				var stat=parseInt(prps["stevci_stat"])+1;
				if(stat<2)
					stat=0;
				if(stat>6)
					stat=1;
				var s=[];
				s.push("<img src='"+appSettings.iconsRepository+"stevci/stevec_"+prps["stevci_stat"]+".gif' style='float:left; margin-right:10px'/>");
				s.push(GetDictValue("stvDir", mapCfg.lng).toLowerCase()+" "+prps["stevci_smerOpis"]+ " " + (prps["stevci_pasOpis"]>'' ? prps["stevci_pasOpis"] : "") + ": " +prps["stevci_statOpis"]);
				s.push("<br/>"+GetDictValue("stvSpd", mapCfg.lng).toLowerCase()+":&nbsp;"+prps["stevci_hit"]+"&nbsp;km/h,&nbsp; "+GetDictValue("stvNum", mapCfg.lng).toLowerCase()+":&nbsp;"+prps["stevci_stev"]+"/h,&nbsp; "+GetDictValue("stvRazmik", mapCfg.lng).toLowerCase()+":&nbsp;"+prps["stevci_gap"]+"&nbsp;s<br style='clear:all'/><br/>");
				ss[stat][ss[stat].length]=s.join("");
			}
		}
		for(var f=ss.length-1;f>=0;f--)
		{
			for(var ff=0;ff<ss[f].length;ff++)
				str.push(ss[f][ff]);
		}
		str=str.join("");
		return str.substring(0,str.length-5);
  }

	var styler = new RMap.CustomStyler(Delegate.create(this, function(feature)
	{
    var ps = new RMap.MarkerStyle();
    ps.iconSrc=appSettings.iconsRepository+"stevci/stevec_"+feature.properties["stevci_stat"]+".gif";
    ps.iconSize={width:21,height:21};
		ps.anchor={left:10,top:10};
    return ps;
	}));
	
  var comparer = Delegate.create(this, function(feature1, feature2) 
  {
		var fp = feature1.properties["stevci_stat"];
		if(fp==6)
			fp=0.5;
		var sp = feature2.properties["stevci_stat"];
		if(sp==6)
			sp=0.5;

		if (!fp)
			return 1;
		else if (!sp)
			return -1;
		if (fp > sp)
			return 1;
		else if (fp < sp)
			return -1;
		else
			return 0;
  });
  
	var url=appSettings.stevciUri + (mapCfg.lng=="EN" ? "en" : "si")
  var loader = new RMap.FeatureReader(url, 'get', new RMap.JsonDeserializer({item:'feed.entry',id:'id',x:'stevci_geoX',y:'stevci_geoY'}), null, null, "json", null);
	var schema = new RMap.FeatureSchema([], RMap.CoordinateSystem.getCoordinateSystem('EPSG:2170'));
	schema.setInfoWindowContentTemplate(Delegate.create(this, iContent));
	var storage = new RMap.RemoteFeatureStorage(schema, loader, 61000*3, true); 
	storage.getDefaultView().setSort(comparer);   
	var layer = new RMap.DrawingLayer(key, storage.getDefaultView(), styler);
	map.addLayer(layer);  
	window.lysMgr[key]=layer;
	return layer;
}

// Burja
function RMapBurjaInit(key, map)
{
  var iContent=function(feature)
  {      
    var cnt=feature.properties["title"] + ": " + feature.properties["veter"] + " km/h";
    return cnt;
  }

	var styler = new RMap.CustomStyler(Delegate.create(this, function(feature)
	{
		var ps = new RMap.MarkerStyle();
		var v=feature.properties['veter'];
		if(v<5)
			ps.iconSrc=appSettings.iconsRepository + "burja/wind1.gif";
		else if(v<20)
			ps.iconSrc=appSettings.iconsRepository + "burja/wind2.gif";
		else if(v<50)
			ps.iconSrc=appSettings.iconsRepository + "burja/wind3.gif";
		else if(v<80)
			ps.iconSrc=appSettings.iconsRepository + "burja/wind4.gif";
		else
			ps.iconSrc=appSettings.iconsRepository + "burja/wind5.gif";
		ps.iconSize={width:25,height:30};
		ps.anchor={left:4,top:30};
		ps.infoWindowAnchor={left:3,top:5};
		return ps;
	}));  

	var url=appSettings.burjaUrl;
  var loader = new RMap.FeatureReader(url, 'get', new RMap.JsonDeserializer({item:'feed.entry', x:'LONGITUDE', y:'LATITUDE'}), null, null, "json", null);
	var schema = new RMap.FeatureSchema([], RMap.CoordinateSystem.getCoordinateSystem('EPSG:4326'));
	schema.setInfoWindowContentTemplate(Delegate.create(this, iContent));
	var storage = new RMap.RemoteFeatureStorage(schema, loader, 61000*3, true);    
	var layer = new RMap.DrawingLayer(key, storage.getDefaultView(), styler);
	map.addLayer(layer);  
	window.lysMgr[key]=layer;
	return layer;
}

function RMapLayerChkClicked(key, chkCtrl)
{
	var map=RMapGetMap(chkCtrl);
	if(map==null)
		return;
	RMapLayerClicked(key, chkCtrl.checked, map, chkCtrl);
}
function RMapLayerNameClicked(key, namCtrl)
{
	var map=RMapGetMap(namCtrl);
	if(map==null)
		return;
		
	var chkCtrl=document.getElementById(namCtrl.id.replace("LysName","LysChk"));
	if(map.layers[key]!=null && chkCtrl.checked==true)
		map.layers[key].setOrder(RMap.OrderPosition.Front);
	else
		RMapLayerClicked(key, !chkCtrl.checked, map, chkCtrl);
}
function RMapLayerClicked(key, checked, map, chkCtrl)
{	
	if(window.lysMgr[key]==null)
	{
		var layer=null;
		if(key=="events")
			layer=RMapEventsInit(key, map);
		else if(key=="cameras")
			layer=RMapCamerasInit(key, map);
		else if(key=="weather")
			layer=RMapWeatherInit(key, map);
		else if(key=="counters")
			layer=RMapCountersInit(key, map);
		else if(key=="burja")
			layer=RMapBurjaInit(key, map);			
		else
			return;
	}
	if(map.layers[key]==null)
		return;
	if(checked==true)
	{
		map.layers[key].show();
		map.layers[key].setOrder(RMap.OrderPosition.Front);
		chkCtrl.checked=true;
	}
	else
	{
		map.layers[key].hide();
		chkCtrl.checked=false;
	}
	saveRMapState(map);
}


function RMapFilterChkClicked(key, chkCtrl)
{
	var map=RMapGetMap(chkCtrl);
	if(map==null)
		return;
	RMapFilterClicked(key, chkCtrl.checked, map, chkCtrl);
}
function RMapFilterNameClicked(key, namCtrl)
{
	var map=RMapGetMap(namCtrl);
	if(map==null)
		return;
		
	var chkCtrl=document.getElementById(namCtrl.id.replace("FltName","FltChk"));
	RMapFilterClicked(key, !chkCtrl.checked, map, chkCtrl);
}
function RMapFilterImgClicked(key, imgCtrl)
{
	var map=RMapGetMap(imgCtrl);
	if(map==null)
		return;
		
	var chkCtrl=document.getElementById(imgCtrl.id.replace("FltImg","FltChk"));
	RMapFilterClicked(key, !chkCtrl.checked, map, chkCtrl);
}

function RMapFilterClicked(key, checked, map, chkCtrl)
{
	chkCtrl.checked=checked;
	RMapFilterApply();
}
function RMapShowAll()
{
	for(var key in mapCfg.vzrokDict)
	{
		var id=window.mapCfg.clientId+"_FltChk_"+mapCfg.vzrokDict[key];
		document.getElementById(id).checked=true;
	}
	for(var key in mapCfg.catDict)
	{
		var id=window.mapCfg.clientId+"_CatFltChk_"+mapCfg.catDict[key];
		document.getElementById(id).checked=true;
	}
	window.fltMgr={};
	window.CatFltMgr=null;
	RMapFilterApply();
}
function RMapGetFilter()
{
	var str="";
	for(var key in window.fltMgr)
	{
		if(str!="")
			str+=",";
		str+=key;
	}
	if(window.CatFltMgr!=null)
	{
		for(var key in window.CatFltMgr)
		{
			if(str!="")
				str+=",";
			str+=key;
		}
	}
	return str;
}
function RMapFilterApply()
{
	window.fltMgr={};
	for(var key in mapCfg.vzrokDict)
	{
		if(document.getElementById(window.mapCfg.clientId+"_FltChk_"+mapCfg.vzrokDict[key].toString()).checked!=true)
			window.fltMgr[mapCfg.vzrokDict[key]]=true;
	}
	window.CatFltMgr = null;
	for(var key in mapCfg.catDict)
	{
		if(document.getElementById(window.mapCfg.clientId+"_CatFltChk_"+mapCfg.catDict[key].toString()).checked!=true)
		{
			if(window.CatFltMgr==null)
				window.CatFltMgr={};
			window.CatFltMgr[mapCfg.catDict[key]]=true;
		}
	}
		
	if(map.layers["events"]!=null)
		map.layers["events"].getFeatureView().setFilter(Delegate.create(this, RMapEvtFilterFunc));
	if(map.layers["roads"]!=null)
		map.layers["roads"].getFeatureView().setFilter(Delegate.create(this, RMapCesteFilterFunc));
	saveRMapState();
}
function RMapEvtFilterFunc(feature)
{
	var vzrok=lngDict.SI.vzrokDict[feature.properties['vzrok']];			
	if(vzrok!=null && window.fltMgr[vzrok]==true)
		return false;
	if(window.CatFltMgr!=null)
	{
		var c=feature.properties['kategorija'];
		c=(c!=null && c.length>0) ? c.substring(0,1) : " ";
		c=(c=="A" || c=="H") ? "AC": "DC";
		if(window.CatFltMgr[c]==true)
			return false;
	}
	return true;		
}
function RMapCesteFilterFunc(feature)
{
	var vzrok=lngDict.SI.vzrokDict[feature.properties['vzrok']];			
	if(vzrok!=null && window.fltMgr[vzrok]==true)
		return false;
	if(window.CatFltMgr!=null)
	{
		var c=feature.properties['kategorija'];
		c=(c!=null && c.length>0) ? c.substring(0,1) : " ";
		c=(c=="A" || c=="H") ? "AC": "DC";
		if(window.CatFltMgr[c]==true)
			return false;
	}		
	if(feature.properties['isMejniPrehod']==true)
		return false;		
	return true;		
}
function RMapMejeFilterFunc(feature)
{
	if(feature.properties['isMejniPrehod']==true)
		return true;
	return false;		
}

function RMapSortChkClicked(key, chkCtrl)
{
	var map=RMapGetMap(chkCtrl);
	if(map==null)
		return;
	RMapSortClicked(key, chkCtrl.checked, map, chkCtrl);
}
function RMapSortNameClicked(key, namCtrl)
{
	var map=RMapGetMap(namCtrl);
	if(map==null)
		return;
		
	var chkCtrl=document.getElementById(namCtrl.id.replace("SrtName","SrtChk"));
	RMapSortClicked(key, !chkCtrl.checked, map, chkCtrl);
}
function RMapSortClicked(key, checked, map, chkCtrl)
{
	chkCtrl.checked=checked;
	RMapSortApply();
}
function RMapGetSort()
{
	var prop=null;
	for(var key in mapCfg.sortDict)
	{
		if(document.getElementById(window.mapCfg.clientId+"_SrtChk_"+mapCfg.sortDict[key].toString()).checked==true)
		{
			prop=mapCfg.sortDict[key];
			break;
		}
	}
	return prop;
}
function RMapSortApply()
{
	if(map.layers["events"]!=null)
		RMapApplySortToView(map.layers["events"].getFeatureView());
	if(map.layers["roads"]!=null)
		RMapApplySortToView(map.layers["roads"].getFeatureView());
	saveRMapState();
}
function RMapApplySortToView(view)
{
		
	var prop=RMapGetSort();
	if(prop==null)
	{
		view.setSort(null);
	}
	else
	{
		var dsc=true;
		if(prop=="updated")
			dsc=false;
		if (prop == "kategorija")
			view.setSort(kategorijaSort);
		else
			view.setSortByProperty(prop, dsc);
	}
}

function RMapConnectPanel(panel, cfg)
{
	var key=cfg.layer;
	var layer=null;
	if(window.lysMgr[key]==null)
	{
		if(key=="roads")
			layer=RMapEventsCesteInit(key, map);
		else if(key=="cameras")
			layer=RMapCamerasInit(key, map);
		else if(key=="weather")
			layer=RMapWeatherInit(key, map);
		else if(key=="borders")
			layer=RMapEventsMejeInit(key, map);
		else
			return;
		layer.hide();
	}
	if(map.layers[key]==null)
		return false;	
	var pnl=new RMap.LayerPanel(map.layers[key], "Dogodki", {noheader:true, autoformat:false, reverse:true})
	map.layers[key].add_collectionChangedEvent(Delegate.create(this, RPanelChanged(cfg.emptyElm, cfg.hdrElm, cfg.ldgElm, document.getElementById(cfg.pnlCnt))));
	panel.add(pnl);
}

function RMapGetMap(ctrl)
{
	return window.map;
}




function RPanelInit(cfg)
{
	if(window.RMap==null)
		return;
	
	var config={};
	if(cfg.h=="none")
		config.sizelimit="none";
	if(cfg.layer=="roads" || cfg.layer=="borders")
	{
		var tit="";
		var emptyText="";
		if(cfg.layer=="roads")
		{
			tit="<H2 class='moduletitle RMapControl'>"+GetDictValue("pnlTitRoads", cfg.lng)+"</H2><br/>";
		}
		else if(cfg.layer=="borders")
		{
			tit="<H2 class='moduletitle RMapControl'>"+GetDictValue("pnlTitBorders", cfg.lng)+"</H2><br/>";
		}
		var div0=document.createElement("div");
		div0.innerHTML=tit;
		document.getElementById(cfg.pnlCnt).parentNode.insertBefore(div0,document.getElementById(cfg.pnlCnt));
		
		var hdr="<table border='0' cellspacing='0' style='width:100%; border:"+appSettings.tblBrdColor+" 1px solid; background:"+appSettings.tblHdrColor+"'><tr>";
		hdr+="<td style='width:50px; text-align:center; vertical-align:middle'> &nbsp; </td>";
		hdr+="<td style='width:80px; text-align:center; vertical-align:middle'><b>"+GetDictValue("listCat", cfg.lng)+"</b></td>";
		hdr+="<td style='text-align:center; vertical-align:middle'><b>"+GetDictValue("listDescr", cfg.lng)+"</b></td>";
		hdr+="<td style='width:80px; text-align:left; vertical-align:middle'><b>"+GetDictValue("listTime", cfg.lng)+"</b></ td>";
		hdr+="</tr></table>";
		var div1=document.createElement("div");
		div1.style.display="none";
		div1.innerHTML=hdr;
		document.getElementById(cfg.pnlCnt).parentNode.insertBefore(div1,document.getElementById(cfg.pnlCnt));
		
		var div3=document.createElement("div");
		div3.style.textAlign="center";
		div3.innerHTML="<img src='"+appSettings.iconsRepository+appSettings.loadingImg+"'/>";
		document.getElementById(cfg.pnlCnt).parentNode.insertBefore(div3,document.getElementById(cfg.pnlCnt));

		cfg.emptyText=GetDictValue("emptyList", cfg.lng)[cfg.layer];
		var div2=document.createElement("div");
		div2.innerHTML=cfg.emptyText;
		div2.style.display="none";
		document.getElementById(cfg.pnlCnt).parentNode.insertBefore(div2,document.getElementById(cfg.pnlCnt));
		cfg.hdrElm=div1;
		cfg.emptyElm=div2;
		cfg.ldgElm=div3;
	}

	document.getElementById(cfg.pnlCnt).style.visibility="hidden";
	var panel = new RMap.PanelContainer(document.getElementById(cfg.pnlCnt), config);
	var func = RPanelCreateInit(panel, cfg);
	
	if(window.map!=null)
	{
		func();
	}
	else
	{
		pnlCallbacks[pnlCallbacks.lengt]=func;
	}
}

function RPanelCreateInit(panel, cfg)
{
	return function(){RMapConnectPanel(panel, cfg); panel=null; cfg=null};
}

function RPanelChanged(msgElm, hdrElm, ldgElm, pnlElm)
{
	return function(sender, action)
	{
		var hasItems=false;
		for(var f in sender.drawings)
		{
			hasItems=true;
			break;
		}
		ldgElm.style.display="none";
		pnlElm.style.visibility="visible";
		if(hasItems==true)
		{
			hdrElm.style.display="";
			msgElm.style.display="none";
		}
		else
		{
			hdrElm.style.display="none";
			msgElm.style.display="";
		}
	}
}

