var jstabs = function(){

	// Location of the CSS file to load for JS enabled people
	var css_loc = '/sys/tabstuff.css';
	
	// ID of the container around all the tab data
	var cont_id = 'tabsarea';
	
	// Tag name for the tab headings
	var tab_tag = 'h2';
	
	// Tag name for the tab contents
	var cont_tag = 'div';
	
	// Class name of the tab contents
	var cont_class = 'tabcontents';
	
	// Don't edit these - needed variables
	var tabs=null, data=null, container=null, active=null;
	
	return {
	
		init : function(){
			try{
				container = document.getElementById(cont_id);
				tabs = container.getElementsByTagName(tab_tag);
				data = getElementsByClassName(container, cont_tag, cont_class);
				addLinks();
				addStylesheet(css_loc);
				addActiveContainer();
				jstabs.showtab(findOpenedTab());
			}catch(e){}
		},
		
		showtab : function(pos){
			for(var i=0, tab; tab = tabs[i]; i++) tab.className = '';
			tabs[pos].className = 'active';
			active.innerHTML = data[pos].innerHTML;
			createCookie('active_tab', tabs[pos].firstChild.firstChild.nodeValue, 60);
		}
		
	}
	
	function addStylesheet(url){
		var head = document.getElementsByTagName('head')[0];
		var stylesheet = document.createElement('link');
		stylesheet.setAttribute('rel','stylesheet');
		stylesheet.setAttribute('type','text/css');
		stylesheet.setAttribute('href',url);
		head.appendChild(stylesheet);
	}
	
	function addActiveContainer(){
		active = document.createElement('div');
		active.setAttribute('id','activecontainer');
		container.appendChild(active);
	}
	
	function addLinks(){
		for(var i=0, tab; tab = tabs[i]; i++){
			var a = document.createElement('a');
			a.setAttribute('href', 'javascript:jstabs.showtab('+i+')');
			a.appendChild(tab.firstChild);
			tab.appendChild(a);
		}
	}
	
	function findOpenedTab(){
		var lastTabText = readCookie('active_tab');
		for(var i=0, tab; tab = tabs[i]; i++){
			if(tab.firstChild.firstChild.nodeValue == lastTabText){
				return i;
			}
		}
		return 0;
	}
	
}();


function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	} else {
		elm['on' + evType] = fn;
	}
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

// Function for saving a cookie, from http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	var cookieString = name+"="+value+expires+"; path=/";
	document.cookie = cookieString;
}

// Function for getting a cookie, from http://www.quirksmode.org/js/cookies.html
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

addEvent(window, 'load', jstabs.init, false);