function RegionFilter(){
	$svGM = jQuery.fn.svGoogleMaps;
	
	this.filterByZero = false;
	
	this.run = function(){
		$svGM.updatedFilters(this.applyFilter($svGM.args.placemarks[$svGM.args.mapName], this.getValue()));
	}
	
	//Expects an array of placemarks, returns array of all unfiltered placemarks
	this.applyFilter = function(arr,value){
		var unfiltered = new Array();
		//First reset any existing filter
		this.resetFilter(arr);
		//Now apply the new value
		for(var i = 0; i < arr.length; i++){
			if(this.filterByZero || parseInt(value) != 0){
				if(arr[i].regionid != value){
					arr[i].filteredBy['regionid'] = true;
				}
			}
			arr[i].filtered = arr[i].filtered || arr[i].filteredBy['regionid'] || !arr[i].active;
			if(!arr[i].filtered)
				unfiltered.push(arr[i]);
			
		}
		return unfiltered;
	}

	//Expects an array of placemarks
	this.resetFilter = function(arr){
		for(var i = 0; i < arr.length; i++){
			//Reset this filter
			arr[i].filteredBy['regionid'] = false;
			arr[i].filtered = false;
			//Reapply Filter if there are any additional filters
		}
		this.checkFilters(arr);										
	}

	//Expects an array of placemarks - will check all filters and reset filter status based on that
	this.checkFilters = function(arr){
		for(var i = 0; i < arr.length; i++){
			arr[i].filtered = false;
			for(var j in arr[i].filteredBy){
				arr[i].filtered = arr[i].filtered || arr[i].filteredBy[j];
			}
		}
	}

	this.getValue = function(){
		var regionid = jQuery('#' + $svGM.args.mapName + '_regionID').val();
		return regionid;
	}
}
