/**
 * @author Kenneth.priisholm
 */

var DOMUtils = {
	oTargetLimit : document.body,
	sTarget : "a",
	targetFilter : function(oTarget){
		return (oTarget.nodeName.toLowerCase() != DOMUtils.sTarget.toLowerCase())
	},
	addListener : function(oElement, evType, oFunc, bUseCapture){
		//credit: Scott Andrews
		if(oElement.addEventListener){
			oElement.addEventListener(evType, oFunc, bUseCapture);
			return true;
		}
		else if(oElement.attachEvent){
			var ret = oElement.attachEvent("on" + evType, oFunc);
			return ret;
		}
		else {
			oElement["on" + evType] = oFunc;
			return true;
		}
	},
	findElement : function(oElement, oFunc){
		if(oFunc(oElement)) return oElement;
		for(var i = 0; i < oElement.childNodes.length; i++){
			oTmp = DOMUtils.findElement(oElement.childNodes[i], oFunc);
			if(oTmp != null) return oTmp;
		}
		return null;
	},
	findElements : function(oElement, oFunc, aReturn){
		if(oFunc(oElement)) aReturn.push(oElement);
		for(var i = 0; i < oElement.childNodes.length; i++){
			aReturn = DOMUtils.findElements(oElement.childNodes[i], oFunc, aReturn);
		}
		return aReturn;
	},
	findTarget : function(e){
		var target = arguments[0];
		if(window.event && window.event.srcElement)
			target = window.event.srcElement;
		else if(e && e.target)
			target = e.target;
		if(!target)
			return null;
		while(target != DOMUtils.oTargetLimit && DOMUtils.targetFilter(target)){
			target = target.parentNode;
		}
		if(DOMUtils.targetFilter(target)) return null;
		return target;
	}
}

var ImageFader = function(){
	return {
		init : function() {
			var imageId = 'photo';
			var image = document.getElementById(imageId);
			ImageFader.setOpacity(image, 0);
			image.style.visibility = "visible";
			ImageFader.fadeIn(imageId,0);
		},
		fadeIn : function(objId,opacity) {
			if (document.getElementById) {
				obj = document.getElementById(objId);
				if (opacity <= 100) {
					ImageFader.setOpacity(obj, opacity);
					opacity += 10;
					window.setTimeout("ImageFader.fadeIn('"+objId+"',"+opacity+")", 10);
				}
			}
		},
		setOpacity : function (obj, opacity) {
			opacity = (opacity == 100) ? 99.999 : opacity;
			// IE/Win
			obj.style.filter = "alpha(opacity:"+opacity+")";
			// Safari<1.2, Konqueror
			obj.style.KHTMLOpacity = opacity/100;
			// Older Mozilla and Firefox
			obj.style.MozOpacity = opacity/100;
			// Safari 1.2, newer Firefox and Mozilla, CSS3
			obj.style.opacity = opacity/100;
		}
	}
}();

DOMUtils.addListener(window, "load", ImageFader.init);