
OpenLayers.GreaseOl.MainMapOL=OpenLayers.Class({},{LAYER_EDITING:"EditingLayer",idForm:null,idMappa:null,deltaTop:0,deltaLeft:0,forceRefreshMapStatus:false,xClickId:null,yClickId:null,geometryTypeClickId:null,visibile:true,attiva:true,forceFitToParent:true,olcontrolli:new Array(),olServiziOnOff:new Array(),idOlMap:null,mappaOl:null,unbindFunction:null,unbindCallBack:null,execFunctionDefault:null,xClickObject:null,yClickObject:null,geometryTypeClickObject:null,imgContainerObject:null,nomeMappa:"Mappa:",cursorStyle:null,urlDefImage:null,idToc:null,nuumeroServizi:0,serviziToRefresh:new Array(),prevCssStyle:null,lastControlKey:null,lastControlOption:null,initialize:function(idMapIn,idFormIn,urlDefImage){this.idForm=idFormIn;this.idMappa=idMapIn;this.xClickId="calcolaNavigazione_xClick_"+idMapIn;;this.yClickId="calcolaNavigazione_yClick_"+idMapIn;;this.geometryTypeClickId="calcolaNavigazione_geometryTypeClick_"+idMapIn;;this.idOlMap=this.idForm+":mapOl_"+this.idMappa;this.execFunctionDefault="calcolaNavigazione_"+idMapIn;this.xClickObject=document.getElementById(this.idForm+":"+this.xClickId);this.yClickObject=document.getElementById(this.idForm+":"+this.yClickId);this.geometryTypeClickObject=document.getElementById(this.idForm+":"+this.geometryTypeClickId);this.imgContainerObject=document.getElementById(this.idForm+":imgcat_srv_"+this.idMappa);this.nomeMappa="la mappa:"+idMapIn;this.cursorStyle="default";this.urlDefImage=urlDefImage;this.nuumeroServizi=((new String(document.getElementById(this.idForm+":elencoServiziId_"+idMapIn).value)).split('|')).length;},getForceFitToParent:function(){return this.forceFitToParent;},setForceFitToParent:function(forceFitToParent){this.forceFitToParent=forceFitToParent;},getOlcontrolli:function(){return this.olcontrolli;},setOlcontrolli:function(olcontrolli){this.olcontrolli=olcontrolli;},getForceRefreshMapStatus:function(){return this.forceRefreshMapStatus;},setForceRefreshMapStatus:function(forceRefreshMapStatus){this.forceRefreshMapStatus=forceRefreshMapStatus;},getVisibile:function(){return this.visibile;},setVisibile:function(visibile){this.visibile=visibile;},getAttiva:function(){return this.attiva;},setAttiva:function(attiva){this.attiva=attiva;},getMappaOl:function(){return this.mappaOl;},setMappaOl:function(mappaOl){this.mappaOl=mappaOl;},getIdToc:function(){return this.idToc;},setIdToc:function(idTocIn){this.idToc=idTocIn;},setUrlDefImage:function(urlDefImage){this.urlDefImage=urlDefImage;},getUrlDefImage:function(){return this.urlDefImage;},getNuumeroServizi:function(){return this.nuumeroServizi;},getGeometryTypeClickId:function(){return this.geometryTypeClickId;},getXClickId:function(){return this.xClickId;},getYClickId:function(){return this.yClickId;},getGeometryTypeClickObject:function(){return this.geometryTypeClickObject;},getXClickObject:function(){return this.xClickObject;},getYClickObject:function(){return this.yClickObject;},getDeltaTop:function(){return this.deltaTop;},getDeltaLeft:function(){return this.deltaLeft;},getIdForm:function(){return this.idForm;},getIdMappa:function(){return this.idMappa;},getExecFunctionDefault:function(){return this.execFunctionDefault;},getNomeMappa:function(){return this.nomeMappa;},getIdOlMap:function(){return this.idOlMap;},refreshMapAllServices:function(){var a=document.getElementById(this.idForm+":elencoServiziId_"+this.idMappa).value;var elenco=a.split('|');for(var i=0;i<elenco.length;i++){eval("onloadFunction_"+this.idMap+"_"+elenco[i]+"("+i+",null);");}},refreshMap:function(){var a=document.getElementById(this.getIdForm()+":elencoServiziId_"+this.getIdMappa()).value;this.serviziToRefresh=a.split('|');var accesi=new Array();var almenoUnaChiamataAjax=false;for(var i=0;i<this.serviziToRefresh.length;i++){accesi[i]=true;if(this.getIdToc()!=null&&this.forceRefreshMapStatus==false){accesi[i]=gisJQuery.gisTocUtil.getServizioAccesoSpento(this.getIdToc(),this.getIdForm(),this.serviziToRefresh[i]);}
if(accesi[i]==true)almenoUnaChiamataAjax=true;}
if(almenoUnaChiamataAjax==true)eval("refreshMapStatus"+this.getIdMappa()+"(null);");for(var i=0;i<this.serviziToRefresh.length;i++){var curSrv=this.serviziToRefresh[i];if(accesi[i]==false){hideProgressBars(this.getIdMappa(),curSrv);gisJQuery.gisTocUtil.setServizioStatus(this.getIdToc(),this.getIdForm(),curSrv,'ok');this.clearImagesPerServizio(curSrv);}else{eval("onloadFunction_"+this.getIdMappa()+"_"+curSrv+"(null,null);");}}},refreshNext:function(){},getStato:function(idServizio){var stato="ko";gisJQuery('#'+this.idForm+'\\:imgcat_srv_'+this.idMappa+' [id$=hiddenIdServizioMapImages]').each(function(){if(idServizio==gisJQuery(this).val()){subbranch=gisJQuery('img',gisJQuery(this).parent());if(subbranch.length<=0)stato='ko';else stato='ok';}});return stato;},clearImages:function(){var greaseLayers=this.mappaOl.getLayersByClass("OpenLayers.GreaseOl.Layer.GreaseLayer");if(null!=greaseLayers){for(var i=0;i<greaseLayers.length;i++){greaseLayers[i].clearImages();}}},clearImagesPerServizio:function(idServizio){var greaseLayers=this.mappaOl.getLayersByName(idServizio);if(greaseLayers!=null&&greaseLayers.length>=1)greaseLayers[0].clearImages();},fitToParent:function(){},impostaAccendiSpegniClientServices:function(idMapservice,idLayer,onOff){this.mappaOl.setLayersVisibilityChanged(true);if(null==idLayer)this.olServiziOnOff[idMapservice]=onOff;else{var layersOl=this.mappaOl.getLayersByName(idMapservice);if(layersOl!=null&&layersOl.length>0){if(layersOl[0].CLASS_NAME=='OpenLayers.Layer.TMS'){this.olServiziOnOff[idMapservice]=onOff;}}}},zoomToExtents:function(xmin,ymin,xmax,ymax){var bounds=new OpenLayers.Bounds(xmin,ymin,xmax,ymax);this.mappaOl.zoomToExtent(bounds);},zoomToLevel:function(level){this.mappaOl.zoomTo(level);},startMap:function(){eval('startMap'+this.getIdMappa()+'();');},getEditingLayer:function(){return this.mappaOl.getLayersByName(this.LAYER_EDITING)[0];},updateHiddens:function(refreshMap,clearImages,showProgress){var ext=this.mappaOl.getExtent();document.getElementById(this.getIdForm()+":curUtmMaxx_"+this.getIdMappa()).value=(new String(""+ext.right)).replace(",",".");document.getElementById(this.getIdForm()+":curUtmMaxy_"+this.getIdMappa()).value=(new String(""+ext.top)).replace(",",".");document.getElementById(this.getIdForm()+":curUtmMinx_"+this.getIdMappa()).value=(new String(""+ext.left)).replace(",",".");document.getElementById(this.getIdForm()+":curUtmMiny_"+this.getIdMappa()).value=(new String(""+ext.bottom)).replace(",",".");var topStr=gisJQuery(document.getElementById(this.getIdOlMap()+"_OpenLayers_Container")).css('top');var leftStr=gisJQuery(document.getElementById(this.getIdOlMap()+"_OpenLayers_Container")).css('left');var topN=parseInt((topStr).substring(0,(topStr).indexOf("px")));var leftN=parseInt((leftStr).substring(0,(leftStr).indexOf("px")));document.getElementById(this.getIdForm()+":mainOffsetLeft_"+this.getIdMappa()).value=leftN;document.getElementById(this.getIdForm()+":mainOffsetTop_"+this.getIdMappa()).value=topN;document.getElementById(this.getIdForm()+":livelloZoom_"+this.getIdMappa()).value=this.mappaOl.getZoom();document.getElementById(this.getIdForm()+":dimx_"+this.getIdMappa()).value=this.mappaOl.getSize().w;document.getElementById(this.getIdForm()+":dimy_"+this.getIdMappa()).value=this.mappaOl.getSize().h;if(refreshMap!=null&&refreshMap==true){if(clearImages!=null&&clearImages==true)this.clearImages();if(showProgress!=null&&showProgress==true){if(this.getIdToc()!=null)setLoadingOnToc(this.getIdToc());showProgressBars(this.getIdMappa());}
this.refreshMap(clearImages);}},updateCoordsClick:function(lonlatArray,geomType){var xStr="";var yStr="";for(var i=0;lonlatArray!=null&&i<lonlatArray.length;i++){xStr+=lonlatArray[i].lon+"|"
yStr+=lonlatArray[i].lat+"|"}
var xClickFiled=this.getXClickObject();var yClickFiled=this.getYClickObject();var geomTypeObj=this.getGeometryTypeClickObject();gisJQuery(xClickFiled).val(xStr);gisJQuery(yClickFiled).val(yStr);gisJQuery(geomTypeObj).val(geomType);},updateCoordsClickMulti:function(geoms,geomType){var xStr="";var yStr="";for(var k=0;geoms!=null&&k<geoms.length;k++){var lonlatArray=geoms[k];for(var i=0;lonlatArray!=null&&i<lonlatArray.length;i++){xStr+=lonlatArray[i].lon+"|"
yStr+=lonlatArray[i].lat+"|"}
xStr+=";";yStr+=";";}
var xClickFiled=this.getXClickObject();var yClickFiled=this.getYClickObject();var geomTypeObj=this.getGeometryTypeClickObject();gisJQuery(xClickFiled).val(xStr);gisJQuery(yClickFiled).val(yStr);gisJQuery(geomTypeObj).val(geomType);},toggleControl:function(baseType,extendedType){var keyToActivate=null;var options=extendedType;for(var key in this.olcontrolli){var control=this.olcontrolli[key];if(key!=null&&key.indexOf(baseType)==0){keyToActivate=key;}else{try{control.deactivate();}catch(err){}}}
if(null!=keyToActivate){if(options!=null){document.getElementById(this.getIdForm()+":comando").value=options.command;try{var tmpRet=this.olcontrolli[keyToActivate].setGreaseOptions(options);}catch(errA){}
var cssStyle=null;if(options.cursorClass!==undefined&&options.cursorClass!=null)cssStyle=options.cursorClass;else if(this.olcontrolli[keyToActivate].cssStyle&&this.olcontrolli[keyToActivate].cssStyle!=null)cssStyle=this.olcontrolli[keyToActivate].cssStyle;this.mappaOl.div.style.cursor='';if(this.prevCssStyle!=null)gisJQuery(this.mappaOl.div).removeClass(this.prevCssStyle);if(cssStyle!=null)gisJQuery(this.mappaOl.div).addClass(cssStyle);this.prevCssStyle=cssStyle;}
if(keyToActivate!="DRAW_MODIFY"){this.lastControlKey=keyToActivate;this.lastControlOption=options;}
this.olcontrolli[keyToActivate].activate();}},resetEditingLayer:function(){var edLay=this.mappaOl.getLayersByName(this.LAYER_EDITING)[0];var a=edLay.removeFeatures();a=edLay.destroyFeatures();var xClickFiled=this.getXClickObject();var yClickFiled=this.getYClickObject();var geomTypeObj=this.getGeometryTypeClickObject();gisJQuery(xClickFiled).val("");gisJQuery(yClickFiled).val("");gisJQuery(geomTypeObj).val("");return true;},attivaModificaUltimaFeature:function(){if(this.olcontrolli['DRAW_MODIFY'].active==false||this.olcontrolli['DRAW_MODIFY'].active==null){this.toggleControl('DRAW_MODIFY',{cursorClass:null,command:'DRAW'});}
this.olcontrolli['DRAW_MODIFY'].virtualStyle=OpenLayers.Util.extend(this.olcontrolli['DRAW_MODIFY'].virtualStyle,{fillColor:'red'});var edLayer=this.getEditingLayer();var feature=edLayer.features[edLayer.features.length-1];var selectControl=this.olcontrolli['DRAW_MODIFY'].selectControl;selectControl.select(feature);},terminaSessioneEditing:function(ripristinaComandoPrecedente){var options={'ripristinaComandoPrecedente':ripristinaComandoPrecedente||false}
if(this.olcontrolli['DRAW_MODIFY'].active==true){this.olcontrolli['DRAW_MODIFY'].deactivate();if(null!=this.lastControlKey&&ripristinaComandoPrecedente==true){this.toggleControl(this.lastControlKey,this.lastControlOption);}}
this.resetEditingLayer();},evidenziaSelezione:function(identificativoGeometria){var style_red={strokeColor:"#000000",strokeOpacity:1,strokeWidth:2,fillColor:"#FF0000",fillOpacity:0.6};var edLayer=this.getEditingLayer();var aaa=3;for(var kkk=0;kkk<edLayer.features.length;kkk++){if(edLayer.features[kkk].attributes.idFeature==identificativoGeometria){edLayer.features[kkk].style=style_red;}else{edLayer.features[kkk].style=null;}}
edLayer.redraw();},caricaGeometrieClient:function(elencoFeatures,attivaModifica){var options={'attivaModifica':attivaModifica||false}
var edLayer=this.getEditingLayer();edLayer.removeFeatures();edLayer.destroyFeatures();var points=[];var curFeature=null;var curGeometry=null;if(elencoFeatures&&elencoFeatures!=null){for(var i=0;i<elencoFeatures.length;i++){curFeature=null;if(elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_MULTIPOLYGON||elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_POLYGON){for(var k=0;k<elencoFeatures[i].geometrie.length;k++){points=[];var curGeom=elencoFeatures[i].geometrie[k];for(var j=0;j<curGeom.punti.length;j++){points.push(new OpenLayers.Geometry.Point(curGeom.punti[j].coordX,curGeom.punti[j].coordY))}
curGeometry=new OpenLayers.Geometry.Polygon([new OpenLayers.Geometry.LinearRing(points)]);}}else if(elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_MULTILINE||elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_LINE){for(var k=0;k<elencoFeatures[i].geometrie.length;k++){points=[];var curGeom=elencoFeatures[i].geometrie[k];for(var j=0;j<curGeom.punti.length;j++){points.push(new OpenLayers.Geometry.Point(curGeom.punti[j].coordX,curGeom.punti[j].coordY))}
curGeometry=new OpenLayers.Geometry.LineString(points);}}else if(elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_MULTIPOINT){for(var k=0;k<elencoFeatures[i].geometrie.length;k++){points=[];var curGeom=elencoFeatures[i].geometrie[k];for(var j=0;j<curGeom.punti.length;j++){points.push(new OpenLayers.Geometry.Point(curGeom.punti[j].coordX,curGeom.punti[j].coordY))}
curGeometry=new OpenLayers.Geometry.MultiPoint(points);}}else if(elencoFeatures[i].tipoGeometria==OpenLayers.GreaseOl.Constants.GEOMETRY_TYPE_POINT){for(var k=0;k<elencoFeatures[i].geometrie.length;k++){var curGeom=elencoFeatures[i].geometrie[k];curGeometry=new OpenLayers.Geometry.Point(new OpenLayers.Geometry.Point(curGeom.punti[0].coordX,curGeom.punti[0].coordY));}}
if(curGeometry!=null){edLayer.addFeatures(new OpenLayers.Feature.Vector(curGeometry,{idFeature:elencoFeatures[i].idRecord}));}}
if(options.attivaModifica==true&&elencoFeatures.length==1){this.attivaModificaUltimaFeature();}}},initMap:function(olMapConfig){this.mappaOl=new OpenLayers.GreaseOl.GreaseMap(this.idOlMap,{controls:[],displayOutsideMaxExtent:false,maxExtent:new OpenLayers.Bounds(olMapConfig.servizioCfg.envelope.sudovest.coordX,olMapConfig.servizioCfg.envelope.sudovest.coordY,olMapConfig.servizioCfg.envelope.nordest.coordX,olMapConfig.servizioCfg.envelope.nordest.coordY),maxResolution:olMapConfig.servizioCfg.maxResolution,minResolution:olMapConfig.servizioCfg.minResolution,projection:new OpenLayers.Projection(olMapConfig.servizioCfg.srs),units:'m',eventListeners:{}},this.idMappa,document.getElementById(this.idForm+":"+this.urlDefImage).src);this.mappaOl.addLayer(new OpenLayers.Layer.TMS("BaseLayer","",{tileSize:new OpenLayers.Size(olMapConfig.servizioCfg.tileSize,olMapConfig.servizioCfg.tileSize),buffer:null,'type':'gif','getURL':function(bounds){var ret=this.map.urlBlankImage
return ret;},numZoomLevels:olMapConfig.servizioCfg.numeroLivelli,visibility:true,isBaseLayer:true,maxResolution:olMapConfig.servizioCfg.maxResolution,minResolution:olMapConfig.servizioCfg.minResolution,maxExtent:new OpenLayers.Bounds(olMapConfig.servizioCfg.envelope.sudovest.coordX,olMapConfig.servizioCfg.envelope.sudovest.coordY,olMapConfig.servizioCfg.envelope.nordest.coordX,olMapConfig.servizioCfg.envelope.nordest.coordY),restrictedExtent:new OpenLayers.Bounds(olMapConfig.servizioCfg.envelope.sudovest.coordX,olMapConfig.servizioCfg.envelope.sudovest.coordY,olMapConfig.servizioCfg.envelope.nordest.coordX,olMapConfig.servizioCfg.envelope.nordest.coordY)}));for(var jk=0;olMapConfig.serviziClient!=null&&jk<olMapConfig.serviziClient.length;jk++){if(olMapConfig.serviziClient[jk].tipoMapservice=='TMS'){var curLayer=new OpenLayers.Layer.TMS(olMapConfig.serviziClient[jk].idServizio,olMapConfig.serviziClient[jk].hostName,{tileSize:new OpenLayers.Size(olMapConfig.serviziClient[jk].tileSize,olMapConfig.serviziClient[jk].tileSize),buffer:null,'type':'gif','getURL':getUrlFromCfg,numZoomLevels:olMapConfig.serviziClient[jk].numeroLivelli,visibility:true,isBaseLayer:false,maxResolution:olMapConfig.serviziClient[jk].maxResolution,minResolution:olMapConfig.serviziClient[jk].minResolution,maxExtent:new OpenLayers.Bounds(olMapConfig.serviziClient[jk].envelope.sudovest.coordX,olMapConfig.serviziClient[jk].envelope.sudovest.coordY,olMapConfig.serviziClient[jk].envelope.nordest.coordX,olMapConfig.serviziClient[jk].envelope.nordest.coordY),restrictedExtent:new OpenLayers.Bounds(olMapConfig.serviziClient[jk].envelope.sudovest.coordX,olMapConfig.serviziClient[jk].envelope.sudovest.coordY,olMapConfig.serviziClient[jk].envelope.nordest.coordX,olMapConfig.serviziClient[jk].envelope.nordest.coordY)});this.mappaOl.addLayer(curLayer);}else if(olMapConfig.serviziClient[jk].tipoMapservice=='GREASE'){var curLayer=new OpenLayers.GreaseOl.Layer.GreaseLayer(olMapConfig.serviziClient[jk].idServizio,olMapConfig.serviziClient[jk].idServizio,{transitionEffect:'resize',isBaseLayer:false});this.mappaOl.addLayer(curLayer);}}
this.mappaOl.fractionalZoom=olMapConfig.fractionalZoom;var editingLayer=new OpenLayers.Layer.Vector(this.LAYER_EDITING);this.mappaOl.addLayer(editingLayer);document.getElementById("hiddenDivImages"+this.idMappa).appendChild(this.imgContainerObject);this.olcontrolli["PAN"]=new OpenLayers.Control.Navigation({cssStyle:'mapCursorPanActive'});this.olcontrolli["CLICK"]=new OpenLayers.GreaseOl.Control.GreaseControlClick('mapCursorClick',{handlerOptions:{"double":false,"single":true}});this.olcontrolli["DRAWRECT"]=new OpenLayers.GreaseOl.Control.GreaseControlDrawRect('mapCursorClick',{handlerOptions:{}});this.olcontrolli['ZOOMRECT']=new OpenLayers.GreaseOl.Control.GreaseControlZoomRect('mapCursorZoomRect');this.olcontrolli['DRAW_POINT']=new OpenLayers.GreaseOl.Control.GreaseControlDrawFeature(editingLayer,OpenLayers.Handler.Point,{cssStyle:'mapCursorPanActive'});this.olcontrolli['DRAW_LINE']=new OpenLayers.GreaseOl.Control.GreaseControlDrawFeature(editingLayer,OpenLayers.Handler.Path,{cssStyle:'mapCursorPanStart'});this.olcontrolli['DRAW_POLYGON']=new OpenLayers.GreaseOl.Control.GreaseControlDrawFeature(editingLayer,OpenLayers.Handler.Polygon,{cssStyle:'mapCursorClick'});this.olcontrolli['DRAW_MODIFY']=new OpenLayers.GreaseOl.Control.GreaseControlModifyFeature(editingLayer,{cssStyle:'mapCursorPanStart'});this.olcontrolli['DRAW_MODIFY'].mode=OpenLayers.Control.ModifyFeature.RESIZE|OpenLayers.Control.ModifyFeature.ROTATE|OpenLayers.Control.ModifyFeature.RESHAPE|OpenLayers.Control.ModifyFeature.DRAG;this.mappaOl.addControl(this.olcontrolli["PAN"]);this.mappaOl.addControl(this.olcontrolli["CLICK"]);this.mappaOl.addControl(this.olcontrolli["ZOOMRECT"]);this.mappaOl.addControl(this.olcontrolli["DRAWRECT"]);this.mappaOl.addControl(this.olcontrolli["DRAW_POINT"]);this.mappaOl.addControl(this.olcontrolli["DRAW_LINE"]);this.mappaOl.addControl(this.olcontrolli["DRAW_POLYGON"]);this.mappaOl.addControl(this.olcontrolli["DRAW_MODIFY"]);this.olcontrolli["PAN"].deactivate();this.olcontrolli["CLICK"].deactivate();this.olcontrolli["ZOOMRECT"].deactivate();this.olcontrolli["DRAWRECT"].deactivate();this.olcontrolli["DRAW_POINT"].deactivate();this.olcontrolli["DRAW_LINE"].deactivate();this.olcontrolli["DRAW_POLYGON"].deactivate();this.olcontrolli["DRAW_MODIFY"].deactivate();this.mappaOl.events.register("movestart",this,accendiSpegniClientServices);return 56;},CLASS_NAME:"OpenLayers.GreaseOl.MainMapOL"});