
		function wps() {
			
			vlayer.preFeatureInsert = function(feature) {
					for(var i in feature.style) {
						if (feature.attributes[i]) {
							feature.style[i] = feature.attributes[i];
						}
					}    
				}	
		}

		function clearFeatures() {
            vlayer.removeFeatures(vlayer.features);
            return false;
        }
        
        /* 
		 * Traitement et envoi 
		 * de la requete pour WPS
		 */
        function request(type, args) {
        	/*
            if (modify_feature.feature) {
                modify_feature.unselectFeature(modify_feature.feature);
            }    */
            
            var features = vlayer.features;
            if (vlayer.selectedFeatures.length) {
                features = vlayer.selectedFeatures;
            }
            featuresToProcess = features;
            if (!features.length) { return false; }
            if (type == "dissolve") {
                for(var i = 0; i < features.length; i++) {
                    if (features[i].geometry.CLASS_NAME == "OpenLayers.Geometry.Point" || 
                        features[i].geometry.CLASS_NAME == "OpenLayers.Geometry.LineString") {
                        updateStatus("You can't dissolve points or lines. Buffer first.", "error");
                        return false;
                    }
                } 
            } 
            var paramString = args ? "?" + OpenLayers.Util.getParameterString(args) : "";
            var geojson = new OpenLayers.Format.GeoJSON();
            var data = geojson.write(features);
            new OpenLayers.Ajax.Request("../webprocessingserver/wps.cgi/" +
                                        type + paramString,
                         {   method: 'post',
                             postBody: data,
                             onComplete: update
                          }
                         );
            request_count++; 
            updateStatus("Processing...");
            return false;             
        }
        
        /* 
		 * MAJ des donnees 
		 * apres geoTraitements
		 */
        function update(request) {
            response_count++; 
            vlayer.removeFeatures(featuresToProcess);
            var g = new OpenLayers.Format.GeoJSON();
            var features =  g.read(request.responseText)
                        
            	
				if (features.length) { 
					var extent = new OpenLayers.Bounds();
					vlayer.addFeatures(features);
					for(var i = 0; i < features.length; i++) {
						extent.extend(features[i].geometry.getBounds());
					}
					if (!map.getExtent().containsBounds(extent)) {
						map.zoomToExtent(extent);
					}
					updateStatus("Processing complete.");
				} else { 
					updateStatus("Action returned no features.", "error");
				}   
			
        }
        function updateStatus(statusMessage, type) {
            var statusElement = OpenLayers.Util.getElement('status');
            var message = statusMessage + " (" + response_count + "/" + request_count + ")"; 
            statusElement.innerHTML = message;
            switch(type) {
                case "error":
                    statusElement.style.color = "red";
                    break;
                default:
                    statusElement.style.color = "black";
            }        
        }   

