/*

Webmonkey GET Parsing Module

Language: JavaScript 1.0

The parsing of GET queries is fundamental

to the basic functionality of HTTP/1.0.

This module parses GET with JavaScript 1.0.

Source: Webmonkey Code Library

(http://www.hotwired.com/webmonkey/javascript/code_library/)

Author: Patrick Corcoran

Author Email: patrick@taylor.org

*/

 

 

function createRequestObject() {

  FORM_DATA = new Object();

    // The Object ("Array") where our data will be stored.

  separator = ',';

    // The token used to separate data from multi-select inputs

  query = '' + this.location;

  qu = query

    // Get the current URL so we can parse out the data.

    // Adding a null-string '' forces an implicit type cast

    // from property to string, for NS2 compatibility.

  query = query.substring((query.indexOf('?')) + 1);

    // Keep everything after the question mark '?'.

  if (query.length < 1) { return false; }  // Perhaps we got some bad data?

  keypairs = new Object();

  numKP = 1;

    // Local vars used to store and keep track of name/value pairs

    // as we parse them back into a usable form.

  while (query.indexOf('&') > -1) {

    keypairs[numKP] = query.substring(0,query.indexOf('&'));

    query = query.substring((query.indexOf('&')) + 1);

    numKP++;

      // Split the query string at each '&', storing the left-hand side

      // of the split in a new keypairs[] holder, and chopping the query

      // so that it gets the value of the right-hand string.

  }

  keypairs[numKP] = query;

    // Store what's left in the query string as the final keypairs[] data.<

  for (i in keypairs) {

    keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));

      // Left of '=' is name.

    keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);

      // Right of '=' is value.

    while (keyValue.indexOf('+') > -1) {

      keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);

        // Replace each '+' in data string with a space.

    }

    keyValue = unescape(keyValue);

      // Unescape non-alphanumerics

    if (FORM_DATA[keyName]) {

      FORM_DATA[keyName] = FORM_DATA[keyName] + separator + keyValue;

        // Object already exists, it is probably a multi-select input,

        // and we need to generate a separator-delimited string

        // by appending to what we already have stored.

    } else {

      FORM_DATA[keyName] = keyValue;

        // Normal case: name gets value.

    }

  }

  return FORM_DATA;

}

FORM_DATA = createRequestObject();

  // This is the array/object containing the GET data.

  // Retrieve information with 'FORM_DATA [ key ] = value'.

 


