var HSLayers=function(map){this.map=null;this.baseLayer=null;this.workLayer=null;this.markersLayer=null;this.feedbackScript=null;this.imgPath="/wwwlibs/hslayers/"+HSLayers.version+"/img/";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,visibility:true,saveWMC:false};}
var layer=new OpenLayers.Layer.Vector(name,options);this.workLayer=layer;this.map.addLayer(this.workLayer);return this.workLayer;};this.createHSBaseLayer=function(){var size=new OpenLayers.Size(1,(this.map.maxExtent.right-this.map.maxExtent.left)/(this.map.maxExtent.top-this.map.maxExtent.bottom));var baseLayer=new OpenLayers.Layer.Image("HSBaseLayer",OpenLayers.Util.getImagesLocation()+"blank.gif",this.map.maxExtent,size,{isBaseLayer:true,resolutions:this.map.resolutions,format:"image/gif",visibility:true,saveWMC:false,displayInLayerSwitcher:false});this.map.addLayer(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,saveWMC:false};}
this.markersLayer=new OpenLayers.Layer.Markers(name,options);this.map.addLayer(this.markersLayer);this.map.events.unregister("addlayer",this,this._onLayerAdded);this.map.events.register("addlayer",this,this._onLayerAdded);this.markersLayer.hsLayers=this;return this.markersLayer;};this._onLayerAdded=function(evt){var nlayers=this.map.layers.length;if(this.markersLayer){this.map.setLayerIndex(this.markersLayer,this.map.getLayerIndex(this.map.layers[nlayers-1]));}
if(this.workLayer){this.map.setLayerIndex(this.markersLayer,this.map.getLayerIndex(this.map.layers[nlayers-2]));}};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.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();marker.feature=feature;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){if(act.scope){if(!act.scope._onchange&&act.scope._onchange!=act.onchange){act.scope._onchange=act.onchange;}
act.scope._onchange(feature,act);}
else{act.onchange(feature,act);}}}
else{act.popup.lonlat=feature.lonlat;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);return marker;};this.saveContext=function(){var wmcParser=new OpenLayers.Format.WMC();var xmlParser=new OpenLayers.Format.XML();var s=wmcParser.write(this.map);var r=new RegExp('<ol:transparent xmlns:ol="http://openlayers.org/context">-1</ol:transparent>','g');s=s.replace(r,'<ol:transparent xmlns:ol="http://openlayers.org/context">true</ol:transparent>');var xml=xmlParser.read(s);var layers=xml.getElementsByTagName('Layer');var maplayers=Array();for(var j=0;j<this.map.layers.length;j++){if(this.map.layers[j].CLASS_NAME.indexOf('WMS')>-1)maplayers.push(this.map.layers[j]);}
for(var i=layers.length-1;i>=0;i--){if(maplayers[i].options.saveWMC==false){layers[i].parentNode.removeChild(layers[i]);}}
var wmcForm=document.getElementById('hs_wmcForm');if(wmcForm){var inputField=wmcForm.data;}
else{if(!this.feedbackScript){this.feedbackScript=HSLayers.getScriptUrl("build/HSOpenLayers.js");this.feedbackScript+="source/scripts/feedback.php";}
wmcForm=document.createElement('form');document.body.appendChild(wmcForm);wmcForm.setAttribute('id','hs_wmcForm');wmcForm.setAttribute('method','post');wmcForm.setAttribute('action',this.feedbackScript);wmcForm.style.display='none';var inputField=document.createElement('input');inputField.setAttribute('name','data');wmcForm.appendChild(inputField);}
inputField.setAttribute('value',xmlParser.write(xml));wmcForm.submit();};this.readContext=function(r){if(r.responseText){var wmcParser=new OpenLayers.Format.WMC();var wmc=wmcParser.read(r.responseText,{});var layers=wmc.layers;for(var i=0;i<layers.length;i++){layers[i].removable=true;this.map.addLayer(layers[i]);}
this.map.zoomToExtent(wmc.bounds);}};this.initialize=function(){try{}catch(e){}
try{this.cookies=new Ext.state.CookieProvider();Ext.state.Manager.setProvider(this.cookies);}catch(e){}};this.CLASS_NAME="HSLayers";this.initialize();};HSLayers.version="1.1.0";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.getClassesFromBuild=true;HSLayers.loadClass=function(className){if(!HSLayers.classes[className]){throw new Error("HSLayers.loadClass: ["+className+"] does not exist and so it could not be loaded!");}
if(typeof(HSLayers.classes[className])!=typeof([])){HSLayers.classes[className]=[HSLayers.classes[className]];}
var urls=[];for(var i=0;i<HSLayers.classes[className].length;i++){var url="";if(HSLayers.classes[className][i].charAt(0)=="/"||HSLayers.classes[className][i].substr(0,7)=="http://"){url=HSLayers.classes[className][i];}
else{url=OpenLayers._getScriptLocation();url=url.replace(/\/HS$/,"");url=url.replace(/build$/,"source/addons/");if(HSLayers.getClassesFromBuild==true){url.replace("source/addons/","build/");}
url+=HSLayers.classes[className];}
urls.push(url);}
if(window.OpenLayers){var defaultMethod=OpenLayers.Request.DEFAULT_CONFIG.async;OpenLayers.Request.DEFAULT_CONFIG.async=false;}
if(!window[className]){for(var i=0;i<urls.length;i++){OpenLayers.loadURL(urls[i],null,this,function(resp){eval(resp.responseText);});}}
if(window.OpenLayers){OpenLayers.Request.DEFAULT_CONFIG.async=defaultMethod;}
if(eval(className)){return true;}
else{throw new Error("HSLayers.loadClass: ["+className+"] could not be loaded!");return false;}};HSLayers.msgCt=null;HSLayers.info=function(title,body,seconds){if(!seconds){seconds=3;}
try{var createBox=function(t,s){return['<div class="msg">','<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>','<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"><h3>',t,'</h3>',s,'</div></div></div>','<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>','</div>'].join('');};if(!msgCt){var msgCt=Ext.DomHelper.insertFirst(document.body,{id:'msg-div',style:{width:"200px"}},true);msgCt.alignTo(document,'t-t');}
var m=Ext.DomHelper.append(msgCt,{html:createBox(title,body)},true);m.slideIn('t').pause(seconds).ghost("t",{remove:true});}
catch(e){}};HSLayers.getScriptUrl=function(script){var scripts=document.getElementsByTagName("script");for(var i=0;i<scripts.length;i++){if(scripts[i].getAttribute("src").search(script)>-1){return scripts[i].getAttribute("src").replace(script,"");}}
return null;};HSLayers.classes={"HSLayers.MapViewer":"HSLayers/HSMapViewer.js","HSLayers.Printer":"HSLayers/HSPrinter.js","HSLayers.OWSManager":"HSLayers/HSOWSManager.js","HSLayers.SearchParser":"HSLayers/HSSearchParser.js","OpenLayers.Control.BoxLayerSwitcher":"Control/HSBoxLayerSwitcher.js","OpenLayers.Control.HSClick":"Control/HSClick.js","OpenLayers.Control.HSDrawControls":"Control/HSDrawControls.js","OpenLayers.Control.HSDrawPoint":"Control/HSDrawControls.js","OpenLayers.Control.HSDrawLine":"Control/HSDrawControls.js","OpenLayers.Control.HSDrawPolygon":"Control/HSDrawControls.js","OpenLayers.Control.HSDrawBox":"Control/HSDrawControls.js","OpenLayers.Control.HSLayerSwitcher":"Control/HSLayerSwitcher.js","OpenLayers.Control.HSLayerSwitcher.HSLayer":"Control/HSLayerSwitcher.js","OpenLayers.Control.HSQuery":"Control/HSQuery.js","OpenLayers.Control.HSArgParser":"Control/HSArgParser.js","OpenLayers.Layer.HSMapServer":"Layer/HSMapServer.js","OpenLayers.Layer.ChartLayer":"Layer/ChartLayer.js","Ext":["/wwwlibs/ext/2.2/adapter/ext/ext-base.js","/wwwlibs/ext/2.2/ext-all.js"]};
