function doFiltering() {
  var params = parseQueryString();
  
  var size = Object.size(params);

  if (size > 1) {
    if (params['action'] == undefined) {
      alert('Action must be specified, along with at least one additional parameter');
      return;
    }
  }
  var filterOptions = {filter: 0};
  if (params['action'] == "region") {
    var region = params['value'];
    var filterOptions = {
      filter: 1,
      region: region
    }
  } else if (params['action'] == "postcodesearch") {
    var postcode = params['postcode'] + ', UK';
    var radius = params['radius'];
    var geocoder = new google.maps.Geocoder();

    geocoder.geocode({'address': postcode}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        lat = results[0].geometry.location.lat();
        lng = results[0].geometry.location.lng();
        var filterOptions = {
          filter: 1,
          postcode: postcode,
          lat: lat,
          lng: lng,
          radius: radius
        }
        var defaultHTML = '<div class="mapmarker"><h3 class="markertitle">%centre%</h3>';
        defaultHTML += '<p><a href="?id=%centre_id%">More details</a></p>';
        defaultHTML += '<p><a href="%website%">Visit their website</a></p>';
        loadMarkers("asdc_map", filterOptions, defaultHTML);
      } else {
        alert("Could not find this address. (Google says: " + status + ")");
        var filterOptions = {filter: 0};
        loadMarkers("asdc_map", filterOptions);
      }
    });
    return;
  } else if (params['action'] == "namesearch") {
    var locn = params['s'];
    var filterOptions = {
      filter: 1,
      searchtext: locn
    }
  }
  return(filterOptions);
}


function parseQueryString(){
  //http://safalra.com/web-design/javascript/parsing-query-strings/parseQueryString.js
  // define an object to contain the parsed query data
  var result = {};

  queryString = location.search;

  // remove the leading question mark from the query string if it is present
  if (queryString.charAt(0) == '?') queryString = queryString.substring(1);

  // replace plus signs in the query string with spaces
  queryString = queryString.replace(/\+/g, ' ');

  // split the query string around ampersands and semicolons
  var queryComponents = queryString.split(/[&;]/g);

  // loop over the query string components
  for (var i = 0; i < queryComponents.length; i++){
    // extract this component's key-value pair
    var keyValuePair = queryComponents[i].split('=');
    var key = decodeURIComponent(keyValuePair[0]);
    var value = decodeURIComponent(keyValuePair[1]);

    // update the parsed query data with this component's key-value pair
    if (!result[key]) result[key] = [];
    result[key].push((keyValuePair.length == 1) ? '' : value);
  }

  // return the parsed query data
  return result;
}

