	function search_obj(id) {
		var feature = null;
		var layers = map.layers;
		
		for (var l = map_layers_num; l < layers.length; l++) {
		    if( layers[l].visibility ) {
				var features = layers[l].features;
				for (var f = 0; f < features.length; f++) {
					if( id == features[f].style.user_id && features[f].attributes['last'] != null) {
						map.setCenter(new OpenLayers.LonLat(features[f].geometry.x, features[f].geometry.y));
						break;
					}	
				}
		    }
		}
	}

        function objectListSelection(id) {

		var feature = null;
		var layers = map.layers;
		
		for (var l = map_layers_num; l < layers.length; l++) {
		    if( layers[l].visibility ) {
				var features = layers[l].features;
				for (var f = 0; f < features.length; f++) {
					var the_geom = features[f].geometry.toString();
					if( the_geom.indexOf('LINE') != -1 && id == features[f].style.user_id ) {
						feature = features[f];
						break;
					}	
				}
		    }
		}

		if( feature != null ) {
			var layer = feature.layer;

			if( selectedFeature != null ) {
				if(selectedFeature.originalStyle != null) {
					selectedFeature.style = selectedFeature.originalStyle;
				}
				selectedFeature.layer.drawFeature(selectedFeature);
				OpenLayers.Util.removeItem(selectedFeature.layer.selectedFeatures, selectedFeature);
				onFeatureUnselect(selectedFeature);
			}

			if(OpenLayers.Util.indexOf(layer.selectedFeatures, feature) <= -1) {
				if(feature.originalStyle == null) {
					feature.originalStyle = feature.style;
				}
				feature.layer.selectedFeatures.push(feature);
    				feature.style = OpenLayers.Feature.Vector.style['select'];
				feature.style.strokeColor = 'black';
				feature.style.strokeWidth = 2;
    				feature.layer.drawFeature(feature);
				selectedListFeature = feature;
			}
		}
	}

        function objectListUnSelection(id) {

		var feature = null;
		if( selectedListFeature != null ) {
			feature = selectedListFeature;
			if(feature.originalStyle != null) {
				feature.style = feature.originalStyle;
			}
			feature.layer.drawFeature(feature);
			OpenLayers.Util.removeItem(feature.layer.selectedFeatures, feature);
			selectedListFeature = null;
		}
	}

        function objectSelection(evt) {
			var feature = null;
			var layers = evt.object.layers;
		
			for (var l = map_layers_num; l < layers.length; l++) {
			    if( layers[l].visibility ) {
				var features = layers[l].features;
				for (var f = 0; f < features.length; f++) {
					if( features[f].geometry.CLASS_NAME=='OpenLayers.Geometry.Point' || features[f].geometry.CLASS_NAME=='OpenLayers.Geometry.Polygon' ) {
						var lonlat = features[f].geometry;
						
						if (lonlat != null) {
						    var resolution = map.getResolution();
						    var extent = map.getExtent();
						    var px = new OpenLayers.Pixel(
							Math.round(1/resolution * (lonlat.x - extent.left)),
							Math.round(1/resolution * (extent.top - lonlat.y))
						    );    
						    if( evt.xy.x > px.x-5 && evt.xy.x < px.x+5 && evt.xy.y > px.y-5 && evt.xy.y < px.y+5 ) { 
							feature = features[f]; 
							break;
						    }
						}
					}

		    		}
			    }
			}

			if( feature == null ) {
				feature = selectedFeature;
				if( feature != null && OpenLayers.Util.indexOf(feature.layer.selectedFeatures, feature) > -1) {
					if(feature.originalStyle != null) {
						feature.style = feature.originalStyle;
					}
					feature.layer.drawFeature(feature);
					OpenLayers.Util.removeItem(feature.layer.selectedFeatures, feature);
					onFeatureUnselect(feature);
				}
				return;
			} 

			var layer = feature.layer;

			if(OpenLayers.Util.indexOf(layer.selectedFeatures, feature) <= -1) {
				if(feature.originalStyle == null) {
					feature.originalStyle = feature.style;
				}
				feature.layer.selectedFeatures.push(feature);
    				feature.style = OpenLayers.Feature.Vector.style['select'];
				feature.style.strokeColor = feature.originalStyle.strokeColor;
				feature.style.fillColor = 'yellow';
				feature.style.strokeWidth = 1;
    				feature.layer.drawFeature(feature);
				onFeatureSelect(feature);
			}
		}

        function onFeatureSelect(feature) {
			var re = /point|polygon/i;
		if( feature.layer.visibility ) {
			if( re.test(feature.geometry.id) ) {
				if( selectedFeature != null ) {
					selectedFeature.style = selectedFeature.originalStyle;
					selectedFeature.layer.drawFeature(selectedFeature);
					OpenLayers.Util.removeItem(selectedFeature.layer.selectedFeatures, selectedFeature);
					onFeatureUnselect(selectedFeature);
				}
				selectedFeature = feature;
				if(selectedFeature.originalStyle == null) {
					selectFeature.originalStyle = feature.style;
				}
				var px = map.getViewPortPxFromLonLat(new OpenLayers.LonLat(feature.geometry.x, feature.geometry.y));
				px.x = px.x + 2;
				px.y = px.y - 130;
				var pos = map.getLonLatFromViewPortPx(px);
				
				var popup = new OpenLayers.Popup("chicken", pos, new OpenLayers.Size(170,120), "", false);
				popup.setContentHTML("<div id='hint'>"+feature.attributes.description+"</div>");
				popup.setBackgroundColor("yellow");
				popup.setOpacity(0.8);
				popup.setBorder("1px solid");
				feature.popup = popup;
				map.addPopup(popup);
			}
		}
        }

        function onFeatureUnselect(feature) {
			if( feature.popup ) {
				selectedFeature = null;
				map.removePopup(feature.popup);
				feature.popup.destroy();
				feature.popup = null;
			}
        }
