/* 
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'
