var StateSaver = {
	bind:function(obj, pars) {
		this.object = obj;
		this.params = pars;
	},
	load:function() {
		var params_str=window.location.hash.replace(/^#/, "");
		var _get=params_str.split('&');
		for(i=0;i<_get.length;i++) {
			a=_get[i].split('=');
			switch (this.params[a[0]]) {
				case 'b': this.object[a[0]] = true; break;
				case 'i': this.object[a[0]] = parseInt(a[1]); break;
//				case 'x': this.object[a[0]] = parseInt(a[1], 36); break;
				case 's': this.object[a[0]] = decodeURIComponent(a[1]); break;
				case 'a': this.object[a[0]] = a[1].split(','); break;
			}
		};
		this.check();
	},
	save:function() {
		var _get=[];
		for(p in this.params)
			if (this.object[p]) {
				switch (this.params[p]) {
					case 'b': _get.push(p); break;
					case 'i':
						n = this.object[p];
						if (n != 0) _get.push(p+'='+n);
					break;
/*					case 'x':
						n = Number(this.object[p]);
						if (n) _get.push(p+'='+n.toString(36));
					break;*/
					case 's': _get.push(p+'='+encodeURIComponent(this.object[p])); break;
					case 'a': if(eval(this.object[p].join('+')))_get.push(p+'='+this.object[p].join(',')); break;
				}
			}
		var params_str=_get.join('&');
		window.location.replace(
			window.location.href.replace(/^([^#]+)(#.*)?$/, "$1") + '#' + params_str
		);
	},
	check:function() {}
}