
map.Support = {};

map.Support.visibility = function(element, isVisible){
	if(element != null){
		element.style['visibility'] = isVisible ? 'visible' : 'hidden';
	}
};

map.Support.getSourceEvent = function(ev){
	return ev ? ev : window.event;
};

map.Support.getSourceElement = function(ev){
	var ev = map.Support.getSourceEvent(ev);
	return ev.target ? ev.target : ev.srcElement;
};

map.Support.getElement = function(id){
	return document.getElementById(id);
};

map.Support.getBody = function(){
	return document.getElementsByTagName('body')[0];
};

//---

map.Support.addEventListener = function(element, evname, func, capture){
	if(element.attachEvent) // IE
		element.attachEvent('on' + evname, func);
	else if(element.addEventListener) // Gecko / W3C
		element.addEventListener(evname, func, capture);
	else
		element['on' + evname] = func;
};

//---

map.Support.replacePattern = function(string, values){
	for(var i in values){
		var re = new RegExp('{' + i + '}', 'g');
		string = string.replace(re, values[i]);
	}
	return string;
};

//---

map.Support.debug = function(message){
	document.getElementById('debug').innerHTML = message;
};