
            
      
            
            
       

           var map, layer, layerLS, select, hover, multi, control;

        function initOgr(){
            OpenLayers.ProxyHost= "../cgi-bin/proxy.cgi?url=";
            map = new OpenLayers.Map('map', {
                controls: [
                    new OpenLayers.Control.PanZoom(),
                    new OpenLayers.Control.Permalink(),
                    new OpenLayers.Control.Navigation()
                ]
            });
            layer = new OpenLayers.Layer.WMS(
                "States WMS/WFS",
		"http://www.zoo-project.org:8082/geoserver/ows",
                {layers: 'topp:states', format: 'image/png'},
                {buffer:1, singleTile:true}
            );
            
            layerLS = new OpenLayers.Layer.WMS(
                "OL baselayer",
                "http://labs.metacarta.com/wms/vmap0",
                {layers: 'basic', format: 'image/png'}, {isBaseLayer:true}
            );


            select = new OpenLayers.Layer.Vector("Selection", {styleMap: 
                new OpenLayers.Style(OpenLayers.Feature.Vector.style["select"])
            });
            hover = new OpenLayers.Layer.Vector("Hover");
            multi = new OpenLayers.Layer.Vector("Multi", {styleMap: 
                new OpenLayers.Style({
                  fillColor:"red",
                  fillOpacity:0.4,
                  strokeColor:"red",
                  strokeOpacity:1,
                  strokeWidth:2
                })
            });
            map.addLayers([layer, select, hover, multi]);
            
            control = new OpenLayers.Control.GetFeature({
                //box: true,
                //hover: true,
                //multipleKey: "shiftKey",
                //toggleKey: "ctrlKey",
                protocol: OpenLayers.Protocol.WFS.fromWMSLayer(layer)
            });
            control.events.register("featureselected", this, function(e) {
                select.addFeatures([e.feature]);
            });
            control.events.register("featureunselected", this, function(e) {
                select.removeFeatures([e.feature]);
            });
            control.events.register("hoverfeature", this, function(e) {
                hover.addFeatures([e.feature]);
            });
            control.events.register("outfeature", this, function(e) {
                hover.removeFeatures([e.feature]);
            });
            map.addControl(control);
            control.activate();

            //map.setCenter(new OpenLayers.Bounds(-140.444336,25.115234,-44.438477,50.580078).getCenterLonLat(), 3);
            map.zoomToExtent(new OpenLayers.Bounds(-140.444336,25.115234,-44.438477,50.580078));
        }

        function simpleOgrProcessing(aProcess) {
          if (select.features.length == 0)
            return alert("No feature selected!");
          var url = '/cgi-bin-new1/zoo_loader.cgi?request=Execute&service=WPS&version=1.0.0&';
          if (aProcess == 'buffer') {
            var dist = document.getElementById('bufferDist').value;
            if (isNaN(dist))
              return alert("Distance is not a Number!");
            url += 'Identifier=Buffer&DataInputs=BufferDistance='+dist+'@datatype=interger@uom=meter;InputPolygon=Reference@xlink:href=';
          } else if (aProcess == 'convexhull')
            url += 'Identifier=ConvexHull&DataInputs=InputPolygon=Reference@xlink:href=';
          else if (aProcess == 'boundary')
            url += 'Identifier=Boundary&DataInputs=InputPolygon=Reference@xlink:href=';
          else if (aProcess == 'centroid')
            url += 'Identifier=Centroid&DataInputs=InputPolygon=Reference@xlink:href=';

          var xlink = control.protocol.url +"?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.0.0";
          //BUG with version different than 1.0.0
          //xlink += control.protocol.version;
          xlink += '&typename='+control.protocol.featurePrefix;
          xlink += ':'+control.protocol.featureType;
          xlink += '&SRS='+control.protocol.srsName;
          xlink += '&FeatureID='+select.features[0].fid;
          url += encodeURIComponent(xlink);
          url += '&RawDataOutput=Result@mimeType=application/json';

          var request = new OpenLayers.Request.XMLHttpRequest();
          request.open('GET',url,true);
          request.onreadystatechange = function() {
            if(request.readyState == OpenLayers.Request.XMLHttpRequest.DONE) {
              var GeoJSON = new OpenLayers.Format.GeoJSON();
              var features = GeoJSON.read(request.responseText);
              hover.removeFeatures(hover.features);
              hover.addFeatures(features);
            }
          }
          request.send();
        }
	function runExportDocument(){
		var request = new OpenLayers.Request.XMLHttpRequest();
		var url="/zoo/?Service=WPS&Request=Execute&Version=1.0.0&Identifier=OdtConverter&DataInputs=InputDoc=";
		url+=document.getElementById("txtFileName").value;
		url+=";OutputDoc="+document.getElementById("txtFileName").value.replace(".odt","."+document.getElementById("format").options[document.getElementById("format").selectedIndex].value);
		url+="&RawDataOutput=OutputedDocument";
		request.open('GET',url,true);
		request.onreadystatechange = function() {
			document.getElementById("uloading").style.display="none";
			document.getElementById("newdoc").innerHTML=request.responseText;
			document.getElementById("newdoc").href="/ms_tmp/"+request.responseText;
			document.getElementById("newdoc").style.display="block";
		document.getElementById("uloading").style.display="none";
		}
		document.getElementById("uloading").style.display="block";
		request.send();
	}
        function multiOgrProcessing(aProcess) {
          if (select.features.length == 0)
            return alert("No feature selected!");
          if (hover.features.length == 0)
            return alert("No feature created!");

          var url = '/cgi-bin-new1/zoo_loader.cgi';
          /*
          var params = 'request=Execute&service=WPS&version=1.0.0&';
          if (aProcess == 'union')
            params += 'Identifier=Union&DataInputs=InputEntity1=Reference@xlink:href=';
          else if (aProcess == 'difference')
            params += 'Identifier=Difference&DataInputs=InputEntity1=Reference@xlink:href=';
          else if (aProcess == 'symdifference')
            params += 'Identifier=SymDifference&DataInputs=InputEntity1=Reference@xlink:href=';
            */

          var xlink = control.protocol.url +"?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.0.0";
          //BUG with version different than 1.0.0
          //xlink += control.protocol.version;
          xlink += '&typename='+control.protocol.featurePrefix;
          xlink += ':'+control.protocol.featureType;
          xlink += '&SRS='+control.protocol.srsName;
          xlink += '&FeatureID='+select.features[0].fid;
          //params += encodeURIComponent(xlink);

          var GeoJSON = new OpenLayers.Format.GeoJSON();
          /*
          params += ';InputEntity2='+GeoJSON.write(hover.features[0].geometry)+'@mimetype=application/json';
          params += '&RawDataOutput=Result';
          */

          /*
          var request = new OpenLayers.Request.XMLHttpRequest();
          request.open('GET',url+'?'+params,true);
          request.onreadystatechange = function() {
            if(request.readyState == OpenLayers.Request.XMLHttpRequest.DONE) {
              var GeoJSON = new OpenLayers.Format.GeoJSON();
              var features = GeoJSON.read(request.responseText);
              multi.removeFeatures(multi.features);
              multi.addFeatures(features);
              //alert(request.responseText);
            }
          }
          request.send();
          */
          try {
          var params = '<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0/../wpsExecute_request.xsd">';
          if (aProcess == 'union')
            params += '<ows:Identifier>Union</ows:Identifier>';
          else if (aProcess == 'difference')
            params += '<ows:Identifier>Difference</ows:Identifier>';
          else if (aProcess == 'symdifference')
            params += '<ows:Identifier>SymDifference</ows:Identifier>';
          else if (aProcess == 'intersection')
            params += '<ows:Identifier>Intersection</ows:Identifier>';
          params += '<wps:DataInputs>';
          params += '<wps:Input>';
          params += '<ows:Identifier>InputEntity1</ows:Identifier>';
          params += '<wps:Reference xlink:href="'+xlink.replace(/&/gi,'&amp;')+'"/>';
          params += '</wps:Input>';
          params += '<wps:Input>';
          params += '<ows:Identifier>InputEntity2</ows:Identifier>';
          params += '<wps:Data>';
          params += '<wps:ComplexData mimeType="application/json"> '+GeoJSON.write(hover.features[0].geometry)+' </wps:ComplexData>';
          params += '</wps:Data>';
          params += '</wps:Input>';
          params += '</wps:DataInputs>';
          params += '<wps:ResponseForm>';
          params += '<wps:RawDataOutput>';
          params += '<ows:Identifier>Result</ows:Identifier>';
          params += '</wps:RawDataOutput>';
          params += '</wps:ResponseForm>';
          params += '</wps:Execute>';
          } catch(e) {
            alert(e);
            return false;
          }

          //alert(params);
          $.ajax({
             type: "POST",
             url: url,
             data: "request="+encodeURIComponent(params),
             dataType: 'text',
             success: function(msg){
              var GeoJSON = new OpenLayers.Format.GeoJSON();
              var features = GeoJSON.read(msg);
              multi.removeFeatures(multi.features);
              multi.addFeatures(features);
             }
          });

        }
        function distOgrProcessing() {
          if (select.features.length == 0)
            return alert("No feature selected!");
          if (hover.features.length == 0)
            return alert("No feature created!");

          var GeoJSON = new OpenLayers.Format.GeoJSON();
          var url = '/zoosoo/';
          var params = 'request=Execute&service=WPS&version=1.0.0&';
          params += 'Identifier=Distance&DataInputs=InputEntity1=Reference@xlink:href=';
          var xlink = control.protocol.url +"?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.0.0";
          //BUG with version different than 1.0.0
          //xlink += control.protocol.version;
          xlink += '&typename='+control.protocol.featurePrefix;
          xlink += ':'+control.protocol.featureType;
          xlink += '&SRS='+control.protocol.srsName;
          xlink += '&FeatureID='+select.features[0].fid;
          params += encodeURIComponent(xlink);

          params += ';InputEntity2='+GeoJSON.write(hover.features[0].geometry)+'@mimetype=application/json';
          params += '&RawDataOutput=Distance';

          params = '<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0/../wpsExecute_request.xsd">';
          params += ' <ows:Identifier>Distance</ows:Identifier>';
          params += ' <wps:DataInputs>';
          params += ' <wps:Input>';
          params += ' <ows:Identifier>InputEntity1</ows:Identifier>';
          params += ' <wps:Reference xlink:href="'+xlink.replace(/&/gi,'&amp;')+'"/>';
          params += ' </wps:Input>';
          params += ' <wps:Input>';
          params += ' <ows:Identifier>InputEntity2</ows:Identifier>';
          params += ' <wps:Data>';
          params += ' <wps:ComplexData mimeType="application/json"> '+GeoJSON.write(hover.features[0].geometry)+' </wps:ComplexData>';
          params += ' </wps:Data>';
          params += ' </wps:Input>';
          params += ' </wps:DataInputs>';
          params += ' <wps:ResponseForm>';
          params += ' <wps:RawDataOutput>';
          params += ' <ows:Identifier>Distance</ows:Identifier>';
          params += ' </wps:RawDataOutput>';
          params += ' </wps:ResponseForm>';
          params += ' </wps:Execute>';

          /*
          var request = new OpenLayers.Request.XMLHttpRequest();
          //request.open('GET',url+'?'+params,true);
          request.open('POST',url,true);
          request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
          request.onreadystatechange = function() {
            if(request.readyState == OpenLayers.Request.XMLHttpRequest.DONE) {
              alert(request.responseText);
            }
          }
          //request.send();
          alert(params);
          request.send('request='+params);
          */
          $.ajax({
             type: "POST",
             url: url,
             data: "request="+encodeURIComponent(params),
             dataType: 'text',
             success: function(msg){
               alert( msg );
             }
          });
        }


