// függőségek
if ("undefined" == typeof AITIA) {
	alert("AITIA include missing!");
} else if ("undefined" == typeof AITIA_BROWSER) {
	alert("AITIA_BROWSER include missing!");
} else if ("undefined" == typeof AITIA_STYLE) {
	alert("AITIA_STYLE include missing!");
}

// többszörös include
if ("undefined" != typeof AITIA_POSITION) {
	 alert("AITIA_POSITION multiple insert!");
}

AITIA_POSITION = 1;

Aitia.Position = {};

/*
//ez megadja a bal felso sarok helyet
function getPos_old(node){
	var pos={top: 0, left:0};
	var node=node;
	while(node != null) {
		pos.left+=node.offsetLeft;
		pos.top+=node.offsetTop;
		node=node.offsetParent;
	}
	return pos;
}
*/

Aitia.Position.getPositionContent = function(el,scroll) {
	var pos = this.getPositionPadding(el,scroll);
	pos.top += Aitia.Style.getStyle(el,"padding-top",true);
	pos.left += Aitia.Style.getStyle(el,"padding-left",true);
	return pos;
} // getPositionContent

Aitia.Position.getPositionPadding = function(el,scroll) {
	var pos = this.getPositionBorder(el,scroll);
	pos.top += Aitia.Style.getStyle(el,"border-top-width",true);
	pos.left += Aitia.Style.getStyle(el,"border-left-width",true);
	return pos;
}

//scroll: 
//0 nem veszi figyelembe
//1 hozzaadja
//2 kivonja	NS getEventRelativePos-hoz ez kell
Aitia.Position.getPositionBorder = function(oriEl,scroll) {
	var pos = {top: 0, left:0};
	var el = oriEl;
	var absolute = false;
	var i = 0;
	var borderTopWidthSum = 0;
	var borderLeftWidthSum = 0;

	if (el) {
		while(null != el) {
			++i;
			if (1 != i) {
				//nem az eredeti node-nal vagyunk mar
				borderTopWidthSum += Aitia.Style.getStyle(el,"border-top-width",true);
				borderLeftWidthSum += Aitia.Style.getStyle(el,"border-left-width",true);
			}
			pos.top += el.offsetTop;
			pos.left += el.offsetLeft;
		
			if (Aitia.Browser.nsDom && el != oriEl && "auto" == Aitia.Style.getStyle(el,"overflow")) {
				pos.left = pos.left + 2 * Aitia.Style.getStyle(el,"border-left-width",true);
				pos.top = pos.top + 2 * Aitia.Style.getStyle(el,"border-top-width",true);
			}

			if (1 == scroll) {
				if (el.scrollLeft) {
					pos.left += el.scrollLeft;
				}
				if (el.scrollTop) {
					pos.top += el.scrollTop;
				}
			} else if (2 == scroll) {
				if (el.scrollLeft) {
					pos.left -= el.scrollLeft;
				}
				if (el.scrollTop) {
					pos.top -= el.scrollTop;
				}
			}

			//ha div-ben van absolute, akkor a div pozicioja lesz neki az origo, tehat nem kene absolute-nal megallni
			// most ez disable
			if (false && Aitia.Style.getStyle(el,"position") == "absolute") {
				//itt lehetne offset ertekek helyett top es left getStyle is, de akkor meg a margint is hozza kellene adni
				//szoval ez igy gyorsabb es jobb szerintem
				absolute = true;
				el = null;
			} else {
				el = el.offsetParent;
			}
		}
		if (Aitia.Browser.ieDom || absolute) {
			pos.left = pos.left + borderLeftWidthSum;
			pos.top = pos.top + borderTopWidthSum;
			//IE a max(parent.padding-top,el.margin-top) tavolsagot renderel fuggolegesen (vizszintesnel osszeadodnak)			
			//ezzel nem torodunk, ugy vesszuk, hogy megkapta a el.margin-top tavolsagot
		} else if (Aitia.Browser.nsDom) {
			//negativ, ha van border, egyszer lejott ezert ketszer hozza kell adni
			pos.left = pos.left - 2 * document.body.offsetLeft;
			pos.top = pos.top - 2 * document.body.offsetTop;
		} else if (Aitia.Browser.operaDom) {				
			pos.left = pos.left + Aitia.Style.getStyle(document.body,"border-left-width",true);
			pos.top = pos.top + Aitia.Style.getStyle(document.body,"border-top-width",true);
			if ("textarea" == oriEl.tagName.toLowerCase() && Aitia.Style.getStyle(oriEl,"position") != "absolute") {
				pos.left += 3;
				pos.top += 3;
				//2 table-ben levo textarea-ra meg mindig nem franko teljesen
			}
		}
	}
	return pos;
} // getPositionBorder

Aitia.Position.getPositionMargin = function(el,scroll,relative,scroll) {
	var pos = this.getPositionBorder(el,scroll);
	pos.top -= Aitia.Style.getStyle(el,"margin-top",true);
	pos.left -= Aitia.Style.getStyle(el,"margin-left",true);
	return pos;
} // getPositionMargin





//content poziciojat adja meg pos
Aitia.Position.setPositionContent = function(el,pos,relative,scroll) {
	pos.top -= Aitia.Style.getStyle(el,"padding-top",true);
	pos.left -= Aitia.Style.getStyle(el,"padding-left",true);
	return this.setPositionBorder(el,pos,relative,scroll);
} // setPositionContent


//padding poziciojat adja meg pos
Aitia.Position.setPositionPadding = function(el,pos,relative,scroll) {
	pos.top -= Aitia.Style.getStyle(el,"border-top-width",true);
	pos.left -= Aitia.Style.getStyle(el,"border-left-width",true);
	return this.setPositionBorder(el,pos,relative,scroll);
} // setPositionPadding

//border poziciojat adja meg pos
Aitia.Position.setPositionBorder = function(el,pos,relative,scroll) {
	pos.top -= Aitia.Style.getStyle(el,"margin-top",true);
	pos.left -= Aitia.Style.getStyle(el,"margin-left",true);
	return this.setPositionMargin(el,pos,relative,scroll);
} // setPositionBorder

//box poziciojat adja meg pos
//ez a box-modelt mozgatja
//mozgatas
//ha relative=true, akkor szimplan egyenlove teszi a pozicioval
//ha relative=false, akkor ugy veszi, hogy document 0,0-hoz szamit a pozicio (csak absolute eseten van ertelme)
//scroll: 
//			 0 nem veszi figyelembe
//			 1 kivonja
//			 2 hozzaadja
Aitia.Position.setPositionMargin = function(el,pos,relative,scroll) {
	relative = (relative == null ) ? false : relative;
	//nem body-hoz adom meg a pos-t, hanem absolute parent-hez
	//position:relative eseten is hasznos
	scroll = (scroll == null) ? 0 : scroll; 

	var left = pos.left;
	var top = pos.top;
	var moved = true;

	if (relative == false && Aitia.Style.getStyle(el,"position") == "absolute") {
		var parent = el.offsetParent;
		//elso absolute szulo poziciojat le kell vonni, mert absolute szulo bal felso sarka lesz az origo
		while(parent) {
			//scroll alapbol hozzaadodik
		 
			if (1 == scroll) {
				if (parent.scrollLeft) {
					left -= parent.scrollLeft;
				}
				if (parent.scrollTop) {
					top -= parent.scrollTop;
				}
			} else if (2 == scroll) {
				if (parent.scrollLeft) {
					left += parent.scrollLeft;
				}
				if (parent.scrollTop) {
					top += parent.scrollTop;
				}
			}

			if (Aitia.Style.getStyle(parent,"position") == "absolute") {
				var parentPos = this.getPositionContent(parent); 
				left -= parentPos.left;
				top -= parentPos.top;
				parent = null;
			} else {
				parent = parent.offsetParent;
			}
		}
	}
	el.style.left = left + "px";
	el.style.top = top + "px";
	
	return moved;
} // setPositionMargin



//aktualis scroll pozicio
// parameter nelkul: aktualis ablak
// parameterrel: adott element
Aitia.Position.getScrollPosition = function(el) {
	var pos={top: 0, left: 0};
 
	if (null == el) {
		// ablak
		if (document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollLeft)) { 
			// Explorer 6 Strict and mozilla strict
			pos.left = document.documentElement.scrollLeft;
			pos.top = document.documentElement.scrollTop;
		} else if (self.pageYOffset) {// all except Explorer
			pos.left = self.pageXOffset;
			pos.top = self.pageYOffset;
		} else if (document.body) { // all other Explorers
			pos.left = document.body.scrollLeft;
			pos.top = document.body.scrollTop;
		}
	} else {
		// element		
		pos.left = el.scrollLeft;
		pos.top = el.scrollTop;
	}
	
	return pos;
} // getScrollPosition


// a böngészőablak renderelési területének magasságát adja vissza
Aitia.Position.getInnerHeight = function() {
	var myHeight = 0;
	if (typeof(window.innerWidth) == 'number') {
		//Non-IE
		myHeight = window.innerHeight;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
		//IE 6+ in 'standards compliant mode'
		myHeight = document.documentElement.clientHeight;
	}
	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myHeight = document.body.clientHeight;
	}
	return myHeight;
}


// a böngészőablak renderelési területének szélességét adja vissza
Aitia.Position.getInnerWidth = function() {
	var myWidth = 0;
	if (typeof(window.innerWidth) == 'number') {
		//Non-IE
		myWidth = window.innerWidth;
	}
	else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
	}
	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
	}
	return myWidth;
} // getScrollPosition

