function Blink(id, ms)
{
	var instance = this;
	var node;
	var state = false;
	var resInterval = 0;
	var oldStyles = new Array();
	var newStyle = arguments.length > 2 ? arguments[2] : {
		visibility: 'hidden'
	};
	var objs = new Array();
 
 
	var blinkById = function(id)
	{
		var obj = document.getElementById(id);
		obj.style.visibility = 'visible';
		var index;
		oldStyles.push({});
		for (index in newStyle)
		{
			oldStyles[0][index] = obj.style[index];
		}
		objs.push(obj);
	}
 
	var blinkByClass = function(id)
	{
		//objektumok lekérdezése
		var all = node.getElementsByTagName('*');;
		var i;
		var reg = new RegExp('\\b'+id+'\\b');
		for (i = all.length-1; i >= 0; i--)
		{
			var obj = all[i];
			if (!reg.test(obj.className))
			{
				continue;
			}
			obj.style.visibility = 'visible';
			var index;
			for (index in newStyle)
			{
				var os = {};
				os[index] = obj.style[index];
				oldStyles.push(os);
			}
			objs.push(obj);
		}
	}
 
	instance.blink = function()
	{
		if (arguments.length)
		{
			node = arguments[0].substr ? document.getElementById(arguments[0]) : arguments[0];
		}
		else
		{
			node = document.getElementsByTagName('body')[0];
		}
		if (!resInterval)
		{
			var ch = id.charAt(0);
			if (ch == '.')
			{
				blinkByClass(id.substr(1));
			} 
			else
			{
				if (ch == '#')
				{
					blinkById(id.substr(1));
				} 
				else
				{
					blinkById(id);
				}
			}
		}
		var i;
 
		for (i=objs.length-1; i >= 0; i--)
		{
			var tmpStyle = state ? oldStyles[i] : newStyle;
			var index;
			for(index in newStyle)
			{
				objs[i].style[index] = tmpStyle[index];
			}
		}
		state = !state;
		if (!resInterval)
		{
			resInterval = setInterval(instance.blink, ms);
		}
	}			
 
	instance.stop = function()
	{
		if(resInterval)
		{
			clearInterval(resInterval);
			resInterval = 0;
		}
	}
}


