function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

addLoadEvent(omgInit);

// General library

function omgPopup(url, winname, popw, poph, feat)
{
	var w = 800, h = 600, l, t;
	if(screen && screen.availWidth && screen.availHeight) {
		w = screen.availWidth;
		h = screen.availHeight;
	}
	l = (w - popw) / 2; t = (h - poph) / 2;
	if(feat) feat += ',';
	return window.open(url, winname, 'location=0,menubar=0,' + feat + 'width=' + popw + ',height=' + poph + ',left=' + l + ',top=' + t);
}

function omgElem(e) {
	return xGetElementById(e);
}

function omgValue(e, t) {
	if(!(e = xGetElementById(e))) return 0;
	if(xDef(t)) e.value = t;
	else t = e.value;
	return t;
}

function omgDisplay(e, t) {
	xDisplay(e, t);
}

function omgShow(e) {
	xVisibility(e, true);
}

function omgHide(e) {
	xVisibility(e, false);
}

// Portrait utility functions

function omgPortraitMoveHoriz(t) {
	xLeft(portraitObj, t);
	omgValue(portraitId + 'x', t);
	return t;
}
function omgPortraitMoveVert(t) {
	xTop(portraitObj, t);
	omgValue(portraitId + 'y', t);
	return t;
}
function omgPortraitAlignHoriz(t) {
	if(t == -1) t = 0;
	else if(t == 1) t = xWidth(portraitId + 'cont') - portraitObj.width - 2;
	else t = Math.floor((xWidth(portraitId + 'cont') - portraitObj.width - 2) / 2);
	xLeft(portraitObj, t);
	omgValue(portraitId + 'x', t);
	return t;
}
function omgPortraitAlignVert(t) {
	if(t == -1) t = 0;
	else if(t == 1) t = xHeight(portraitId + 'cont') - portraitObj.height - 2;
	else t = Math.floor((xHeight(portraitId + 'cont') - portraitObj.height - 2) / 2);
	xTop(portraitObj, t);
	omgValue(portraitId + 'y', t);
	return t;
}
function omgPortraitSize(t) {
	portraitObj.width = t;
	omgValue(portraitId + 'w', t);
	xInnerHtml(portraitId + 'zoom', Math.floor(100 * t / portraitOrigW) + '%');
	return t;
}
function omgPortraitMoveLeft() {
	omgPortraitMoveHoriz(xLeft(portraitObj) - 1);
}
function omgPortraitMoveRight() {
	omgPortraitMoveHoriz(xLeft(portraitObj) + 1);
}
function omgPortraitMoveUp() {
	omgPortraitMoveVert(xTop(portraitObj) - 1);
}
function omgPortraitMoveDown() {
	omgPortraitMoveVert(xTop(portraitObj) + 1);
}
function omgPortraitSizeDown() {
	omgPortraitSize(portraitObj.width - 1);
}
function omgPortraitSizeUp() {
	omgPortraitSize(portraitObj.width + 1);
}
function omgPortraitInit(e, orig) {
	portraitObj = e;
	portraitId = e.id;
	portraitOrigW = orig;
	omgPortraitMoveHoriz(portraitInitX = xLeft(portraitObj));
	omgPortraitMoveVert(portraitInitY = xTop(portraitObj));
	omgPortraitSize(portraitInitW = portraitObj.width);
	xEnableDrag(portraitId + 'cont', null, omgPortraitDrag, null);
	xEnableDrag(portraitId + 'magnify', null, omgPortraitZoom, null);
	xWidth(portraitId + 'zoom', 40);
}
function omgPortraitDrag(e, dx, dy) {
	var w, h;
	dx += xLeft(portraitObj);
	dy += xTop(portraitObj);
	w = xWidth(portraitObj);
	h = xHeight(portraitObj);
	if(dx < -w) dx = -w;
	if(dy < -h) dy = -h;
	w = xWidth(e);
	h = xHeight(e);
	if(dx > w) dx = w;
	if(dy > h) dy = h;
	xMoveTo(portraitObj, dx, dy);
	omgValue(portraitId + 'x', dx);
	omgValue(portraitId + 'y', dy);
}
function omgPortraitZoom(e, dx, dy) {
	omgPortraitSize(portraitObj.width - dy);
}
function omgPortraitReset() {
	omgPortraitStopTimer();
	omgPortraitMoveHoriz(portraitInitX);
	omgPortraitMoveVert(portraitInitY);
	omgPortraitSize(portraitInitW);
}
function omgPortraitStartTimer(func) {
	if(!portraitObj) return;
	omgPortraitStopTimer();
	func();
	portraitTimerId = setInterval(omgPortraitStart2ndTimer, 300);
	portraitTimerFunc = func;
}
function omgPortraitStart2ndTimer() {
	omgPortraitStopTimer();
	portraitTimerId = setInterval(portraitTimerFunc, 50);
}
function omgPortraitStopTimer() {
	if(typeof(portraitTimerId) != 'undefined') {
		clearInterval(portraitTimerId);
		delete portraitTimerId;
	}
}

var menuDivId = 'navItems';
var menuSubNavDivId = 'subnavigation';
var menuSubNavExt = 'sub_';
var menuClass = 'mainNavItem';
var menuClassOver = 'mainNavItemOver';
var menuClassActive = 'mainNavItemOn';
var menuActivateDelay = 100;
var menuDeactivateDelay = 3000;
var menuFadeDelay = 20;
var menuFadeSpeed = 0.35;
var menuIsInit = false;


// init menu & stuff
function omgInit() {
	if(menuIsInit) return;
	omgMenuInit(menuDivId, menuSubNavDivId);
	menuIsInit = true;
//	menuInit(menuDivId, menuSubNavDivId); // old menu functions in menu.js
}

function omgMenuInit(e, sub) {
	var i, node;
	e = xGetElementById(e);
	sub = xGetElementById(sub);
	if(!e || !sub) return;
	menuActiveItem = null;
	for(i = 0; i < e.childNodes.length; i++) {
		node = e.childNodes[i];
		if(node.attributes) {
			node.onmouseover = omgMenuItemOver;
			node.onmouseout = omgMenuItemOut;
			if(window.location.search == '?q') xLeft(menuSubNavExt + node.id, node.offsetLeft - e.offsetLeft);
			if(node.className == menuClassActive) menuActiveItem = node;
		}
	}
	sub.onmouseover = omgMenuAreaOver;
	sub.onmouseout = omgMenuAreaOut;
	menuCurrentItem = menuActiveItem;
	menuBusy = false;
}

function omgMenuItemActivate() {
	var e;
	delete menuTimeout;
	if(typeof(menuOver) == 'undefined') menuOver = menuActiveItem;
	if(menuBusy || menuOver == menuCurrentItem) return;
	menuBusy = true;
	e = xGetElementById(menuSubNavExt + menuCurrentItem.id);
	menuNextItem = menuOver;
	if(e) {
		e.tOpacity = 0;
		omgMenuStartFade(omgMenuFadeOpacity, menuFadeDelay, e, omgMenuItemShowNext);
	} else {
		omgMenuItemShowNext();
	}
}

function omgMenuItemShowNext() {
	var e;
	if(menuCurrentItem != menuActiveItem) menuCurrentItem.className = menuClass;
	if(menuNextItem != menuActiveItem) menuNextItem.className = menuClassOver;
	menuCurrentItem = menuNextItem;
	e = xGetElementById(menuSubNavExt + menuCurrentItem.id);
	if(e) {
		e.tOpacity = 1;
		xOpacity(e, 0);
		xDisplay(e, 'block');
		omgMenuStartFade(omgMenuFadeOpacity, menuFadeDelay, e, omgMenuItemDone);
	} else {
		omgMenuItemDone();
	}
}

function omgMenuItemDone() {
	menuBusy = false;
	if(typeof(menuOver) != 'undefined') omgMenuItemActivate();
}

function omgMenuStartFade(func, delay, obj, finish) {
	omgMenuStopFade();
	menuFadeObj = obj;
	menuFadeFinish = finish;
	menuFadeId = setInterval(func, delay);
}

function omgMenuStopFade() {
	if(typeof(menuFadeId) != 'undefined') {
		clearInterval(menuFadeId);
		delete menuFadeId;
	}
}

function omgMenuFadeOpacity() {
	var t;
	t = xOpacity(menuFadeObj);
	if(Math.abs(t - menuFadeObj.tOpacity) < 0.1) {
		omgMenuStopFade();
		xOpacity(menuFadeObj, menuFadeObj.tOpacity);
		if(menuFadeObj.tOpacity == 0) xDisplay(menuFadeObj, 'none');
		if(menuFadeFinish) menuFadeFinish();
		return;
	}
	xOpacity(menuFadeObj, t < menuFadeObj.tOpacity ? t + menuFadeSpeed : t - menuFadeSpeed);
}

function omgMenuStartTimeout(delay) {
	omgMenuStopTimeout();
	menuTimeout = setTimeout(omgMenuItemActivate, delay);
}

function omgMenuItemOver() {
	menuOver = this;
	omgMenuStartTimeout(menuActivateDelay);
}

function omgMenuItemOut() {
	delete menuOver;
	omgMenuStartTimeout(menuDeactivateDelay);
}

function omgMenuStopTimeout() {
	if(typeof(menuTimeout) != 'undefined') {
		clearTimeout(menuTimeout);
		delete menuTimeout;
	}
}


function omgMenuAreaOver() {
	omgMenuStopTimeout();
}

function omgMenuAreaOut() {
	omgMenuStartTimeout(menuDeactivateDelay);
}

function omgResizeImage() {
  for (i = 0; i < document.images.length; i++) {
    while ( !document.images[i].complete ) {
      break;
    }
    if ( document.images[i].width > 422 ) {
    	document.images[i].height = Math.round(((422)/document.images[i].width)*document.images[i].height); 
      document.images[i].width = 422;
    }
  }
}

function omgResizeImageInline(img) {
    if ( img.width > 160 ) {
    	img.height = Math.round(((160)/img.width)*img.height); 
      img.width = 160;
    }

}


