var overopacity = {}
overopacity.baseopacity = 0.7
overopacity.increment = 0.1

document.write('<style type="text/css">\n')
document.write('.overopacity{filter:progid:DXImageTransform.Microsoft.alpha(opacity=' + overopacity.baseopacity * 100 + '); -moz-opacity:' + overopacity.baseopacity + '; opacity:' + overopacity.baseopacity + ';}\n')
document.write('</style>')

overopacity.setopacity = function (obj, value) {
	var targetobject=obj
	if (targetobject && targetobject.filters && targetobject.filters[0]){
		if (typeof targetobject.filters[0].opacity=="number")
			targetobject.filters[0].opacity=value*100
		else //IE 5.5
			targetobject.style.filter="alpha(opacity="+value*100+")"
		}
	else if (targetobject && typeof targetobject.style.MozOpacity!="undefined")
		targetobject.style.MozOpacity=value
	else if (targetobject && typeof targetobject.style.opacity!="undefined")
		targetobject.style.opacity=value
	targetobject.currentopacity=value
}

overopacity.fadeupdown = function (obj, direction) {
	var targetobject=obj
	var fadeamount=(direction=="fadeup")? this.increment : -this.increment
	if (targetobject && (direction=="fadeup" && targetobject.currentopacity<0.9 || direction=="fadedown" && targetobject.currentopacity>this.baseopacity)){
		this.setopacity(obj, targetobject.currentopacity+fadeamount)
		window["opacityfader" + obj._fadeorder] = setTimeout(function () { overopacity.fadeupdown(obj, direction) }, 50)
	}
}

overopacity.clearTimer = function (obj) {
if (typeof window["opacityfader"+obj._fadeorder]!="undefined")
	clearTimeout(window["opacityfader"+obj._fadeorder])
}

overopacity.isContained = function (m, e) {
	var e=window.event || e
	var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement)
	while (c && c!=m)try {c=c.parentNode} catch(e){c=m}
	if (c==m)
		return true
	else
		return false
}

overopacity.fadeinterface = function (obj, e, direction) {
	if (!this.isContained(obj, e)){
	    overopacity.clearTimer(obj)
	    overopacity.fadeupdown(obj, direction)
	}
}

overopacity.collectElementbyClass = function (classname) { 
	var classnameRE=new RegExp("(^|\\s+)"+classname+"($|\\s+)", "i") 
	var pieces=[]
	var alltags=document.all? document.all : document.getElementsByTagName("*")
	for (var i=0; i<alltags.length; i++){
		if (typeof alltags[i].className=="string" && alltags[i].className.search(classnameRE)!=-1)
			pieces[pieces.length]=alltags[i]
	}
	return pieces
}

overopacity.init = function () {
    var targetobjects = this.collectElementbyClass("overopacity")
	for (var i=0; i<targetobjects.length; i++){
		targetobjects[i]._fadeorder=i
		this.setopacity(targetobjects[i], this.baseopacity)
		targetobjects[i].onmouseover = function (e) { overopacity.fadeinterface(this, e, "fadeup") }
		targetobjects[i].onmouseout = function (e) { overopacity.fadeinterface(this, e, "fadedown") }
	}
}
