window.escape = function (s) {
	return encodeURIComponent(s);
}

window.unescape = function (s) {
	return decodeURIComponent(s);
}

function $(id) {
	return document.getElementById(id);
}

function switchElement(id) {
	if($(id))
	{
		if($(id).style.display == 'none')
			$(id).style.display = 'block';
		else
			$(id).style.display = 'none';
	}
}

function switchString(id) {
	if($(id))
	{
		if($(id).style.display == 'none')
			$(id).style.display = '';
		else
			$(id).style.display = 'none';
	}
}


function selectElement(id, city, name) {
	if($(name + '_selected'))
	{
		$(name + '_selected').innerHTML = city;
	}
	if($(name + '_value'))
	{
		$(name + '_value').value = id;
	}
	switchElement(name + '_table');
}


function absPosition(obj) { 
      var x = y = 0; 
      while(obj) { 
            x += obj.offsetLeft; 
            y += obj.offsetTop; 
            obj = obj.offsetParent; 
      } 
      return {x:x, y:y}; 
} 

var locationHash = {
	'get_hash': function (s) {
		var p, o = {}, w = window.location, h = (s || (w.search.substr(1) + '&' + w.hash.substr(1))), pairs = h.split('&');
		for (var i = 0, l = pairs.length; i < l; i++) {
			if (pairs[i].length) {
				p = pairs[i].split('=');
				o[ p.shift() ] = p.join('=');
			}
		}
		return o;
	},
	
	'to_query': function (o) {
		var y = [];
		for (var i in o) {
			y.push([i, o[i]].join('='));
		}
		return y.join('&');
	},
	
	'get': function (k, s) {
		return this.get_hash(s)[k];
	},
	
	'store': function (k, v, noAdd) {
		var o = this.get_hash();
		if ('object' == typeof k) {
			for (var i in k)
				o[i] = k[i];
			noAdd = v;
		}
		else
			o[ k ] = v;
		var q = this.to_query(o);
		if (!noAdd) window.location.hash = q;
		return q;
	},

	'only': function (k, v, noAdd) {
		var o = {};
		if ('object' == typeof k) {
			o = k;
			noAdd = v;
		}
		else
			o[ k ] = v;
		var q = this.to_query(o);
		if (!noAdd) window.location.hash = q;
		return q;
	}
}
