﻿/*!
 * Querystring manipulation using global namespace 'qstring'
 * Author: Michael Kinkaid
 */
 
if (typeof qstring == "undefined" || !qstring) {
    var qstring = {
    
        //url sans querystring
        domain:window.location.href.split('?')[0],
        
        //querystring parameters in object {}
        params:null,
        
        //populate this.params from full URL
        getparams : function(){
            if(this.params == null){
                var url = window.location.href;
                var paramstring = url.split('?').length > 0 ? url.split('?')[1] : '';
                if(paramstring != '' && paramstring != undefined){
                    nvpairs = paramstring.split('&').length > 0 ? paramstring.split('&') : '';
                    if(nvpairs != '' && nvpairs != undefined){
                        qstring.params = {};
                        
                        for(var i = 0; i < nvpairs.length; i++){
                            var nv = nvpairs[i].split('=');
                            if(nv.length > 0){
                                this.params[nv[0]] = nv[1];
                            }                            
                        }
                                  
                        return this.params; 
                    }
                    else{
                        this.params = new Object();
                        return this.params;
                    }
                }
                else{
                    this.params = new Object();
                    return this.params;
                }              
            } 
        },
        
        //Add values to the querystring params
        add:function(param){
            if(this.params == null){
                this.getparams();
            }
            
            for (attrname in param){
                this.params[attrname] = param[attrname];
            }
            return this;
        },
        
        //Remove values from querystring params
        remove:function(param){
            if(this.params == null){
                this.getparams();
            }
                    
            for (attrname in param){
                delete this.params[attrname];
            }        
            return this;
        },
        
        //Convert querystring params to full url
        toString:function(param){
            if(this.params == null){
                this.getparams();
            }
            
            var newdomain = this.domain;
                    
            if(this.params != {}){
                newdomain += '?';
                for (attrname in this.params){
                    newdomain += attrname + "=" + this.params[attrname] + '&';
                }
                newdomain = newdomain.substring(0,(newdomain.length - 1));                     
            }
            return newdomain;
        }
    };
}
