/*
setElementOpacity - установка прозрачности
getOpacityProperty - проверка, есть ли возможность менять прозрачность
fadeOpacity - плавное изменение прозрачности

setElementOpacity(document.body, 0.5); //сделать документ прозрачным на половину
*/
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 = {};

// Мои нубские самоделки

// Работа кнопки "поиск"
function butEff(val) {
	var elem = document.getElementById('f1-b1').style
	switch (val) {
		case 1:
			elem.borderColor = '#a3a3a3'
			break
		case 2:
			elem.borderColor = '#276fa3'
			break
		case 3:
			elem.borderColor = '#fff'
			break
		case 4:
			alert('Наш сайт находится в стадии разработки и тестирования.\nНа данный момент поиск не работает. Спасибо за Ваше понимание.')
	}
}


// Проявление картинки
fadeOpacity.addRule('img2vis',0,1, 10)
function newImage(num) {
	curImage = num
	num = 'image-' + num
	fadeOpacity(num, 'img2vis')
}

// Затухание картинки
var curImage = 1
fadeOpacity.addRule('img2inv',1,0, 10)
function changeImg() {
	switch (curImage) {
		case 1:
			fadeOpacity('image-1', 'img2inv')
			setTimeout('newImage(2)',350)
			break
		case 2:
			fadeOpacity('image-2', 'img2inv')
			setTimeout('newImage(3)',350)
			break
		case 3:
			fadeOpacity('image-3', 'img2inv')
			setTimeout('newImage(4)',350)
			break
		case 4:
			fadeOpacity('image-4', 'img2inv')
			setTimeout('newImage(5)',350)
			break
		case 5:
			fadeOpacity('image-5', 'img2inv')
			setTimeout('newImage(6)',350)
			break
		case 6:
			fadeOpacity('image-6', 'img2inv')
			setTimeout('newImage(7)',350)
			break
		case 7:
			fadeOpacity('image-7', 'img2inv')
			setTimeout('newImage(1)',350)
	}
}

// Проверка загрузки всех меняющихся картинок, установка прозрачности всех, кроме первой картинок с помощью "правила", запуск интервала смена картинок
var loadStatus = 0
function isLoad(event) {
	event = event || window.event
	loadStatus++
	if (loadStatus >= 6) {
		setInterval(changeImg,7000)
	}
}

// Запуск проверки состояния загрузки картинок
function tnxtovalidator() {
	for (var i = 2;i <= 7;i++) {
		document.getElementById('image-' + i).onload = isLoad
	}
}

// Раскрытие выделенного раздела
var menuIsShown = 0
var isOver = 0
function showHide(menu,over,out) {
	menuIsShown = menu
	var elem = document.getElementById(menu)
	isOver += over
	isOver -= out
	if (isOver > 0) {
		elem.style.display = 'block'
	} else {
		elem.style.display = 'none'
		menuIsShown = 0
	}
}

// Подсветка выбранного меню
function menuLighting(ul,num,flag) {
var curElem = document.getElementById(ul).getElementsByTagName('li')[num - 1]
	if (flag == 0) {
		curElem.style.backgroundColor = '#337baf'
		curElem.getElementsByTagName('a')[0].className = 'wh'
	} else {
		curElem.style.backgroundColor = '#fff'
		curElem.getElementsByTagName('a')[0].className = 'act'
	}
}

// Переход по ссылке с присвоением "isOver" значения "0" (антиглюк выпадающего меню при переходе по стеку), 
// Работает при нажатии, как на "li", так и на "a", для "a" включена отмена стандартного значения
function goHref(id) {
	location.href = document.getElementById(id).href
	isOver = 0
}

// Показ картинки
function openPic(lnk) {
	window.open(lnk,'newWin','width=800,height=500,top=100,left=100,toolbar=0,location=0,directories=0,menubar=0,scrollbars=1,resizable=1')
	return false
}

// Добавить в Избранное
function add2fav(a) {
	title=document.title;
	url=document.location;
	try {
		// Internet Explorer
		eval("window.external.AddFa-vorite(url, title)".replace(/-/g,'')); 
	} catch (e) {
		try {
			// Mozilla
			window.sidebar.addPanel(title, url, "");
		} catch (e) {
			// Opera
			if (typeof(opera)=="object") {
				a.rel="sidebar";
				a.title=title;
				a.url=url;
				return true;
			} else {
			// Unknown
			alert('Нажмите Ctrl-D чтобы добавить страницу в закладки');
			}
		}
	}
	return false;
} 

// IE6
function detectIE6(){
	var browser = navigator.appName;
	if (browser == 'Microsoft Internet Explorer') {
		var b_version = navigator.appVersion;
		var re = /\MSIE\s+(\d\.\d\b)/;
		var res = b_version.match(re);
		if (res[1] <= 6) {
			return true;
		}
	}
	return false;
}
