if(!Nibynic) {
	var Nibynic = { };
}

Nibynic.LocationHash = {
	getParams: function() {
		var parts = document.location.hash.replace(/^#!/, "").split('&');
		var params = {};
		
		for(var i=0; i<parts.length; i++) {
			var part = parts[i].split(':');
			if(part && part[0]) {
				params[part[0]] = part[1] ? part[1] : true;
			}
		}
		
		return params;
	},
	
	setParams: function(params) {
		var hash = [];

		for(key in params) {
			hash[hash.length] = key + ':' + params[key];
		};

		if(hash.length > 0) {
			document.location.hash = '#!' + hash.join('&');
		} else {
			document.location.hash = "";
		}
	},
	
	setParam: function(name, value) {
		var params = this.getParams();

		params[name] = value;

		this.setParams(params);
	},
	
	getParam: function(name) {
		var params = this.getParams();

		if(params[name]) {
			return params[name];
		} else {
			return false;
		}
	},
	
	removeParam: function(name) {
		var params = this.getParams();
		var hash = [];

		for(key in params) {
			if(key != name) {
				hash[hash.length] = key + ':' + params[key];
			}
		};

		if(hash.length > 0) {
			document.location.hash = '#!' + hash.join('&');
		} else {
			document.location.hash = "";
		}
	}
}
