function $(elem) { return document.getElementById(elem); }

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var em = 1;

function opacity(id, opacStart, opacEnd, next_id) { 
	var speed = Math.round(500 / 100); 
	var timer = 0; 
	
	if(opacStart > opacEnd) { 
		for(i = opacStart; i >= opacEnd; i--) {
			if (i == opacEnd) {
				setTimeout("changeOpac(" + i + ",'" + id + "');articleKill('"+id+"','"+next_id+"');",(timer * speed));
			} else {
				setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			} 
			timer++; 
		} 
	} else if(opacStart < opacEnd) { 
		for(i = opacStart; i <= opacEnd; i++) { 
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed)); 
			timer++; 
		} 
	} 
} 

function changeOpac(opacity, id) { 
	if (document.getElementById(id) == null) return; 
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100); 
	object.MozOpacity = (opacity / 100); 
	object.KhtmlOpacity = (opacity / 100); 
	object.filter = "alpha(opacity=" + opacity + ")";
}

function articleSwitch(elem) {
	var el = elem.id.split(':')[1];
	if (el == em) return;
	if(document.getElementById('group:'+ el) === null) return;
	var gp_el = document.getElementById('group:'+ el);
	var bx_el = document.getElementById('box:'+ el);
	
	bx_el.src = "images/f_box.gif";
	document.getElementById('box:'+em).src = "images/e_box.gif";
	
	opacity('group:'+em,100,0,gp_el.id);
	var ace = Number(el)*3;
	//document.getElementById('ace').innerHTML = ace;
	//document.getElementById('acs').innerHTML = (el == 1 ? 1 : ace-2);
	em = el;
}


function articleKill(id,next_id) {
	document.getElementById(id).style.display = 'none';
	document.getElementById(next_id).style.display = '';
	opacity(next_id,0,100);
}

function clearArticles() {
	changeOpac(0,'group:2');
	changeOpac(0,'group:3');
	changeOpac(0,'group:4');
	changeOpac(0,'group:5');
}

function validate() {
	var invalid = '';
	for( var i = 0; i < arguments.length; i++ ) {
		var sp = arguments[i].split(':');
		var ele = document.getElementById(sp[1]);
		var elev = (ele.type == 'select-one' ? ele.options[ele.selectedIndex].value : ele.value);
		if (elev == '' || elev == null) {
			invalid += "\t"+'- '+sp[0]+"\n";
		}
	}
	if (invalid != '') {
		alert('Validation Failed.'+"\n"+'Please ensure the following fields have data:'+"\n"+invalid);
		return false;
	}
	return true;
}