// библиотеки для работы с эффектом fade

var inctorig=25;
var inct=inctorig; // шаг приращения transparency (1-100)
var t=0;
var stopfadeout=0;
var inprocess=false;
var wait=10;

function setElementOpacity(sElemId, nOpacity)
{
  var opacityProp = getOpacityProperty();
  var elem = document.getElementById(sElemId);
  
  if (!elem || !opacityProp) return; // Если не существует элемент с указанным id или браузер не поддерживает ни один из известных функции способов управления прозрачностью
  
  if (opacityProp=="filter")  // Internet Exploder 5.5+
  {
    nOpacity *= 100;
	
    // Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
    var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
    if (oAlpha) oAlpha.opacity = nOpacity;
    else elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")"; // Для того чтобы не затереть другие фильтры используем "+="
  }
  else {
  	// Другие браузеры
  	elem.style[opacityProp] = nOpacity;
	//elem.style.opacity = nOpacity;
	}
}

function getOpacityProperty()
{
  if (typeof document.body.style.opacity == 'string') // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9, IE7)
    return 'opacity';
  else if (typeof document.body.style.MozOpacity == 'string') // Mozilla 1.6 и младше, Firefox 0.8 
    return 'MozOpacity';
  else if (typeof document.body.style.KhtmlOpacity == 'string') // Konqueror 3.1, Safari 1.1
    return 'KhtmlOpacity';
  else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) // Internet Exploder 5.5+
    return 'filter';

  return false; //нет прозрачности
}

function stopclock(objid) {
	eval ('if (timerRunning_'+objid+' in this) { } else { var timerRunning_'+objid+'=false; } ');
	eval ('if (timerRunning_'+objid+') { clearTimeout (timerID_'+objid+'); } timerRunning_'+objid+'=false; ');
}

function fade(type,objid){
	var a=document.getElementById(objid);
	if (type=="in") {
		if ((a.style.display!="block") || (inprocess)) {
			eval ('t_'+objid+'=0;');
			fadecycle(type,objid)
			}
		} else {
			if ((a.style.display!="none") || (inprocess)) {
			eval ('t_'+objid+'=100;');
			fadecycle(type,objid)
			}
		}
}

function fadecycle(type,objid){
	inprocess=true;
	stopclock(objid);
	fadechange(type,objid);
}

function fadechange(type,objid) {
	var obj=document.getElementById(objid);
	if (type=="in") {
		eval ('t_'+objid+'=t_'+objid+'+inct;');
		} else {
		eval ('t_'+objid+'=t_'+objid+'-inct;');
		}
		
	eval ('if (t_'+objid+'<10) t_'+objid+'=0;')
	eval ('if (t_'+objid+'>95) t_'+objid+'=100;')
	
	eval ('this_t=t_'+objid+';');
	if (this_t>0) {
		document.getElementById(objid).style.display="block";
		setElementOpacity(objid,this_t/100);
		}
	
	if ((this_t>4) && (this_t<96)){
		eval ('timerID_'+objid+' = setTimeout("fadechange(\'"+type+"\',\'"+objid+"\')",wait); timerRunning_'+objid+' = true;');
		
		} else {
			if (type=="out") {	
				inprocess=0;
				obj.style.display="none";
				} else {
				inprocess=0;
				obj.style.display="block";
				}
			stopclock(objid);
			inct=inctorig;
		}
}