var tf_DOM = 
{
	$: function(objId)
	{
		return document.getElementById(objId);
	},
	
	$$: function(objName)
	{
		return document.getElementsByName(objName);
	},
	
	$_tag: function(objTagName)
	{
		return document.getElementsByTagName(objTagName);
	},
	
	get_WH: function(cObj)
	{
		if(!cObj) return false;
		var xPos = cObj.offsetWidth;
		var yPos = cObj.offsetHeight;
		return [xPos, yPos];
	},

	get_LT: function(cObj)
	{
		if(!cObj) return false;
		var xPos = cObj.offsetLeft;
		var yPos = cObj.offsetTop;
		tempEl = cObj.offsetParent;
			while (tempEl != null) 
			{
				xPos += tempEl.offsetLeft;
				yPos += tempEl.offsetTop;
		  		tempEl = tempEl.offsetParent;
	  		}
		return [xPos, yPos];
	},
	
	get_MCoords: function(e)
	{
		var xPos = 0;
		var yPos = 0;
		if(!e) var e = window.event;
		if(e.pageX || e.pageY)
		{
			xPos = e.pageX;
			yPos = e.pageY;
		}
		else if(e.clientX || e.clientY)
		{
			xPos = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			yPos = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}
		return [xPos, yPos];
	},

	
	/*CREATE ELEMENT*/
	CE: function(eTag, eId, eName)
	{
		var cObj = document.createElement(eTag);
		if(cObj)
		{
			if(eId)
				cObj.setAttribute('id', eId);
			if(eName)
				cObj.setAttribute('name', eName);
		}
		return cObj;
	},
	
	/*APPEND ELEMENT*/
	AE: function(cObj, parentNode)
	{
		if(parentNode)
			parentNode.appendChild(cObj);
		else	
			document.body.appendChild(cObj);
	},
	
	/*REMOVE ELEMENT*/
	RE: function(cObj) 
	{
		cObj.parentNode.removeChild(cObj);
	},
	
	/* DROP ELEMENT*/
	/*DE: function(cObj) 
	{
		cObj.parentNode.removeChild(cObj);
	},*/
	
	/*SHOW ELEMENT*/
	SE: function(cObj, display) 
	{
		cObj.style.visibility = 'visible';
		if(display)
			cObj.style.display = display;
	},
	
	/*HIDE ELEMENT*/
	HE: function(cObj, display) 
	{
		cObj.style.visibility = 'hidden';
		if(display)
			cObj.style.display = display;
	},
	
	/*OPACITY ELEMENT*/
	OE: function(cObj, value)
	{
		cObj.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + value + ')';
		cObj.style.opacity = value / 100;
	},
	
	// 0 100 => show 100 0 => hide
	SAE: function(cObj, display, startOp, stopOp, step, rate, fn) 
	{
		this.SE(cObj, display);
		if(startOp <= stopOp)
		{ 
			this.OE(cObj, startOp);
			startOp += step;
			
			var obj = this;
			setTimeout(function() { obj.SAE(cObj, display, startOp, stopOp, step, rate, fn); }, rate);
		}
		else
			if(typeof fn == 'function')
				fn();
	},
	
	HAE: function(cObj, display, startOp, stopOp, step, rate, fn)
	{
		if(startOp >= stopOp)
		{ 
			this.OE(cObj, startOp);
			startOp -= step;
			
			var obj = this;
			setTimeout(function() { obj.HAE(cObj, display, startOp, stopOp, step, rate, fn); }, rate);
		}
		else
		{
			this.HE(cObj, display);
			if(typeof fn == 'function')
				fn();
		}	
	},
	
	addEvent: function(cObj, evType, fn, useCapture)
	{
	    if(cObj.addEventListener) 
	    {
	        cObj.addEventListener(evType, fn, useCapture);
	    	return true;
	    }
	    else if(cObj.attachEvent)
	    {
	        var r = cObj.attachEvent('on' + evType, fn);
	        return r;
	    }
	    else 
	    	cObj['on' + evType] = fn;
	}
};
