var ImageFader = {
    init: function() {
        var images = ImageFader.getElementsByClass("fadein", "img");
        for (var i = 0; images[i]; i++) {
            var img = images[i];
            img.currentOpacity = 100;
            img.fadeIn = null;
            img.fadeOut = null;
            img.onmouseover = ImageFader.imageOut;
            img.onmouseout = ImageFader.imageOver;
        }
    },
    imageOver: function() {
        if (this.fadeOut) {
            clearTimeout(this.fadeOut);
        }
        ImageFader.fadeIn(this);
    },
    imageOut: function() {
        if (this.fadeIn) {
            clearTimeout(this.fadeIn);
        }
        ImageFader.fadeOut(this);
    },
    fadeIn: function(img) {
        img.currentOpacity += 2;
        ImageFader.setOpacity(img);
        if (img.currentOpacity < 100) {
            var f = function() { ImageFader.fadeIn(img); };
            img.fadeIn = setTimeout(f, 10);
        }
    },
    fadeOut: function(img) {
        img.currentOpacity -= 2;
        ImageFader.setOpacity(img);
        if (img.currentOpacity > 76) {
            var f = function() { ImageFader.fadeOut(img); };
            img.fadeOut = setTimeout(f, 10);
        }
    },
    getElementsByClass: function(classValue, tagName, parentElement) {
        var elementArray = [];

        if (tagName) {
            if (parentElement) {
                elementArray = parentElement.getElementsByTagName(tagName);
            } else {
                elementArray = document.getElementsByTagName(tagName);
            }
        } else {
            if (!parentElement) {
                if (document.all) {
                    elementArray = document.all;
                } else {
                    elementArray = document.getElementsByTagName("*");
                }
            } else {
                elementArray = parentElement.getElementsByTagName("*");
            }
        }
        var matchedArray = [];
        if (classValue.length > 0) {
            var pattern = new RegExp("(^| )" + classValue + "( |$)");

            for (var i = 0; i < elementArray.length; i++) {
                if (pattern.test(elementArray[i].className)) {
                    matchedArray[matchedArray.length] = elementArray[i];
                }
            }
        } else {
            matchedArray = elementArray;
        }

        return matchedArray;
    },
setOpacity: function(img)
{
        var opacity = (img.currentOpacity == 100) ? 99.999 : img.currentOpacity;
        img.style.filter = "alpha(opacity:" + opacity + ")";
        img.style.opacity = opacity / 100;
},
addLoadEvent: function(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function')
	{
            window.onload = func;
    }
	else
	{
            window.onload = function()
			{
            	oldonload();
            	func();
     		}
    }
    }
}
ImageFader.addLoadEvent(ImageFader.init);
