if ( is.opera7 )
	eventBinding ( document, true, 'load', init, true );
else 
	eventBinding ( window, true, 'load', init, true );

function init() {
	if ( !is.ie ) {
		var elHeader = document.getElementById( 'pg-header' );
		var elMain   = document.getElementById( 'pg-main' );
		var elFooter = document.getElementById( 'pg-footer' );
		getViewport();
		if ( window.strictInnerHeight > ( elHeader.offsetHeight + elMain.offsetHeight + elFooter.offsetHeight ) ) {
			elMain.style.height = window.strictInnerHeight - elHeader.offsetHeight - elFooter.offsetHeight + "px";
		}
	}
	
	headerMenu.setConfig();
	headerMenu.init();

	innerMenu.setConfig();
	innerMenu.init();
}

var headerMenu = {
	version : '1.0',
	nodeNames : {
		ul : 'ul',
		label : 'span',
		li : 'li'
	},
	classNames : {
		reg : /menu-popup/i,
		subitem : 'menu-popup-sub-item',
		item : 'menu-popup-item'
	},
	init : function() {
		var elsUL, elsA, i, bMenu = false;

		function setUnselectable( node ) {
			if ( is.ie ) {
				node.setAttribute('unselectable', true );
				node.setAttribute('hidefocus', true)
			}
			if ( is.gecko ) {
				node.style.MozUserSelect = 'none';
				node.style.MozUserFocus = 'none';
			}
		}

		elsA = document.getElementsByTagName('A');
		for ( i = 0; i < elsA.length; i++ ) {
			if ( headerMenu.classNames.reg.test( elsA[i].className ) ) {
				eventBinding( elsA[i], true, 'mouseover', headerMenu.popUpMenu, false );
				setUnselectable( elsA[i] );
				bMenu = true;
				if ( getNextElement( elsA[i] ) && getNextElement( elsA[i] ).tagName.toLowerCase() == headerMenu.nodeNames.ul ) {
					elsUL = getNextElement( elsA[i] );
					if ( !( is.ie5 && is.mac ) ) {
						elsUL.style.visibility = 'hidden';
						elsUL.style.display = 'block';
						elsUL.style.width = 175 + 'px';
						elsUL.style.height = elsUL.offsetHeight + 'px';
						elsUL.style.display = 'none';
						elsUL.style.visibility = 'visible';
					}
					else { // ie5Mac hiba, hogy ablakszélességre nyitja ki, és nem csak a beltartalom szélességére
						elsUL.style.width = 175 + 'px';
					}
				}
			}
		}
		if ( bMenu ) {
			eventBinding( document, true, 'mousedown', headerMenu.popUpMenu, false );
		}
	},
	setConfig : function() {
		popUpMenuClickFlag = false;
		FORCE_IE_EVENTBINDING = true;
	},
	popUpMenu : function( e ) {
		var elTarget, elItem, elSub, elBar, i, rootEl;
		function getSrcElement( node ) {
			if ( node.tagName == 'BODY' ) {
				return null;
			}
			if ( headerMenu.classNames.reg.test( node.className ) ) {
				return node;
			}
			else {
				return getSrcElement( node.parentNode );
			}
		};
		function getElSub( elItem ) {
			return getNextElement( elItem );
		};
		function getElBar( elItem ) {
			if ( String( elItem ) == 'undefined' || !elItem ) {
				return getFirstElement( document.getElementById( 'header-menu' ) );
			}
			else if ( elItem.nodeType == 1 && elItem.tagName.toLowerCase() == headerMenu.nodeNames.ul ) {
				return elItem;
			}
			else {
				return getElBar( elItem.parentNode );
			}
		};
		function setActive( elItem ) {
			elItem.className = elItem.className + '-active';
		};
		function setInactive( elItem ) {
			elItem.className = elItem.className.substring( 0, elItem.className.length - 7 );
		};
		function wiewMenu( elBar, elItem, elSub ) {
			var itemLeft, itemTop, itemWidth, itemHeight, subWidth, subHeight, winWidth, winHeight, winTop;
			// értékátvétel
			elSub.style.visibility = 'hidden';
			elSub.style.display = 'block';
			getWindowDimension();
			createFullOffset( elItem );
			createFullOffset( elItem.parentNode.parentNode );
			itemLeft = elItem.offsetX - elItem.parentNode.parentNode.offsetX;
			itemTop = elItem.offsetY - elItem.parentNode.parentNode.offsetY;
			itemWidth = elItem.offsetWidth;
			itemHeight = elItem.offsetHeight;
			subWidth = elSub.offsetWidth;
			subHeight = elSub.offsetHeight;
			winWidth = window.strictInnerWidth;
			winHeight = window.strictInnerHeight;
			winTop = window.strictScrollTop;
			if ( elBar.parentNode.id == 'header-menu' ) {
				elSub.style.left = parseInt( itemLeft - 88 + ( itemWidth / 2 ) ) + 'px';
				elSub.style.top  = parseInt( itemTop + 10 + itemHeight ) + 'px';
			}
			else { // leftre állítás
				if ( itemLeft + itemWidth + subWidth < winWidth ) // normál bal
					elSub.style.left = itemLeft + itemWidth - 30 + 'px';
				if ( itemLeft + itemWidth + subWidth >= winWidth ) // képernyőre jobb oldalra való helyezés
					elSub.style.left = winWidth - subWidth - 30 + 'px';
				elSub.style.top = itemTop + 'px';
				if ( subHeight > winHeight ) { // scroll
					if ( !is.opera7 || !( is.ie5 && is.mac ) ) {
						elSub.style.top = winTop + 2 + 'px';
						elSub.realHeight = elSub.style.height; // hogy vissza lehessen állítani az eredeti magasságát becsukáskor
						elSub.style.height = winHeight - 4 + 'px';
					}
					else { // opera7-ben ismeretlen hiba miatt nem megy a scroll, ie5Mac-ben is tiltva van
						elSub.style.top = winTop + 2 + 'px';
					}
				}
			};
			if ( !is.ie5 ) {
				elSub.style.zIndex = ( 1 + getComputedStylePropertyValue( elBar, 'z-index', '' ) )
			}
			elSub.style.visibility = 'visible';
			setActive( elItem );
			elBar.activeItem = elItem;
		}
		function closeMenu( activeItem ) {
			var elSub, elBar;
			elBar = getElBar( activeItem );
			elSub = getElSub( activeItem );
			if ( getElBar( elSub ).activeItem != null ) {
				closeMenu( getElBar( elSub ).activeItem );
			}
			elSub.style.display = 'none';
			elSub.style.visibility = 'hidden';
			if ( is.ie5 && is.mac ) {
				document.body.style.backgroundColor = 'white'
				document.body.style.backgroundColor = 'black'
				document.body.style.backgroundColor = 'white'
			}
			setInactive( activeItem );
			elBar.activeItem = null;
		}
		if ( !e ) e = window.event;
		if ( is.gecko || is.opera7 || is.saf ) {
			elItem = e.target;
			if ( elItem.nodeType == 3 ) {
				elItem = elItem.parentNode;
			}
			e.stopPropagation();
		}
		else if ( is.ie ) {
			elItem = getSrcElement( window.event.srcElement );
			window.event.cancelBubble = true;
		}
		if ( ( !elItem || elItem.tagName.toLowerCase() != 'a' ) && ( e.type == 'mousedown' || e.type == 'resize' ) ) {
			rootEl = getFirstElement( document.getElementById('header-menu') );
			if ( rootEl.activeItem != null ) {
				closeMenu( rootEl.activeItem );
			}
			popUpMenuClickFlag = false;
			return;
		}
		if ( e.type == 'mouseover' ) 
			popUpMenuClickFlag = true;
		if ( popUpMenuClickFlag ) {
			elBar = getElBar( elItem );
			elSub = getElSub( elItem );
			if ( elBar.activeItem != null ) {
				if ( getElSub( elBar.activeItem ) == elSub ) {
					return false;
				}
				closeMenu( elBar.activeItem )
			}
			if ( elSub ) {
				wiewMenu( elBar, elItem , elSub )
			}
		}
	}
};

var innerMenu = {
	version : '1.0',
	nodeNames : {
		ul : 'ul',
		label : 'span',
		li : 'li'
	},
	classNames : {
		reg : /menu-roll/i,
		subitem : 'menu-roll-sub-item',
		item : 'menu-roll-item'
	},
	init : function() {
		var elsUL, elsA, i, bMenu = false;

		function setUnselectable( node ) {
			if ( is.ie ) {
				node.setAttribute('unselectable', true );
				node.setAttribute('hidefocus', true)
			}
			if ( is.gecko ) {
				node.style.MozUserSelect = 'none';
				node.style.MozUserFocus = 'none';
			}
		}

		elsA = document.getElementsByTagName('A');
		for ( i = 0; i < elsA.length; i++ ) {
			if ( innerMenu.classNames.reg.test( elsA[i].className ) ) {
				eventBinding( elsA[i], true, 'mousedown', innerMenu.popUpMenu, false );
				setUnselectable( elsA[i] );
				bMenu = true;
				if ( getNextElement( elsA[i] ) && getNextElement( elsA[i] ).tagName.toLowerCase() == innerMenu.nodeNames.ul ) {
					elsUL = getNextElement( elsA[i] );
					elsUL.style.display = 'none';
					elsUL.style.visibility = 'visible';
					if ( elsUL.className == 'menu-roll-active' ) {
						elsA[i].className       = elsA[i].className + '-active';
						elActiveItem            = getFirstElement( document.getElementById( 'main-menu' ) );
						elActiveItem.activeItem = getPreviousElement( elsUL );
						elsUL.style.display     = 'block';
					}
				}
			}
		}
	},
	setConfig : function() {
		popUpMenuClickFlag = false;
		FORCE_IE_EVENTBINDING = true;
	},
	popUpMenu : function( e ) {
		var elTarget, elItem, elSub, elBar, i, rootEl;
		function getSrcElement( node ) {
			if ( node.tagName == 'BODY' ) {
				return null;
			}
			if ( innerMenu.classNames.reg.test( node.className ) ) {
				return node;
			}
			else {
				return getSrcElement( node.parentNode );
			}
		};
		function getElSub( elItem ) {
			return getNextElement( elItem );
		};
		function getElBar( elItem ) {
			if ( String( elItem ) == 'undefined' || !elItem ) {
				return getFirstElement( document.getElementById( 'main-menu' ) );
			}
			else if ( elItem.nodeType == 1 && elItem.tagName.toLowerCase() == innerMenu.nodeNames.ul ) {
				return elItem;
			}
			else {
				return getElBar( elItem.parentNode );
			}
		};
		function setActive( elItem ) {
			elItem.className = elItem.className + '-active';
		};
		function setInactive( elItem ) {
			elItem.className = elItem.className.substring( 0, elItem.className.length - 7 );;
		};
		function wiewMenu( elBar, elItem, elSub ) {
			elSub.style.display = 'block';
			if ( !is.ie5 ) {
				elSub.style.zIndex = ( 1 + getComputedStylePropertyValue( elBar, 'z-index', '' ) )
			}
			elSub.style.visibility = 'visible';
			setActive( elItem );
			elBar.activeItem = elItem;
		}
		function closeMenu( activeItem ) {
			var elSub, elBar;
			elBar = getElBar( activeItem );
			elSub = getElSub( activeItem );
			if ( getElBar( elSub ).activeItem != null ) {
				closeMenu( getElBar( elSub ).activeItem );
			}
			elSub.style.display = 'none';
			elSub.style.visibility = 'hidden';
			if ( is.ie5 && is.mac ) {
				document.body.style.backgroundColor = 'white'
				document.body.style.backgroundColor = 'black'
				document.body.style.backgroundColor = 'white'
			}
			setInactive( activeItem );
			elBar.activeItem = null;
		}
		if ( !e ) e = window.event;
		if ( is.gecko || is.opera7 || is.saf ) {
			elItem = e.target;
			if ( elItem.nodeType == 3 ) {
				elItem = elItem.parentNode;
			}
			e.stopPropagation();
		}
		else if ( is.ie ) {
			elItem = getSrcElement( window.event.srcElement );
			window.event.cancelBubble = true;
		}
		if ( ( !elItem || elItem.tagName.toLowerCase() != 'a' ) && ( e.type == 'mousedown' || e.type == 'resize' ) ) {
			rootEl = getFirstElement( document.getElementById('main-menu') );
			if ( rootEl.activeItem != null ) {
				closeMenu( rootEl.activeItem );
			}
			popUpMenuClickFlag = false;
			return;
		}
		if ( e.type == 'mousedown' ) 
			popUpMenuClickFlag = true;
		if ( popUpMenuClickFlag ) {
			elBar = getElBar( elItem );
			elSub = getElSub( elItem );
			if ( elBar.activeItem != null ) {
				if ( getElSub( elBar.activeItem ) == elSub ) {
					return false;
				}
				closeMenu( elBar.activeItem )
			}
			if ( elSub ) {
				wiewMenu( elBar, elItem , elSub )
			}
		}
	}
}

