

// возвращает объект с указанным id или false
function element( sID )
{
	 if( typeof( sID ) == 'object' ) return sID;
        if( document.getElementById( sID ) ) return document.getElementById( sID );   
        return false;
}

function element1( sID)
{
  if( document.getElementById )
    {
      var oElement = document.getElementById(sID);
      return oElement == null ? false : oElement;
    }
    return false;
}

Array.prototype.in_array = function(p_val)
{
	for(var i = 0, l = this.length; i < l; i++)
	{
		if(this[i] == p_val)
		{
			return true;
		}
	}
	return false;
}

function getRadioGroupValue(radioGroupObj)
{  
  for (var i=0; i < radioGroupObj.length; i++)    
    if (radioGroupObj[i].checked) 
      return radioGroupObj[i].value;  
  return null;
}

function checkAll(oForm, cbName, checked)
{
  for (var i=0; i < oForm[cbName].length; i++) 
    oForm[cbName][i].checked = checked;
}

function show( sID ){
        if( !element( sID ) ) return false;  
        element( sID ).style.display = '';
    }
function hide( sID ){
        if( !element( sID ) ) return false;
        element( sID ).style.display = 'none';
    }
function showHide( sID ){
    	if( !( sID = element( sID ) ) ) return false;	
    	var open = ( sID.style.display == 'none');
    	
		if( open ) show( sID );
	    else hide( sID );
    	
    	return open;
    }
function removeBlock( node ){
        if( !( node = element( node ) ) )  return false;
        
        divNode = node;
        while( divNode.tagName != 'DIV' || divNode.className != '_FB' )
		{
            divNode = divNode.parentNode;
        }  
        
        divNode.parentNode.removeChild( divNode );
    }
    
    
function addBlock( mainDiv, formatHtml, formVarKey ){
        if( !( mainDiv = element( mainDiv ) ) )     return false;
        
        var divNode = document.createElement('DIV');
        divNode.className = '_FB';
        
        while( formatHtml.match('%%') )
		{
            formatHtml = formatHtml.replace('%%', formVarKey );
        }
        
        divNode.innerHTML = formatHtml;
        mainDiv.appendChild( divNode );
    }
// возвращает массив дочерних элементов имеющих определенное имя тега или пустой массив
function byTagName( oElement, sTagName )
{
	if( oElement != false )
	{
		var aElements = oElement.getElementsByTagName(sTagName);
		return aElements;
	}
	return new Array();
};
function create( sTagName )
{
	return document.createElement( sTagName );
};
function createText( sText )
{
	return document.createTextNode( sText );
};
/*----------------------------------------------------------------------------*/
// добавляет атрибут target="_blank" всем ссылкам у которых есть атрибут rel="external"
function useTarget()
{
	if( element('doc') )
	{
		var refs = byTagName( element('doc'), 'a' );
		for( var i = 0; i < refs.length; i++ )
		{
			if( refs[i].getAttribute("href") && refs[i].getAttribute("rel") == "external" )
			{
				refs[i].target = "_blank";
			}
		}
	}
	return;
}
// преобразует защищенные ссылки
function hiddenMail( sLogin, sServer )
{
	var sHref = '\x6d\x61\x69\x6c\x74\x6f\x3a' + sLogin + '\x40' + sServer;
	window.location.href = sHref;
}

// начинает работу приложения
var scroller;
var salary;
var ie = /*@cc_on!@*/false;
var scrollerStartX;
function mousedown(ev)
{
	scroller = document.getElementById('salaryScroller');
	salary = document.getElementById('salary');
	if( ie == false )
	{// mozilla, opera, etc
		scrollerStartX = ev.clientX;
	}
	else
	{// internet explorer
		scrollerStartX = event.offsetX;
	}
}
function mousemove(ev)
{
	if( scroller )
	{
		var scrollerCurrentX;
		if( ie == false )
		{// mozilla, opera, etc
			scrollerCurrentX = ev.clientX;
		}
		else
		{// internet explorer
			scrollerCurrentX = event.offsetX;
		}
		var delta = scrollerCurrentX - scrollerStartX;
		if( delta == 0 )
		{// объект не перемещается
		}
		else
		{// объект движется
			var _ml = scroller.style.marginLeft;
			var scrollerX = (_ml && _ml != '') ? parseInt(_ml) : 0;
			var offset = scrollerX + delta;
			if( offset < 0 )
			{
				scrollerX = 0;
			}
			else if( offset > 247 )
			{
				scrollerX = 247;
			}
			else
			{
				scrollerX += delta;
			}
			scroller.style.marginLeft = scrollerX + 'px';
			salary.style.marginLeft = 1 + scrollerX + 'px';
			salary.value = Math.round(scrollerX*0.73);
			if( ie == false )
			{
				scrollerStartX = ev.clientX;
			}
		}
	}
}
function retrieveLink()
{
	scroller = null;
	sendRequest( 'salary', salary.value );
}
function retrieveLink1()
{
	scroller = null;
}
function activateSearchTabs()
{
	if( element('tabs') )
	{
		var hrefs = byTagName( element('tabs'), 'a' );
		for( var i = 0; i < hrefs.length; i++ )
		{
			hrefs[i].onclick = function()
			{
				var stype = this.href.substr( this.href.indexOf("?stype")+7);
				element("stype").value = stype;

				var advSL = byTagName( element('advSearchLink'), 'a' );
				for( var i = 0; i < advSL.length; i++ )
				{
					if( stype == 'site' ) stypeForAdvSL  = 'vacancies';
					else stypeForAdvSL = stype;
					advSL[i].href = host + '/index.php/job/advanced/?stype='+stypeForAdvSL;
					
				}
				var lis = byTagName( element('tabs'), 'li' );
				for( var j = 0; j < lis.length; j++ )
				{
					lis[j].className = lis[j].className == 'last active' ? 'last' : lis[j].className == 'last' ? 'last' : '';
				}
				this.parentNode.className += ' active';
				switch( stype )
				{
					case 'vacancies':
						element('searchForm').action = host + '/index.php/job/search/vacancies/';
						break;
					case 'resume':
						element('searchForm').action = host + '/index.php/job/search/resume/';
						break;
					case 'site':
						element('searchForm').action = host + '/index.php/article/search/';
						break;
					default:
						element('searchForm').action = host + '/index.php/job/search/vacancies/';
						break;
				}
				return false;
			};

			if(ie == false){hrefs[i] = null;};
		}
	}
}
	
function askLogin(first, close )
{
	var b = element( 'doc' );
	// тень вспылвающего окна
	var ws = create('div');
	ws.id = 'lwShadow';
	b.appendChild(ws);
	ws.style.position = 'absolute';
	ws.style.opacity = '0.3';
	// window - всплывающее окно
	var w = create('div');
	w.id = 'loginWindow';
	var clos = create('a');
	clos.style.marginLeft = '130px';
	clos.href = host + '/index.php/';
	clos.onclick= function()
			{
				element('doc').removeChild(element('lwShadow'));
				element('doc').removeChild(element('loginWindow'));
				return false;
			}
	var clost = createText('закрыть');
	clos.appendChild(clost);	// форма во всплывающем окне
	var f = create('form');
	f.method = 'post';
	if (first == true) str = "1";
	else str = "0";
	f.action = host + '/index.php/user/login/';
	f.onsubmit = function()
	{
		sendRequest( 'login', element('lwLogin').value, element('lwPassword').value, str);
		element('doc').removeChild(element('lwShadow'));
		element('doc').removeChild(element('loginWindow'));
		return false;
	}
	// fieldset
	var fd = create('fieldset');
	// login label (label for="login" )
	var ll = create('label');
	ll.setAttribute( 'for', 'lwLogin' );
	// текст в метке
	var llt = createText('Логин (e-mail):');
	ll.appendChild(llt);
	// метку добавляем в набор полей
	fd.appendChild(ll);
	// поле ввода логина (login input)
	var li = create('input');
	li.type = 'text';
	li.name = 'lwLogin';
	li.id = 'lwLogin';
	// поле ввода логина добавляем в набор полей
	fd.appendChild(li);
	// password label
	var pl = create('label');
	pl.setAttribute( 'for', 'lwPassword' );
	// текст в метке
	var plt = createText('Пароль:');
	pl.appendChild(plt);
	// метку добавляем в набор полей
	fd.appendChild(pl);
	// поле ввода пароля (password input)
	var pi = create('input');
	pi.type = 'password';
	pi.name = 'lwPassword';
	pi.id = 'lwPassword';
	// поле ввода добавляем в набор полей
	fd.appendChild(pi);
	// кнопка "войти"
	var sb = create('input');
	sb.type = 'submit';
	sb.name = 'lwSignIn';
	sb.id = 'lwSignIn';
	sb.value = 'Войти';
	// подключаем кнопку входа
	fd.appendChild(sb);
	// параграф и ссылка на форму восстановления пароля
	var p = create('p');
	var fpa = create('a');
	fpa.href = host + '/index.php/user/forgot/';
	var fpat = createText('Забыли пароль?');
	fpa.appendChild(fpat);
	p.appendChild(fpa);
	// добавляем ссылку восстановления пароля в набор полей
	fd.appendChild(p);
	// текст и ссылки для регистрации
	var rp = create('p');
	rp.id = 'reglinks';
	var rpt = createText('Зарегистрироваться:');
	
	var br = create('br');
	var ree = create('a');
	ree.href = host + '/index.php/user/register/employee/';
	var reet = createText('Я ищу работу');
	ree.appendChild(reet);
	
	var br2 = create('br');
	var rer = create('a');
	rer.href = host + '/index.php/user/register/employer/';
	var rert = createText('Я предлагаю работу');
	rer.appendChild(rert);
	
	var br3= create('br');
	var rel = create('a');
	rel.href = host + '/index.php/user/register/teacher/';
	var relt = createText('Я провожу курсы');
	rel.appendChild(relt);
	
	// сборка вместе ссылок и текста
	rp.appendChild(rpt);
	rp.appendChild(br);
	rp.appendChild(ree);
	rp.appendChild(br2);
	rp.appendChild(rer);
	rp.appendChild(br3);
	rp.appendChild(rel);

	fd.appendChild(rp);

	f.appendChild(fd);
	w.appendChild(clos);
	w.appendChild(f);
	b.appendChild(w);
	w.style.position = 'absolute';
}

function clearlegend(tf, text) {

         if (tf.value == text){
         tf.value = "";
         tf.style.color='black';
         }
         //clearLegend(this.form,'company')
         //if(this.form.Name1.value == 'Введите компанию...'){this.form.Name1.value = '';this.form.Name1.style.color='black';}
}

function showlegend(tf, text) {
	 	if (tf.value == ""){
         tf.value = text;
         tf.style.color='#cccccc';
         }
         //showLegend()
         //if(this.form.Name1.value == ''){this.form.Name1.value = 'Введите компанию...';this.form.Name1.style.color='gray';}
}

function detect_br()
{ // определение типа браузера
	var ua = navigator.userAgent, av = navigator.appVersion, v, i;
	$is={};
	$is.Opera = !!(window.opera /*&& opera.buildNumber*/);
	$is.WebKit = /WebKit/.test(ua);
	$is.OldWebKit = $is.WebKit && !window.getSelection().getRangeAt;
	$is.IE = !$is.WebKit && !$is.Opera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(navigator.appName);
	$is.IE6 = $is.IE && /MSIE [56]/.test(ua);
	$is.IE5 = $is.IE && /MSIE [5]/.test(ua);
	$is.Gecko = !$is.WebKit && /Gecko/.test(ua);
	$is.Mac = ua.indexOf('Mac') != -1;
	for (i in $is) if (!$is[i]) $is[i]=NaN;
	if (!$is.IE5) v = (ua.toLowerCase().match(new RegExp(".+(?:rv|it|ra|ie)[\\/: ]([\\d.]+)"))||[])[1];
	switch (true) {
		case ($is.WebKit): v=parseInt(v, 10);$is.WebKit=v=v>599?4:v>499?3:v>399?2:1;break;
		case ($is.Opera): $is.Opera =v=v||9;break;
		case ($is.Gecko): $is.Gecko =v=v.substr(0,3)||1.8;break;
		case ($is.IE): $is.IE =v= window.XMLHttpRequest ? 7 : (/MSIE [5]/.test(av)) ? (/MSIE 5.5/.test(av))?5.5:5 : 6;
		};
	$is.verb = v;
	$is.ok = !!($is.Opera>=9 || $is.IE>=6 || $is.Gecko || $is.WebKit>2);
	$is.debug = /&debug$/.test(location.search);
	return $is;
}

function gHomePage(objSrc)
{
    var homepage = "http://www.mr66.ru"; 
	
	if (detect_br().IE) objSrc.setHomePage(homepage);
	else if (detect_br().Gecko) window.open("http://www.mr66.ru/index.php/article/archive/1401/");
	else if (detect_br().Opera) window.open("http://www.mr66.ru/index.php/article/archive/1400/");
}


var tooltip = {

	options: {
		attr_name: "tooltip", 
		blank_text: "(откроется в новом окне)",
		newline_entity: "  ", 
		max_width: 0,
		delay: 750, 
		skip_tags: ["link", "style"] 
	},


	t: document.createElement("DIV"),
	c: null,
	g: false,
	canvas: null,

	m: function(e){
		if (tooltip.g){
			var x = window.event ? event.clientX + tooltip.canvas.scrollLeft : e.pageX;
			var y = window.event ? event.clientY + tooltip.canvas.scrollTop : e.pageY;
			tooltip.a(x, y);
		}
	},

	d: function(){
		tooltip.canvas = document.getElementsByTagName(document.compatMode && document.compatMode == "CSS1Compat" ? "HTML" : "BODY")[0];
		tooltip.t.setAttribute("id", "tooltip");
		document.body.appendChild(tooltip.t);
		if (tooltip.options.max_width) tooltip.t.style.maxWidth = tooltip.options.max_width + "px";
		var a = document.all && !window.opera ? document.all : document.getElementsByTagName("*");
		var l = a.length;
		for (var i = 0; i < l; i++){

			if (!a[i] || tooltip.options.skip_tags.in_array(a[i].tagName.toLowerCase())) continue;

			var tooltip_title = a[i].getAttribute("hint"); 
			if (tooltip_title && typeof tooltip_title != "string") tooltip_title = "";

			var tooltip_alt = a[i].getAttribute("alt");
			var tooltip_blank = a[i].getAttribute("target") && a[i].getAttribute("target") == "_blank" && tooltip.options.blank_text;
			if (tooltip_title || tooltip_blank){
				a[i].setAttribute(tooltip.options.attr_name, tooltip_blank ? (tooltip_title ? tooltip_title + " " + tooltip.options.blank_text : tooltip.options.blank_text) : tooltip_title);
				if (a[i].getAttribute(tooltip.options.attr_name)){
					a[i].removeAttribute("hint");
					if (tooltip_alt && a[i].complete) a[i].removeAttribute("alt");
					tooltip.l(a[i], "mouseover", tooltip.s);
					tooltip.l(a[i], "mouseout", tooltip.h);
				}
			}else if (tooltip_alt && a[i].complete){
				a[i].setAttribute(tooltip.options.attr_name, tooltip_alt);
				if (a[i].getAttribute(tooltip.options.attr_name)){
					a[i].removeAttribute("alt");
					tooltip.l(a[i], "mouseover", tooltip.s);
					tooltip.l(a[i], "mouseout", tooltip.h);
				}
			}
			if (!a[i].getAttribute(tooltip.options.attr_name) && tooltip_blank){
				//
			}
		}
		document.onmousemove = tooltip.m;
		window.onscroll = tooltip.h;
		tooltip.a(-99, -99);
	},
	
	_: function(s){
		s = s.replace(/\&/g,"&amp;");
		s = s.replace(/\<\</g, "&laquo;");
		s = s.replace(/\>\>/g, "&raquo;");
		//s = s.replace(/\</g,"&lt;");
		//s = s.replace(/\>/g,"&gt;");
		s = s.replace(/\[b\]/g, "<b>");
		s = s.replace(/\[\/b\]/g, "</b>");
		s = s.replace(/\[i\]/g, "<i>");
		s = s.replace(/\[\/i\]/g, "</i>");
		s = s.replace(/\(r\)/g, "&reg");
		s = s.replace(/\(c\)/g, "&copy");
		s = s.replace(/\[r\]/g, "<br />");
		
		return s;
	},

	s: function(e){
		if (typeof tooltip == "undefined") return;
		var d = window.event ? window.event.srcElement : e.target;
		if (!d.getAttribute(tooltip.options.attr_name)) return;
		var s = d.getAttribute(tooltip.options.attr_name);
		if (tooltip.options.newline_entity){
			var s = tooltip._(s);
			//s = s.replace(eval("/" + tooltip._(tooltip.options.newline_entity) + "/g"), "<br />");
			tooltip.t.innerHTML = s;
		}else{
			if (tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
			tooltip.t.appendChild(document.createTextNode(s));
		}
		tooltip.c = setTimeout(function(){
			tooltip.t.style.visibility = 'visible';
		}, tooltip.options.delay);
		tooltip.g = true;
	},

	h: function(e){
		if (typeof tooltip == "undefined") return;
		tooltip.t.style.visibility = "hidden";
		if (!tooltip.options.newline_entity && tooltip.t.firstChild) tooltip.t.removeChild(tooltip.t.firstChild);
		clearTimeout(tooltip.c);
		tooltip.g = false;
		tooltip.a(-99, -99);
	},

	l: function(o, e, a){
		if (o.addEventListener) o.addEventListener(e, a, false); 
		else if (o.attachEvent) o.attachEvent("on" + e, a);
			else return null;
	},

	a: function(x, y){
		var w_width = tooltip.canvas.clientWidth ? tooltip.canvas.clientWidth + tooltip.canvas.scrollLeft : window.innerWidth + window.pageXOffset;
		var w_height = window.innerHeight ? window.innerHeight + window.pageYOffset : tooltip.canvas.clientHeight + tooltip.canvas.scrollTop; 

		if (document.all && document.all.item && !window.opera) tooltip.t.style.width = tooltip.options.max_width && tooltip.t.offsetWidth > tooltip.options.max_width ? tooltip.options.max_width + "px" : "auto";
		
		var t_width = tooltip.t.offsetWidth;
		var t_height = tooltip.t.offsetHeight;

		tooltip.t.style.left = x + 8 + "px";
		tooltip.t.style.top = y + 8 + "px";
		
		if (x + t_width > w_width) tooltip.t.style.left = w_width - t_width + "px";
		if (y + t_height > w_height) tooltip.t.style.top = w_height - t_height + "px";
	}
}

Array.prototype.in_array = function(value){
	var l = this.length;
	for (var i = 0; i < l; i++)
		if (this[i] === value) return true;
	return false;
};

var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
if (root){
	if (root.addEventListener) root.addEventListener("load", tooltip.d, false);
	else if (root.attachEvent) root.attachEvent("onload", tooltip.d);
}




var preclass;
var newclass;

function enterbutton(id, submenu)
{
	if(submenu) newclass = 'hsbutton';
	else newclass = 'ambutton';
preclass = element(id).className;	
element(id).className = newclass;	
}

function exitbutton(id)
{
//newclass = 'ambutton';
//preclass = element(id).className;	
element(id).className = preclass;	
}


var originStyle;

function setActiveItem(id, show)
{
	if(show){
		originStyle = element(id).className;
		element(id).className = originStyle+'_active';
		}
	else {
		element(id).className = originStyle;
		}
}

function checkCHB(id)
{
	if (element(id).checked) element(id).checked = false;
	else element(id).checked = true;
	element('checkall').checked = false;
	element('checkall2').checked = false;
}
function checkCHB1(id)
{
	if (element(id).checked) element(id).checked = false;
	else element(id).checked = true;
	
	element('checkall').checked = false;
	element('checkall2').checked = false;
}

function ShowTools(toolsname, oForm, cbName)
{
	var count = 0;
	for ( var i=0; i<oForm[cbName].length; i++ )
		if( oForm[cbName][i].checked ) count++;
	if(count>=2)
	{
		element1(toolsname+"_act").style.display = '';
		element1(toolsname+"_noact").style.display = 'none';
	}
	else
	{
		element1(toolsname+"_act").style.display = 'none';
		element1(toolsname+"_noact").style.display = '';
	}
}



/*function activateButtons()
{
	
	if( element('usermenu') )
	{
		//document.title = '1';
		var hrefs = byTagName( element('usermenu'), 'div' );
		for( var i = 0; i < hrefs.length; i++ )
		{
			hrefs[i].onclick = function()
			{
				
				document.title = i;
				/*var stype = this.href.substr( this.href.indexOf("?stype")+7);
				element("stype").value = stype;

				var advSL = byTagName( element('advSearchLink'), 'a' );
				for( var i = 0; i < advSL.length; i++ )
				{
					if( stype == 'site' ) stypeForAdvSL  = 'vacancies';
					else stypeForAdvSL = stype;
					advSL[i].href = host + '/index.php/job/advanced/?stype='+stypeForAdvSL;
					
				}
				var lis = byTagName( element('tabs'), 'li' );
				for( var j = 0; j < lis.length; j++ )
				{
					lis[j].className = lis[j].className == 'last active' ? 'last' : lis[j].className == 'last' ? 'last' : '';
				}
				
				this.parentNode.className += ' active';
				*/
				
				//return false;
/*			};

			if(ie == false){hrefs[i] = null;};
		}
	}
}*/


function setElementOpacity(oElem, nOpacity)
{
	var p = getOpacityProperty();
	(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100;	var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha;	if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}

// Функция getOpacityProperty() возвращает свойство которое используется для смены прозрачности или undefined, и может использоваться для проверки возможности изменения прозрачности
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+"';"))();
}

/* Функции для плавного изменения прозрачности:

1) fadeOpacity.addRule('opacityRule1', 1, 0.5, 30); //вначале создаем правило, задаем имя правила, начальную прозрачность и конечную, необязательный параметр задержки, влийяющий на скорость смены прозрачности
2) fadeOpacity('elemID', 'opacityRule1'); // выполнить плавную смену прозрачности элемента с id равным elemID, по правилу opacityRule1
3) fadeOpacity.back('elemID'); //вернуться в исходное сотояние прозрачности
*/
function fadeOpacity(sElemId, sRuleName, bBackward)
{
	var elem = document.getElementById(sElemId);
	if (!elem || !getOpacityProperty() || !fadeOpacity.aRules[sRuleName]) return;
	
	var rule = fadeOpacity.aRules[sRuleName];
	var nOpacity = rule.nStartOpacity;
	
	if (fadeOpacity.aProc[sElemId]) {clearInterval(fadeOpacity.aProc[sElemId].tId); nOpacity = fadeOpacity.aProc[sElemId].nOpacity;}
	if ((nOpacity==rule.nStartOpacity && bBackward) || (nOpacity==rule.nFinishOpacity && !bBackward)) return;

	fadeOpacity.aProc[sElemId] = {'nOpacity':nOpacity, 'tId':setInterval('fadeOpacity.run("'+sElemId+'")', fadeOpacity.aRules[sRuleName].nDalay), 'sRuleName':sRuleName, 'bBackward':Boolean(bBackward)};
}

fadeOpacity.addRule = function(sRuleName, nStartOpacity, nFinishOpacity, nDalay){fadeOpacity.aRules[sRuleName]={'nStartOpacity':nStartOpacity, 'nFinishOpacity':nFinishOpacity, 'nDalay':(nDalay || 30),'nDSign':(nFinishOpacity-nStartOpacity > 0?1:-1)};};

fadeOpacity.back = function(sElemId){fadeOpacity(sElemId,fadeOpacity.aProc[sElemId].sRuleName,true);};

fadeOpacity.run = function(sElemId)
{
	var proc = fadeOpacity.aProc[sElemId];
	var rule = fadeOpacity.aRules[proc.sRuleName];
	
	proc.nOpacity = Math.round(( proc.nOpacity + .1*rule.nDSign*(proc.bBackward?-1:1) )*10)/10;
	setElementOpacity(document.getElementById(sElemId), proc.nOpacity);
	
	if (proc.nOpacity==rule.nStartOpacity || proc.nOpacity==rule.nFinishOpacity) clearInterval(fadeOpacity.aProc[sElemId].tId);
}
fadeOpacity.aProc = {};
fadeOpacity.aRules = {};