/*
Source: http://www.tigir.com/js/opacity.js
*/


function setElementOpacity(oElem, nOpacity)
{
	var p = getOpacityProperty();//progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")              filter: Alpha(opacity=30);var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha;	if (oAlpha) oAlpha.opacity = nOpacity; else
	(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100; oElem.style.filter = "Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}



function getOpacityProperty()
{
	var p;
	if (typeof document.body.style.opacity == 'string') p = 'opacity';
	else if (typeof document.body.style.MozOpacity == 'string') p =  'MozOpacity';
	else if (typeof document.body.style.KhtmlOpacity == 'string') p =  'KhtmlOpacity';
	else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p =  'filter';
			
	return (getOpacityProperty = new Function("return '"+p+"';"))();
}




function ClassOpacity(sElemId, sRuleName, bBackward)
{
	var elem = document.getElementById(sElemId);
	var proc = ClassOpacity.aProc[sElemId];
	var rule = ClassOpacity.aRules[sRuleName];
	var nOpacity = rule.nStartOpacity;
	if (proc) 
		{
		 clearInterval(proc.tId); 
		 nOpacity = proc.nOpacity;
		}
	if ((nOpacity==rule.nStartOpacity && bBackward) || (nOpacity==rule.nFinishOpacity && !bBackward)) return;

	ClassOpacity.aProc[sElemId] = {'nOpacity':nOpacity, 'tId':setInterval('ClassOpacity.run("'+sElemId+'")', rule.nDalay), 'sRuleName':sRuleName, 'bBackward':Boolean(bBackward)};
}

ClassOpacity.addRule = function(sRuleName, nStartOpacity, nFinishOpacity, nDalay){ClassOpacity.aRules[sRuleName]={'nStartOpacity':nStartOpacity, 'nFinishOpacity':nFinishOpacity, 'nDalay':(nDalay || 30),'nDSign':(nFinishOpacity-nStartOpacity > 0?1:-1)};};



//ClassOpacity.back = function(sElemId){ClassOpacity(sElemId,ClassOpacity.aProc[sElemId].sRuleName,true);};



ClassOpacity.run = function(sElemId)
{
	var proc = ClassOpacity.aProc[sElemId];
	var rule = ClassOpacity.aRules[proc.sRuleName];
	
	proc.nOpacity = Math.round(( proc.nOpacity + 0.2*rule.nDSign*(proc.bBackward?-1:1) )*10)/10;
	setElementOpacity(document.getElementById(sElemId), proc.nOpacity);
	
	if (proc.nOpacity==rule.nStartOpacity || proc.nOpacity==rule.nFinishOpacity) clearInterval(proc.tId);
}


ClassOpacity.aProc = {};
ClassOpacity.aRules = {};