﻿    // Constructor: QueryString
    // purpose: Parses Query String
    // create date: 09-08-2006
    // create by: John Kane
    function Location(address)
    {
        if ( address.indexOf("?") >= 0 )
        {
            var addressSplit = address.split("?");
            this.address = addressSplit[0];
            this.queryString = addressSplit[1];
            this.RequestList = new Array();
            
            // Parse Query String
            
            var arrayCounter = 0;
            var stringRemaining = this.queryString;
            while ( stringRemaining.length > 0 )
            {
                var stringToAdd = "";
                if ( stringRemaining.indexOf("&") >= 0 )
                {
                    stringToAdd = stringRemaining.substring(0, stringRemaining.indexOf("&"));
                    stringRemaining = stringRemaining.substring(stringRemaining.indexOf("&") + 1);
                }
                else
                {
                    stringToAdd = stringRemaining;
                    stringRemaining = "";
                }
            
                if ( stringToAdd.indexOf("=") >= 0 )
                {
                    var parameterSplit = stringToAdd.split("=");
                    this.RequestList[arrayCounter] = new QueryStringParameter(parameterSplit[0], parameterSplit[1]);
                    arrayCounter = arrayCounter + 1;
                }
            }
        }
        else
        {
            this.address = address;
            this.queryString = "";
            this.RequestList = new Array();
        }    
    }

    // function: QueryStringParameter
    // purpose: Manages Parameters
    // create date: 09-08-2006
    // create by: John Kane
    function QueryStringParameter(name, value)
    {
        this.name = name;
        this.value = value;
        
        //window.alert(name + "=" + value);
    }

    // function: AddParameter
    // purpose: Adds a Parameter to Request
    // create date: 09-08-2006
    // create by: John Kane
    function AddRequestParameter(name, value)
    {
        var requestCounter = 0;
        var nameFound = false;
        while ( requestCounter < this.RequestList.length )
        {
            if ( this.RequestList[requestCounter].name == name )
            {
                this.RequestList[requestCounter].value = value;
                nameFound = true;
            }
            requestCounter = requestCounter + 1;
        }
        
        if ( !nameFound )
        {
            this.RequestList[requestCounter] = new QueryStringParameter(name, value);   
        }
    }

    // function: ToQueryString
    // purpose: Appends Query String
    // create date: 09-08-2006
    // create by: John Kane
    function ToQueryString()
    {
        if ( this.RequestList.length > 0 )
        {
            var newAddress = this.address + "?";
            var requestCounter = 0;
            while ( requestCounter < this.RequestList.length )
            {
                if ( requestCounter == 0 )
                    newAddress = newAddress + "" + this.RequestList[requestCounter].name + "=" + this.RequestList[requestCounter].value;
                else
                    newAddress = newAddress + "&" + this.RequestList[requestCounter].name + "=" + this.RequestList[requestCounter].value;
                
                 requestCounter = requestCounter + 1;
            }
            return newAddress;
        }
        else
        {
            return this.address;
        }
    }
    
    function Request(name)
    {
        var requestCounter = 0;
        var nameFound = false;
        while ( requestCounter < this.Request.length )
        {
            if ( this.RequestList[requestCounter].name == name )
            {
                return this.RequestList[requestCounter].value;
            }
            requestCounter = requestCounter + 1;
        }
        return "";
    }

    function Redirect()
    {
        window.location.href = this.toString();
    }
    

    Location.prototype.toString = ToQueryString;
    Location.prototype.AddRequestParameter = AddRequestParameter;
    Location.prototype.Redirect = Redirect;
    Location.prototype.Request = Request;
    
    var Page = new Location(window.location.href.toString());
   