// Images
var lArrowAct = new Image; lArrowAct.src = '/themes/zavolga2008/images/larrow.gif';
var rArrowAct = new Image; rArrowAct.src = '/themes/zavolga2008/images/rarrow.gif';
var lArrowInact = new Image; lArrowInact.src = '/themes/zavolga2008/images/larrow_inact.gif';
var rArrowInact = new Image; rArrowInact.src = '/themes/zavolga2008/images/rarrow_inact.gif';

// Global vars
var currLeft = null;
var leftOffset = 0;
var interval = null;
var pinterval = 0;
var scrollLock = 0;
var hasRestOffset = 0;

// Остаток прокрутки справа в px (расчетный)
var restNeedOffset = 0;

// Остаток прокрутки справа в px (расчетный)
var restWidth = 0;

// Time and step
scrollIdle = 20;
scrollStep = 4;

function tabScroll(step, needOffset, direct) {
	if (scrollLock) {
		var scrollCont = document.getElementById('tscroll');
		if (direct == 'right') {
			leftOffset = leftOffset + step;
			if (needOffset < leftOffset) leftOffset = needOffset;
			if (needOffset == leftOffset || leftOffset == 0) {
				clearInterval(interval);
				scrollLock = 0;
			}
			document.getElementById('tscrolltb').style.left =  leftOffset + 'px';
		} else {
			leftOffset = leftOffset - step;
			if (needOffset > leftOffset) leftOffset = needOffset;
			if (needOffset == leftOffset || scrollCont.scrollWidth == scrollCont.offsetWidth) {
				clearInterval(interval);
				scrollLock = 0;
			}
			document.getElementById('tscrolltb').style.left =  leftOffset + 'px';
		}
	}
}

function toLeft() {
	var table = document.getElementById('tscrolltb');
	var tds = table.getElementsByTagName('td');
	if (currLeft == null) currLeft = 0;
 
	if (!scrollLock && currLeft) {
		scrollLock = 1;
		var leftTd = tds[currLeft - 1];
		var needOffset = leftOffset + leftTd.clientWidth + (restNeedOffset ? restNeedOffset : 0);
		
		interval = setInterval('tabScroll(' + scrollStep + ',' + needOffset + ', "right")', scrollIdle);
		currLeft--;
	} else if (restNeedOffset) {
		scrollLock = 1;
		var needOffset = restNeedOffset;
		interval = setInterval('tabScroll(' + scrollStep + ',' + needOffset + ', "right")', scrollIdle);
	}
	
	if (currLeft == 0) {
		document.getElementById('toleft').src = lArrowInact.src;
	}

	if (restNeedOffset) {
		document.getElementById('toright').src = rArrowAct.src;
		restNeedOffset = 0;
		hasRestOffset = 0;
	}
}

function toRight() {
	var table = document.getElementById('tscrolltb');
	var scrollCont = document.getElementById('tscroll');
	var tds = table.getElementsByTagName('td');
	var lastTd = tds[tds.length - 1];
	if (currLeft == null) currLeft = 0;
	if (scrollCont.scrollWidth <= scrollCont.offsetWidth) return;
	
	// Прокручиваем вправо только если это не последний элемент
	if (!scrollLock && currLeft < tds.length && !hasRestOffset) {
		scrollLock = 1;
		var leftTd = tds[currLeft];
		
		// Ширина остатка скроллинга справа
		var restWidth = table.offsetWidth - (scrollCont.offsetWidth - leftOffset);
		
		var scrollWidth = scrollCont.scrollWidth;
		if (isIE && agentVer < 8 && parseInt(table.style.left) != NaN)
			scrollWidth += parseInt(table.style.left);
		
		// Для браузеров которые в режиме реального времени изменяют свойство scrollWidth
		if ((scrollWidth - scrollCont.offsetWidth) < lastTd.offsetWidth)
			restNeedOffset = scrollWidth - scrollCont.offsetWidth;
		
		// Для браузеров у которых свойство scrollWidth никогда не меняется
		if (restWidth < leftTd.clientWidth)
			restNeedOffset = restWidth;
		
		// Посчитать новое смещение
		var needOffset = leftOffset - (restNeedOffset ? restNeedOffset : leftTd.clientWidth);
		
		interval = setInterval('tabScroll(' + scrollStep + ',' + needOffset + ')', scrollIdle);
		if (!restNeedOffset) currLeft++;
	}

	// Если был сдвиг вправо первый раз, активируем стрелку влево
	if (currLeft == 1 || restNeedOffset) {
		document.getElementById('toleft').src = lArrowAct.src;
	}
	
	// Если есть остаток элемента справа и он уже прокручен
	if (restNeedOffset) {
		document.getElementById('toright').src = rArrowInact.src;
		hasRestOffset = 1;
	}
}

function toRightPersistent() {
	pinterval = setInterval('toRight()', scrollIdle);
}

function toRightPersistentOff() {
	clearInterval(pinterval);
}

function toLeftPersistent() {
	pinterval = setInterval('toLeft()', scrollIdle);
}

function toLeftPersistentOff() {
	clearInterval(pinterval);
}

// Select banner
function showBanner(tab, bannerID) {
	var imgs = tab.getElementsByTagName('img');
	var actB = document.getElementById(bannerID);
	if (imgs && actB && imgs.length) {
		var banners = actB.parentNode.getElementsByTagName('div');
		for (i = 0; i < banners.length; i++) {
			var banner = banners[i];
			if (banner.id)
				banner.style.display = 'none';
		}
		actB.style.display = 'block';

		var actimg = imgs[0];
		var tds = tab.parentNode.getElementsByTagName('td');
		for (i = 0; i < tds.length; i++) {
			var td = tds[i];
			var siblimgs = td.getElementsByTagName('img');
			if (siblimgs && siblimgs.length) {
				siblimg = siblimgs[0];
				if (siblimg.src.indexOf('_act'))
					siblimg.src = siblimg.src.replace('_act.', '.');
			}
		}
		actimg.src = actimg.src.replace(/.(jpg|png|gif)/, '_act.$1');
	}
}

