/*
	Yetii - Yet (E)Another Tab Interface Implementation
	http://www.kminek.pl/lab/yetii/
	Copyright (c) 2007 Grzegorz Wojcik
	Code licensed under the BSD License:
	http://www.kminek.pl/bsdlicense.txt
*/

function Yetii() {

	this.defaults = {
		
		id: null,
		active: 1,
		timeout: null,
		interval: null,
		tabclass: 'LCDef',
		activeclass: 'activeA',
		activLIelem: 'activeLI',
		alfaSteps: 15,
		animSpeed: 20
	
	};

	this.defaults.alfaSteps = Math.min(100/this.defaults.alfaSteps);

	for (var n in arguments[0]) { this.defaults[n]=arguments[0][n]; };	

	this.getTabs = function() {
        var retnode = [];
        var elem = document.getElementById(this.defaults.id).getElementsByTagName('*');
		
		var regexp = new RegExp("(^|\\s)" + this.defaults.tabclass.replace(/\-/g, "\\-") + "(\\s|$)");

        for (var i=0, n=elem.length; i<n; i++) 
		{
	        if (regexp.test(elem[i].className)) 
			{
				retnode.push(elem[i]);
				this.addFadeStyle(elem[i]);
			}
        }
    
        return retnode;
    };

	this.addFadeStyle = function(object)
	{
		object.style.zoom = 1;
		object.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + 0 + ")";
		object.style.opacity = 0;		
	}
	
	this.links = document.getElementById(this.defaults.id + '-nav').getElementsByTagName('a');
	this.liElem =  document.getElementById(this.defaults.id + '-nav').getElementsByTagName('LI');
	
	this.showHide = function(number)
	{
		for (var i=0, n=this.tabs.length; i<n; i++) 
		{
			var self = this.tabs[i];
			((i+1)==number) ? this.show(self) : this.hide(self);
			this.links[i].className = ((i+1)==number) ? this.defaults.activeclass : '';
			this.liElem[i].className = ((i+1)==number) ? this.defaults.activLIelem : '';
        }
    
    };

	this.show = function(self)
	{
		self.style.display = 'block';
		this.anim(self,this.defaults.alfaSteps,this.defaults.animSpeed,100);
	}

	this.anim = function(object,alfaSteps,animSpeed,showTab)
	{
		function getOpacity(){return(object.filters ? object.filters[0].opacity : object.style.opacity*100)};
		
		if(object.timer)
			clearTimeout(object.timer);
		
		if(object.filters)
			object.filters[0].opacity += alfaSteps;
		else
			object.style.opacity=(+object.style.opacity)+alfaSteps/100;
		   
		if(getOpacity() != showTab)
		{
			var self = this;
			object.timer = setTimeout(function(){self.anim(object,alfaSteps,animSpeed,showTab)},animSpeed);
		}
	}
	
	this.hide = function(object)
	{
		if(object.timer)
		{
			clearTimeout(object.timer)
//			delete object.timer;
		}
		object.filters ? object.filters[0].opacity = 0 : object.style.opacity = 0;
		object.style.display = 'none';
	}
	
	this.rotate = function(interval)
	{    
        this.showHide(this.defaults.active);
        this.defaults.active++;
    
        if(this.defaults.active > this.tabs.length) this.defaults.active = 1;
    
        var self = this;
        this.defaults.timeout = setTimeout(function(){self.rotate(interval);}, interval*1000);
    
    };
	
	this.tabs = this.getTabs();
	this.showHide(this.defaults.active);
	
	var self = this;
	for (var i=0, n=this.links.length; i<n; i++)
	{
		this.links[i].customindex = i+1;
		this.links[i].onclick = function()
		{	
			if(self.defaults.timeout) 
				clearTimeout(self.defaults.timeout); 
			self.showHide(this.customindex); 
			return false; 
		};
    }
	
	if (this.defaults.interval) this.rotate(this.defaults.interval);
	
};

/* Background cache */

function initMenu()
{
		try {document.execCommand("BackgroundImageCache", false, true);} catch (e){};
		changePage();
}

window.onload = initMenu;


function changePage() {
	if (self.parent.frames.length != 0)
		self.parent.location=document.location;
	}

