////////////////////////////////////////////////////////////////////////////////////////////
//
//	File:		smarts_dom.js
//	Author:		Alexander Jung
//	Copyright:	Copyright (c) 2007 Zebworx Interactive All Rights Reserved.
//	Datum:		11.2006
//
////////////////////////////////////////////////////////////////////////////////////////////

var smarts_dom=function(){
	//document.constructor.prototype.getStyle=function(){alert('test')};
};

smarts_dom.prototype.init=function(){}

smarts_dom.prototype.offsetTop=function(node){
	var _pos=node.offsetTop;

	if(!node.offsetParent){
		return _pos;
	}else{
		var _border=parseInt(node.style.borderTopWidth);
		_border=(isNaN(_border))?0:_border;

		return(_border+_pos+this.offsetTop(node.offsetParent));
	}
}

smarts_dom.prototype.offsetLeft=function(node){
	var _pos=node.offsetLeft;

	if(!node.offsetParent){
		return _pos;
	}else{
		var _border=parseInt(node.style.borderLeftWidth);
		_border=(isNaN(_border))?0:_border;

		return(_border+_pos+this.offsetLeft(node.offsetParent));
	}
}

smarts_dom.prototype.offset=function(node){
	var _posLeft=node.offsetLeft;
	var _posTop=node.offsetTop;

	if(!node.offsetParent){
		return {top:_posTop,left:_posLeft};
	}else{
		var _border=parseInt(node.style.borderLeftWidth);
		_border=(isNaN(_border))?0:_border;

		return {top:(_border+_posTop+this.offsetTop(node.offsetParent)),left:(_border+_posLeft+this.offsetLeft(node.offsetParent))};
	}
}

smarts_dom.prototype.getElementsByClassName=function(className){
	var _elements=(arguments[1]||document).getElementsByTagName('*');
	var _ret=new Array();

	for(var i=0;i<_elements.length;i++){
		if(_elements[i].className==className){
			_ret.push(_elements[i]);
		}
	}

	return _ret;
}

if(typeof window.event!='undefined'){
	smarts_dom.prototype.getMousePos=function(){
		return{
			x:window.event.clientX+document.body.scrollLeft-document.body.clientLeft,
			y:window.event.clientY+document.body.scrollTop-document.body.clientTop
		}
	};
}else{
	smarts_dom.prototype.getMousePos=function(e){
		return{x:e.pageX,y:e.pageY};
	};
}

smarts_dom.prototype.getMouseOffset=function(target,e){
	var ev=e||window.event;

	var element=SmartS_DOM.offset(target);
	var mouse=SmartS_DOM.getMousePos(ev);

	return{x:mouse.x-element.left,y:mouse.y-element.top};
}

if(document.defaultView && document.defaultView.getComputedStyle){
	smarts_dom.prototype.getStyle=function(element,property){
		return document.defaultView.getComputedStyle(element,'').getPropertyValue(property);
	}
}else{
	smarts_dom.prototype.getStyle=function(element,property){
		return element.currentStyle[property.replace(/\-(\w)/g,function(x,y){return y.toUpperCase()})];
	}
}

smarts_dom.prototype.stopevent=function(e){
	var ev=e||window.event;

	if(typeof ev.cancelBubble!='undefined' &&!ev.preventDefault){
		ev.cancelBubble=true;
		ev.returnValue=false;
	}else if(typeof ev.preventDefault!='undefined'){
		ev.preventDefault();
		ev.stopPropagation();
	}
}

smarts_dom.prototype.isEnclosedByTag=function(node,tagName){
	tagName=tagName.toLowerCase();

	while((node=node.parentNode)&&node.nodeName.toLowerCase()!=tagName);

	return node;
}

smarts_dom.prototype.setOpacity=function(obj,opacity){
	opacity=(opacity==100)?99.999:opacity;

	obj.style.filter='progid:DXImageTransform.Microsoft.Alpha(opacity='+opacity+');';
	obj.style.KHTMLOpacity = opacity/100;
	obj.style.MozOpacity = opacity/100;
	obj.style.opacity = opacity/100;
}

smarts_dom.prototype.mouseoutarea=function(ev){
	var toElement=null;
	if(ev.relatedTarget){
		toElement=ev.relatedTarget;
	}else if(ev.toElement){
		toElement=ev.toElement;
	}

	while(toElement&&toElement.tagName!='LI'){
		toElement=toElement.parentNode;
	}

	if(!toElement){
		alert('out of div');
	}
}

var SmartS_DOM=new smarts_dom();
