var curTimeout		= new Array();
var timeOutDelay	= 300;
var intervalDelay	= 15;
var step			= 0.05;

var faders		= new Array(); // Array of intervalIds
var tabs		= ['tab1_1', 'tab1_2', 'tab2_1', 'tab2_2', 'tab3_1', 'tab3_2'];
var imgs		= ['img1', 'img2', 'img3'];


pDomApi.addEvent(window, 'domload', function() {

	initTabs();

	for(var i = 0; i < imgs.length; i++) {
		pDomApi.addEvent(imgs[i], 'mouseover', mFadeIn);
	}

	for(var i = 0; i < tabs.length; i++) {
		pDomApi.addEvent(tabs[i], 'mouseover', mFadeIn);
		if(tabs[i].charAt(3) != '1') {
			pDomApi.addEvent(tabs[i], 'mouseout', mFadeOut);
		}
	}

	pDomApi.addEvent('maplink', 'click', jumpToFirstTab);
});


function initTabs() {
	for(var i = 0; i < tabs.length; i++) {
		var elem = document.getElementById(tabs[i]);
		if (false && elem.nodeType == 1 && tabs[i].charAt(3) == '1') {
			// Set first element to display by default.
			elem.style.display = 'block';
			elem.style.opacity = 1;
			elem.style.filter = 'alpha(opacity=100)';
		}
		else {
			elem.style.display = 'none';
			elem.style.opacity = 0;
			elem.style.filter = 'alpha(opacity=0)';
		}
	}
}

function mFadeIn(e) {
	clearAllTimeouts();
	if (!e) var e	= window.event;targ = e.target ? e.target : e.srcElement;if (targ.nodeType == 3) {targ = targ.parentNode;}

	var targId		= targ.id;
	var tabId		= (targId.indexOf('img') == 0 || targId.indexOf('tab') == 0) ? targId.charAt(3) : 0;
	var tabElems	= getFadeElems(tabId);
	var fromElement	= (e.relatedTarget) ? e.relatedTarget : e.fromElement;
	var fromElemId	= (fromElement) ? ((fromElement.id.indexOf('img') == 0 || fromElement.id.indexOf('tab') == 0) ? fromElement.id.charAt(3) : 0) : 0;

	if (tabId == 0 || tabElems.length == 0 || tabId == fromElemId || tabElems[0].opacity >= 1) {
		return false;
	}

	var outTabs = getAlternateTabs(tabId);
	for(var i = 0; i < outTabs.length; i++) {
		fadeOut(getFadeElems(outTabs[i]));
	}
	fadeIn(tabElems);
}

function mFadeOut(e) {
	if (!e) var e	= window.event;targ = e.target ? e.target : e.srcElement;if (targ.nodeType == 3) {targ = targ.parentNode;}
	clearAllTimeouts();

	var targId		= targ.id;
	var tabId		= (targId.indexOf('img') == 0 || targId.indexOf('tab') == 0) ? targId.charAt(3) : 0;
	var tabElems	= getFadeElems(tabId);
	var toElement	= (e.relatedTarget) ? e.relatedTarget : e.toElement;
	var toElemId	= (toElement) ? ((toElement.id.indexOf('img') == 0 || toElement.id.indexOf('tab') == 0) ? toElement.id.charAt(3) : 0) : 0;

	if (tabId == 0 || tabElems.length == 0 || tabId == toElemId || tabElems[0].opacity <= 0) {
		return false;
	}
	if(tabId != 1) {
		fadeIn(getFadeElems(1));
	}
	fadeOut(tabElems);
}

function fadeIn(elems) {
	curTimeout.push(setTimeout(function() {
			fade(elems, 'in', parseFloat(elems[0].style.opacity), 1, step);
		}, timeOutDelay));
}

function fadeOut(elems) {
	curTimeout.push(setTimeout(function() {
			fade(elems, 'out', parseFloat(elems[0].style.opacity), 0, step);
		},timeOutDelay));
}

function clearAllTimeouts() {
	for(var i = 0; i < curTimeout.length; i++) {
		window.clearTimeout(curTimeout[i]);
	}
	curTimeOut = new Array();
}

function fade(elems, dir, start, target, interval) {
	var newStart = (dir == 'in') ? parseFloat(start + interval) : parseFloat(start - interval);

	for(var i = 0; i < elems.length; i++) {
		var elem = elems[i];
		elem.style.display = 'block';
		elem.style.opacity = newStart;
		elem.style.filter = 'alpha(opacity='+newStart*100+')';
	}
	if (dir == 'in' && newStart >= target) {
		return;
	}
	else if (dir == 'out' && newStart <= target) {
		for(var i = 0; i < elems.length; i++) {
			var elem = elems[i];
			elem.style.display = 'none';
		}
		return;
	}
	else {
		setTimeout(function() {
			fade(elems, dir, newStart, target, interval);
		},intervalDelay);
	}
}

function jumpToFirstTab() {
	var tab1_1 = document.getElementById('tab1_1');
	var tab1_2 = document.getElementById('tab1_2');
	var tab2_1 = document.getElementById('tab2_1');
	var tab2_2 = document.getElementById('tab2_2');

	tab1_1.style.display = 'block';
	tab1_1.style.opacity = 1;
	tab1_1.style.filter = 'alpha(opacity=100)';
	tab1_2.style.display = 'block';
	tab1_2.style.opacity = 1;
	tab1_2.style.filter = 'alpha(opacity=100)';

	tab2_1.style.display = 'none';
	tab2_1.style.opacity = 0;
	tab2_1.style.filter = 'alpha(opacity=0)';
	tab2_2.style.display = 'none';
	tab2_2.style.opacity = 0;
	tab2_2.style.filter = 'alpha(opacity=0)';

	clearAllTimeouts();
	return false;
}

function getAlternateTabs(notId) {
	var foundTabs = '';

	for(var i = 0; i < tabs.length; i++) {
		var tabId = tabs[i].charAt(3);
		if (foundTabs.indexOf(tabId+'_') == -1 && tabId != notId) {
			foundTabs += tabId + '_';
		}
	}
	foundTabs = foundTabs.substr(0, foundTabs.length-1);
	return foundTabs.split('_');
}
function getFadeElems(tabId) {
	var tabElems = new Array();
	for(var i = 0; i < tabs.length; i++) {
		if (tabs[i].indexOf('tab'+tabId) > -1) {
			tabElems.push(document.getElementById(tabs[i]));
		}
	}
	return tabElems;
}