Utils = {
	ROOT:'http://www.inframap.hu',

	getEventSource:function(e){
		e || (e = window.event);            
		if(typeof e.target != 'undefined')
        {
			return e.target;             
        }      
        else if(typeof e.srcElement != 'undefined')
        {
			return e.srcElement;                 
        }
		else
		{
			return true;
		}
	},

	eventStop:function(e){ 
	    if (e.preventDefault) 
		{
			e.preventDefault();
			e.stopPropagation();
		}	 
		else 
		{
			e.returnValue = false;
			e.cancelBubble = true;
		}  
	},

	pointerX:function(e){
		return e.pageX || (e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
	},

	pointerY:function(e){
		return e.pageY || (e.clientY +(document.documentElement.scrollTop || document.body.scrollTop));
	},

	cumulativeOffset:function(element) 
	{
		var valueT = 0, valueL = 0;
		do {
			valueT += element.offsetTop  || 0;
		    valueL += element.offsetLeft || 0;
		    element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
	},

	findParent:function(element, tagName) 
	{
		var element = element;
		while (element.parentNode && (!element.tagName ||(element.tagName.toUpperCase() != tagName.toUpperCase())))
		{
			element = element.parentNode;
		}  
		return element;
	},

    addEvent:function(obj, evType, fn)
    {	
	    if(obj.addEventListener)
		{   
		    obj.addEventListener(evType, fn, false);return true;
		}
		else if(obj.attachEvent)
		{
			var r=obj.attachEvent("on"+evType, fn);return r;
		}
		else
		{
			return false;
		}
	},
		
	IE:function(){
		var browser=navigator.appName
        var b_version=navigator.appVersion
        var version=parseFloat(b_version)
        if ((browser == "Microsoft Internet Explorer"))
			return true; 
		else
			return false;
	},

    printf:function(S, L){
       var nS = "";
       var tS = S.split("%s");
       if (tS.length != L.length+1) throw "Input error"; 
       for(var i=0; i<L.length; i++)
          nS += tS[i] + L[i];
       return nS + tS[tS.length-1];
   }   
}

function $(n)
{
   return document.getElementById(n);
}

var language = null;
function $lang(n)
{
	var l = language.SelectSingleNode("/doc/lang[@name='"+n+"']")
	return (l?l.firstChild.nodeValue:n)
}

	function FadeIn(element, opacity) 
{
	var reduce_opacity_by = 15; //15
	var rate = 15;	// 15 fps - 30
	if (opacity < 100) {
		opacity += reduce_opacity_by;
		if (opacity > 100) opacity = 100;

		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) {
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}

	if (opacity < 100) {
		setTimeout(function() { FadeIn(element, opacity); }, rate);
	}
}

function FadeOut(element, opacity) 
{
	var reduce_opacity_by = 5; //15
	var rate = 15;	// 15 fps 
	if (opacity > 0) {
		opacity -= reduce_opacity_by;
		if (opacity <= 0) 
		{
			opacity = 0;
			element.style.display = 'none';
		}

		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) {
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}	

	if (opacity < 100) {
		setTimeout(function() { FadeOut(element, opacity); }, rate);				
	}
}