var HSLayers=function(map){this.map=null;this.baseLayer=null;this.workLayer=null;this.markersLayer=null;this.setMap=function(map){this.map=map;};this.getMap=function(){return this.map;};this.createHsVectorLayer=function(name,options){name=(!name?"HsTempMap":name);if(!this.map){throw new Error("HSLayers.createHsVectorLayer: 'map' property was not initialized. Run this.setMap(OpenLayers.Map) first.");}
if(!options){options={isBaseLayer:false,displayInLayerSwitcher:false,visible:false};}
var layer=new OpenLayers.Layer.Vector(name,options);this.map.addLayer(layer);return layer;};this.createHSBaseLayer=function(){var baseLayer=new OpenLayers.Layer.Image("HSBaseLayer","/wwwlibs/hslayers/img/baseLayer.gif",this.map.maxExtent,new OpenLayers.Size(1,1),{isBaseLayer:true,format:"image/gif",visibility:true,displayInLayerSwitcher:false});this.map.addLayer(baseLayer);this.map.events.register("changelayer",this,this._onBaseLayerChanged);this.baseLayer=baseLayer;return baseLayer;};this._onBaseLayerChanged=function(evt){if(evt.layer.isBaseLayer&&evt.layer!=this.baseLayer){if(!evt.layer.visibility){HSLayers.baseLayer=evt.layer;HSLayers.hsBaseLayer=this.baseLayer;window.setTimeout(function(){var map=HSLayers.baseLayer.map;if(map.baseLayer==HSLayers.baseLayer){map.setBaseLayer(HSLayers.hsBaseLayer);}},200);}}};this.createHsMarkersLayer=function(name,options){name=(!name?"HsTempMap":name);if(!this.map){throw new Error("HSLayers.createHsMarkersLayer: 'map' property was not initialized. Run this.setMap(OpenLayers.Map) first.");}
if(!options){options={isBaseLayer:false,displayInLayerSwitcher:false,visibility:true};}
var layer=new OpenLayers.Layer.Markers(name,options);this.map.addLayer(layer);this.markersLayer=layer;this.map.events.register("addlayer",this,this._onMarkersLayerChanged);return layer;};this._onMarkersLayerChanged=function(evt){var nlayers=this.map.layers.length;this.map.setLayerIndex(this.markersLayer,this.map.getLayerIndex(this.map.layers[nlayers-1])+1);};this.getHsVectorLayer=function(){if(!this.workLayer){this.workLayer=this.createHsVectorLayer();}
return this.workLayer;}
this.getHsMarkersLayer=function(){if(!this.markersLayer){this.markersLayer=this.createHsMarkersLayer();}
return this.markersLayer;}
this.addButton=function(options){if(!options.buttonType&&(options.buttonType!=OpenLayers.Control.TYPE_TOGGLE||options.buttonType!=OpenLayers.Control.TYPE_BUTTON)){options.buttonType=OpenLayers.Control.TYPE_TOOL;}
if(!options.layer){if(options.type in{"point":1,"line":1,"polygon":1}){options.layer=this.getHsVectorLayer();}}
if(!options.type){throw new Error("HSLayers.addButton: input parameters do not contain 'type' key.");}
var featureOptions={};if(options.handlerOptions){featureOptions.handlerOptions=options.handlerOptions;}
if(options.displayClass){featureOptions.displayClass=options.displayClass;}
var handler;var control;switch(options.type){case"point":control=new OpenLayers.Control.DrawFeature(options.layer,OpenLayers.Handler.Point,featureOptions);break;case"line":control=new OpenLayers.Control.DrawFeature(options.layer,OpenLayers.Handler.Path,featureOptions);break;case"polygon":control=new OpenLayers.Control.DrawFeature(options.layer,OpenLayers.Handler.Polygon,featureOptions);break;case"box":control=new OpenLayers.Control(featureOptions);OpenLayers.Util.extend(control,{draw:function(){this.handler=new OpenLayers.Handler.Box(control,{"done":options.onDrawingDone});}});break;case"click":control=new OpenLayers.Control.Click({trigger:options.onDrawingDone});break;case"marker":control=new OpenLayers.Control(featureOptions);OpenLayers.Util.extend(control,{draw:function(){this.handler=new OpenLayers.Handler.Marker(control,{"done":options.onDrawingDone});}});break;default:control=new OpenLayers.Control();OpenLayers.Util.extend(control,{"type":OpenLayers.Control.TYPE_TOGGLE,"activate":options.onActivate,"displayClass":options.displayClass});}
if(options.onDrawingDone){control.featureAdded=options.onDrawingDone;}
if(options.panel instanceof OpenLayers.Control.Panel){options.panel.addControls([control]);}
if(options.description){this.addHelp(options.description,control.panel_div,control);}
if(options.onKeyPressed){control.handler.keyboardHandler=new OpenLayers.Handler.Keyboard(control.handler,{keypress:options.onKeyPressed});control.activate=function(){if(this.active){return false;}
if(this.handler){this.handler.activate();}
this.active=true;control.handler.keyboardHandler.activate();return true;};control.deactivate=function(){control.handler.keyboardHandler.deactivate();if(this.active){if(this.handler){this.handler.deactivate();}
this.active=false;return true;}
return false;};}
if(options.scope){for(var scope in options.scope){control[scope]=options.scope[scope];}}
return control;};this.addHelp=function(help,target){var helpDiv=OpenLayers.Util.createDiv();helpDiv.innerHTML=help;helpDiv.className="hsHelpDiv";helpDiv.style.position="absolute";helpDiv.style.zIndex="1010";target.hsHelpDiv=helpDiv;var onMouseOver=function(e){document.getElementsByTagName("body")[0].appendChild(this.hsHelpDiv);this.hsHelpDiv.style.top=(e.clientY+10)+"px";this.hsHelpDiv.style.left=(e.clientX+10)+"px";};var onMouseOut=function(e){try{document.getElementsByTagName("body")[0].removeChild(this.hsHelpDiv);}
catch(e){;}};OpenLayers.Event.observe(target,"mouseover",OpenLayers.Function.bindAsEventListener(onMouseOver,target));OpenLayers.Event.observe(target,"mouseout",OpenLayers.Function.bindAsEventListener(onMouseOut,target));};this.addSpace=function(panel){var options={'panel':panel,'displayClass':"hsControlSpace",'type':"button",'onActivate':function(){return;}};return this.addButton(options);};this.addSeparator=function(panel){var options={'panel':panel,'displayClass':"hsControlSeparator",'type':"button",'onActivate':function(){return;}};return this.addButton(options);};this.appendLogo=function(text){var div=document.createElement("div");var a=document.createElement("a");a.href="http://www.bnhelp.cz";var logo=document.createElement("img");logo.width="16";logo.height="16";logo.src="http://www.bnhelp.cz/img/hsrs.png";div.style.position="absolute";div.style.left="0.5em";div.style.bottom="0.5em";div.style.zIndex="10000";div.className="hsCopyright";a.appendChild(logo);if(text&&text["before"]){div.appendChild(document.createTextNode(text["before"]));}
div.appendChild(a)
if(text&&text["after"]){div.appendChild(document.createTextNode(text["after"]));}
this.map.viewPortDiv.appendChild(div);};this.addMarker=function(ll,icon,layer,actions){this.markersLayer=(this.markersLayer?this.markersLayer:new OpenLayers.Layer.Markers("Markers",{displayInLayerSwitcher:false}));layer=(layer?layer:this.markersLayer);icon=(icon?icon:OpenLayers.OpenLayers.Marker.defaultIcon());var feature=new OpenLayers.Feature(layer,ll);feature.actions={};feature.destroyPopup=function(){for(var a in this.actions){this.actions[a].popup.feature=null;this.actions[a].popup.destroy();this.actions[a].popup=null;}
this.popup=null;};feature.data.icon=icon;var marker=feature.createMarker();for(var i=0;i<actions.length;i++){feature.actions[actions[i].type]=actions[i];feature.actions[actions[i].type].popup=null;var action=function(evt){var act=this.actions[evt.type];if(act){if(act.popup==null){this.popup=null;this.popupClass=act.popupClass;if(typeof(act.content)==typeof(function(){})){this.data.popupContentHTML=act.content(this);}
else{if(act.content.search("http://")==0){this.data.popupContentHTML=HS.i18n("Connecting to")+" "+act.content;var setContent=function(response){this.popup.setContentHTML(response.responseText);};OpenLayers.loadURL(act.content,null,this,setContent);}
else{this.data.popupContentHTML=act.content;}}
act.popup=this.createPopup(act.closeBox);this.layer.map.addPopup(act.popup);act.popup.show();if(act.onchange){act.onchange(feature,act);}}
else{act.popup.show();}}
OpenLayers.Event.stop(evt);};marker.events.register(actions[i].type,feature,action);if(actions[i].type=="mouseover"){marker.events.register("mouseout",feature,function(){var act=this.actions["mouseover"];this.popup=act.popup;this.layer.map.removePopup(this.popup);this.popup.feature=null;this.popup.destroy();this.popup=null;act.popup=null;});}}
layer.addMarker(marker);};this.initialize=function(map){OpenLayers.ImgPath="/wwwlibs/hslayers-"+HSLayers.version+"/img/";this.setMap(map);try{this.cookies=new Ext.state.CookieProvider();Ext.state.Manager.setProvider(this.cookies);}catch(e){}};this.CLASS_NAME="HSLayers";try{this.initialize(arguments[0]);}catch(e){}};HSLayers.getProjectionOptions=function(projection,min,max){var options={}
switch(projection.toLowerCase()){case"epsg:102067":options={maxExtent:new OpenLayers.Bounds(-905000,-1230000,-400000,-900000),resolutions:[],maxResolution:"auto",units:"m",projection:"epsg:102067"};var scales=[20000000,10000000,5000000,2000000,1000000,500000,200000,100000,50000,20000,10000,5000,2000,1000,500];var resolutions=[7055.551745557614,3527.775872778807,1763.8879363894034,705.5551745557614,352.7775872778807,176.38879363894034,70.55551745557612,35.27775872778806,17.63887936389403,7.055551745557612,3.527775872778806,1.763887936389403,0.7055551745557613,0.35277758727788,0.17638879363];if(!min){min=20000000;}
if(!max){max=500;}
for(var i=0;i<resolutions.length;i++){if(max<=scales[i]&&scales[i]<=min){options.resolutions.push(resolutions[i]);}}
break;}
return options;};HSLayers.getUrlForAjax=function(url){if(OpenLayers.ProxyHost){if(url.search(window.location.hostname)==-1){return OpenLayers.ProxyHost+escape(url);}}
return url;};HSLayers.mergeParamsWithUrl=function(url,params,preserveOld){var urlString=url;var paramsString="";var oldParams={};var oldp=url.split("?")[1];if(oldp&&oldp.length>0){if(oldp.search("&")==-1){var prm=oldp.split("=");oldParams[prm[0]]=prm[1];}
else{var prms=oldp.split("&");for(var i=0;i<prms.length;i++){var prm=prms[i].split("=");if(prm[0]&&prm[1]){oldParams[prm[0]]=prm[1];}}}}
urlString=url.split("?")[0];var mergedParams={};if(preserveOld){mergedParams=oldParams;}
for(var newKey in params){var found=false;for(var oldKey in oldParams){if(oldKey.toLowerCase()==newKey.toLowerCase()){mergedParams[oldKey]=params[newKey];found=true;break;}}
if(!found){mergedParams[newKey]=params[newKey];}}
for(var key in mergedParams){paramsString+=key+"="+mergedParams[key]+"&";}
urlString+='?'+paramsString;return urlString;};HSLayers.getParamsFromUrl=function(url){var params={};var urlParams=url.split("?")[1];if(urlParams.length>0){if(urlParams.search("&")==-1){var prm=oldp.split("=");params[prm[0].toLowerCase()]=prm[1];}
else{var prms=urlParams.split("&");for(var i=0;i<prms.length;i++){var prm=prms[i].split("=");params[prm[0].toLowerCase()]=prm[1];}}}
return params;};HSLayers.getCookie=function(c_name){if(document.cookie.length>0){c_start=document.cookie.indexOf(c_name+"=");if(c_start!=-1){c_start=c_start+c_name.length+1;c_end=document.cookie.indexOf(";",c_start);if(c_end==-1){c_end=document.cookie.length;}
return unescape(document.cookie.substring(c_start,c_end));}}
return"";};HSLayers.getUniqueId=function(pref){if(!pref){pref="HSLayers";}
if(!this.maxId){this.maxId=0;}
this.maxId+=1;var id=pref+"-"+this.maxId;while(1){if(!document.getElementById(id)){break;}
this.maxId+=1;id=pref+"-"+this.maxId;}
return id;};HSLayers.geoMicroformatParser=function(elem){var geoms=[];var elems=elem.getElementsByTagName("span");for(var i=0;i<elems.length;i++){if(elems[i].className!="geo"){continue;}
var lonlat=[];var innerElms=elems[i].getElementsByTagName("span");for(var j=0;j<innerElms.length;j++){lonlat.push(innerElms[j]);}
var innerElms=elems[i].getElementsByTagName("abbr");for(var j=0;j<innerElms.length;j++){lonlat.push(innerElms[j]);}
var lat=null;var lon=null;var title=null;for(var j=0;j<lonlat.length;j++){if(lonlat[j].className=="latitude"){lat=parseFloat(lonlat[j].firstChild.nodeValue);}
if(lonlat[j].className=="longitude"){lon=parseFloat(lonlat[j].firstChild.nodeValue);}
if(lonlat[j].className=="title"){title=lonlat[j].firstChild.nodeValue;}}
geoms.push({lon:lon,lat:lat,title:title,elem:elems[i]});}
return geoms;};HSLayers.Class=function(){for(var i=0;i<arguments.length;++i){if(typeof(arguments[i])=="object"){for(var key in arguments[i]){this[key]=arguments[i][key];}}}
var cls=function(){if(arguments.length){this.initialize.apply(this,arguments);}};if(typeof(arguments[0])=="function"){var parent=new arguments[0]();for(var key in parent){if(this[key]==undefined){this[key]=parent[key];}}}
cls.prototype=this;return cls;};HSLayers.Class.applyOptions=function(obj,options){for(var opt in options){obj[opt]=options[opt];}};HSLayers.version="1.0.2";