var W3CDOM = (document.createElement && document.getElementsByTagName);

// библиотеки для работы с эффектом fade

var inct=50; // шаг приращения transparency (1-100)
var timerID2 = null;
var timerID3 = null;
var timerRunning2 = false;
var t=0;
var stopfadeout=0;
var inprocess=0;

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;
}

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 stopclock2 () {
	if(timerRunning2) clearTimeout (timerID2);
	timerRunning2=false;
}

function fade(type,objid){
	var a=document.getElementById(objid);
	if (type=="in") {
		if (a.style.display!="block") {
			t=0;
			fadecycle("in",objid)
			}
		} else {
		if (stopfadeout==0) {
			if (a.style.display!="none") {
			t=100;
			fadecycle("out",objid);
			}
			}
		}
}

function fadecycle(type,objid){
	stopclock2();
	fadechange(type,objid);
}

function fadechange(type,objid) {
	var obj=document.getElementById(objid);
	if (type=="in") {
		t=t+inct;
		var wait=20;
		} else {
		t=t-inct;
		var wait=20;
		}
		
	if (t<10) t=0;
	if (t>95) t=100;
	
	if (t>0) {
		document.getElementById(objid).style.display="block";
		setElementOpacity(objid,t/100);
		//alert(t);
		}
	
	if ((t>4) && (t<96)){
		timerID2 = setTimeout("fadechange('"+type+"','"+objid+"')",wait);
		timerRunning2 = true;
		} else {
			if (type=="out") {	
				inprocess=0;
				obj.style.display="none";
				} else {
				inprocess=0;
				obj.style.display="block";
				}
			stopclock2();
			inct=50;
		}
}

// функция определяет координаты элемента
function getElementPosition(elem)
{
    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
	
    var l = 0;
    var t = 0;
	
    while (elem)
    {
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }
    
    return {"left":l, "top":t, "width": w, "height":h};
}

// функции сайта

function lon(eobj, text) {
	var obj = document.getElementById("legendDiv");
	var moreinfo = document.getElementById("moreinfo");
	objpos=getElementPosition(eobj);
	if ((obj) && (inprocess==0)) { 
			stopfadeout=1; 
			obj.style.left=objpos.left+"px";
			obj.style.top=(objpos.top+20)+"px";
			moreinfo.innerHTML=text;
		if (obj.style.display!="block") {
			//inprocess=0;
			fade("in","legendDiv");
			} else {
			setElementOpacity(obj.id,1);
			//var timerID2 = setTimeout("setElementOpacity('legendDiv',1);",40);
			clearTimeout (timerID3);
			}
		}
}

function loff() {
	if (inprocess==0) { 
		if (timerID3) clearTimeout (timerID3);
		//var timerID3 = setTimeout('fade("out","legendDiv")',300);
		var timerID3 = setTimeout('quickfade()',300);
		}
}

function loffdelay() {
	if (inprocess==0) { 
		clearTimeout (timerID3);
		var timerID3 = setTimeout('quickfade()',500);
		}
}

function quickfade() {
	var obj = document.getElementById("legendDiv");
	if (stopfadeout==0) {
		setElementOpacity(obj.id,0.50);
		var timerID3 = setTimeout('document.getElementById("legendDiv").style.display="none"',50);
	}
}

