var d_tabs = {
	'selectors':{
		'nav':'#tabs > ul.yui-nav',
		'content':'#tabs > .yui-content > div'
	}
}

$(window).load(function(){
	setTimeout('initTabsScrollable()',10);
});

function initTabsScrollable(){
	$('#tabs').show();
	
	if (tabsPrepare()) {
		tabsSwitch();
	}
}

function tabsPrepare(){
	d_tabs.objects = {}
	for (var key in d_tabs.selectors) {
		d_tabs.objects[key] = $(d_tabs.selectors[key]);
		
		if(!d_tabs.objects[key].get(0)) {
			return false;
		}
	}
	d_tabs.objects.content.hide();
	d_tabs.objects.content = tabsPrepareObjects(d_tabs.objects.content);
	d_tabs.objects.content[0].show();
	
	d_tabs.objects.nav_li = d_tabs.objects.nav.find('> li');
	if(!d_tabs.objects.nav_li.get(0)) return false;
	d_tabs.objects.nav_a = d_tabs.objects.nav_li.find('> a');
	if(!d_tabs.objects.nav_a.get(0)) return false;
	d_tabs.objects.nav
		.wrap('<div id="tabs-nav-wrapper2" style="width:100%;overflow:hidden;"></div>')
		.wrap('<div id="tabs-nav-wrapper" style="width:100%;overflow:hidden;"></div>')
		.css({
			'width':'9999px'
		});
	d_tabs.objects.wrapper2 = $('#tabs-nav-wrapper2');
	d_tabs.objects.wrapper = $('#tabs-nav-wrapper');
	
	d_tabs.options = {
		'maxLeft':0,
		'width':0,
		'selected':0,
		'left':[]
	}
	
	d_tabs.objects.nav_li = tabsPrepareObjects(d_tabs.objects.nav_li);
	d_tabs.objects.nav_li.each(function(e) {
		var self = this;
		d_tabs.options.left[e] = - d_tabs.options.width;
		d_tabs.options.width += self.outerWidth(true);
	});
	d_tabs.options.left[d_tabs.options.left.length] = - d_tabs.options.width;
	d_tabs.options.minLeft = d_tabs.objects.wrapper.width() - d_tabs.options.width;
	
	if(d_tabs.options.minLeft >= d_tabs.options.maxLeft) {
		return true;
	}
	
	d_tabs.objects.wrapper2.prepend('<div id="tabs-nav-left" class="inactive"><div></div></div>');
	d_tabs.objects.wrapper2.append('<div id="tabs-nav-right"><div></div></div>');
	d_tabs.objects.left = $('#tabs-nav-left');
	d_tabs.objects.right = $('#tabs-nav-right');
	
	
	var buttons_width = d_tabs.objects.left.outerWidth(true) + d_tabs.objects.right.outerWidth(true);
	d_tabs.options.minLeft -= buttons_width;
	d_tabs.objects.wrapper.width(d_tabs.objects.wrapper.width() - buttons_width);
	
	tabsMaxActive();
	tabsScroll();
	
	return true;
}

function tabsMaxActive() {
	for (var max = 1; max < d_tabs.options.left.length; max++) {
		if (d_tabs.options.left[max] < d_tabs.options.minLeft) {
			break;
		}
	}
	
	d_tabs.options.active_tab_max = max;
}

function tabsPrepareObjects(elements) {
	for (var i=0; i < elements.length; i++) {
		elements[i] = $(elements[i]);
	}
	
	return elements;
}

function tabsScroll() {
	d_tabs.options.active_tab = 0;
	d_tabs.objects.left.click(function(){
		return tabsScrollDo($(this), -1);
	});
	d_tabs.objects.right.click(function(){
		return tabsScrollDo($(this), 1);
	});
}

function tabsScrollDo(self, delta) {
	if(self.is('.inactive')) return false;
	
	d_tabs.options.active_tab += delta;
	d_tabs.options.active_tab = Math.min(d_tabs.options.active_tab, d_tabs.options.active_tab_max);
	d_tabs.options.active_tab = Math.max(d_tabs.options.active_tab, 0);
	var e = d_tabs.options.active_tab;
	var left = d_tabs.options.left[e];
	
	if(left >= d_tabs.options.maxLeft) {
		left = d_tabs.options.maxLeft;
		self.addClass('inactive');
	}
	else {
		d_tabs.objects.left.removeClass('inactive');
	}
	if(left < d_tabs.options.minLeft) {
		left = d_tabs.options.minLeft;
		self.addClass('inactive');
	}
	else {
		d_tabs.objects.right.removeClass('inactive');
	}
	
	d_tabs.objects.nav.animate({
		marginLeft:left
	},100);
	
	return false;
}

function tabsSwitch() {
	d_tabs.objects.nav_a.each(function(e){
		tabsSwitchDo($(this),e);
	});
}

function tabsSwitchDo(self, e) {
	self.click(function(){
		d_tabs.objects.content[d_tabs.options.selected].hide();
		d_tabs.objects.nav_li[d_tabs.options.selected].removeClass('selected');
		d_tabs.objects.content[e].show();
		d_tabs.objects.nav_li[e].addClass('selected');
		
		var delta = e - d_tabs.options.active_tab;

		if (delta > 0) {
			var width_delta = d_tabs.options.left[d_tabs.options.active_tab] - d_tabs.options.left[e+1];
			if (width_delta > d_tabs.objects.wrapper.width()) {
				tabsScrollDo(d_tabs.objects.right, delta);
			}
		}
		else if (delta < 0) {
			tabsScrollDo(d_tabs.objects.left, delta);
		}
		d_tabs.options.selected = e;

    // Begin --- added by *VYT to call refresh function for iframe content
    var frm = document.getElementById('tab_soil');
    if (frm != null)
    {
        if (frm.parentNode.style.display !='none')
        frm.contentWindow.drawDiagram();
    }
    // End --- added by *VYT to call refresh function for iframe content

		return false;
	});
}

