function HrefManager(hrefStr) {

	//this.HREF_PARAMS = this.parseURL();
	this.HREF_PARAMS = null;
	this.BASE_HREF = null;
	//this.FULL_HREF = null;
	
	this.init = function(){
	
		this.HREF_PARAMS = new Object();
		
		var separator = ',';
		var query = '' + hrefStr;
		
		//this.FULL_HREF = '' + hrefStr;
		this.BASE_HREF = query.indexOf('?') == -1 ? query : query.substring(0, query.indexOf('?'));
		
		var qu = query;
		query = query.substring((query.indexOf('?')) + 1);
		if (query.length < 1) 
			return

		
		var keypairs = new Object();
		var numKP = 1;
	
		while (query.indexOf('&') > -1) {
			keypairs[numKP] = query.substring(0,query.indexOf('&'));
			query = query.substring((query.indexOf('&')) + 1);
			numKP++;
		}
		keypairs[numKP] = query;
		
		for (i in keypairs) {
			var keyName = keypairs[i].substring(0,keypairs[i].indexOf('='));
			var keyValue = keypairs[i].substring((keypairs[i].indexOf('=')) + 1);
			
			while (keyValue.indexOf('+') > -1) 
				keyValue = keyValue.substring(0,keyValue.indexOf('+')) + ' ' + keyValue.substring(keyValue.indexOf('+') + 1);
				
			keyValue = unescape(keyValue);
			
			keyValue = keyValue.indexOf("#") != -1 ? keyValue.substring(0, keyValue.indexOf("#")) : keyValue;
			
			if (this.HREF_PARAMS[keyName]) 
				this.HREF_PARAMS[keyName] = this.HREF_PARAMS[keyName] + separator + keyValue;
			 
			else 
				this.HREF_PARAMS[keyName] = keyValue;
			
		}
	};
	
	this.init();
	
	//return href without the specified params
	this.getHref = function(exclusionArray){
		
		var new_href = ''+this.BASE_HREF;
		
		var exp = new RegExp('^(?:' + exclusionArray.join('|') + ')$');
		for(i in this.HREF_PARAMS)
			if (! exp.test( (''+i) ))
				new_href += (new_href.indexOf("?") != -1 ? "&" : "?") +i+"="+this.HREF_PARAMS[i];
		
		alert(new_href);
		return new_href;
	};
	
	
	//appends or replaces params
	this.appendOrReplace = function(appendParamArray){
		var new_href = ''+this.BASE_HREF;
		
		for(i in this.HREF_PARAMS)
			if(! (i in appendParamArray))
				new_href += (new_href.indexOf("?") != -1 ? "&" : "?") +i+"="+this.HREF_PARAMS[i];
				
		for(i in appendParamArray)			
			new_href += (new_href.indexOf("?") != -1 ? "&" : "?") +i+"="+appendParamArray[i];
		

		return new_href;
	}
}

