/**
 * Obtém um elemento.
 */
function getElement ( id ) {
	return document.getElementById( id );
}

/**
 * Obtém elementos de um nó que tem uma certa class.
 */
function getElementsByClassName ( classname, node )  {
    if ( !node ) {
		node = document.getElementsByTagName("body")[0];
	}
    var a = [];
    var re = new RegExp( '\\b' + classname + '\\b' );
    var els = node.getElementsByTagName( "*" );
    for ( var i = 0; i < els.length; i++ ) {
        if ( re.test( els[i].className )) {
			a.push( els[i] );
		}
	}
    return a;
}

/**
 * Mostra um elemento.
 */
function show ( id ) {
	getElement( id ).style.display = 'block';
}

/**
 * Esconde um elemento.
 */
function hide ( id ) {
	getElement( id ).style.display = 'none';
}

/**
 * Inverte o estado de exibição de um elemento.
 */
function toggle ( id ) {
	if ( getElement( id ).style.display != 'none' ) {
		hide( id );
	}
	else {
		show( id );
	}
}

/**
 * Mostra um elemento, escondendo o último exibido.
 */
var last = null;
function radio ( id ) {
	if ( last != null ) {
		hide( last );
	}
	if ( last != id ) {
		show( id );
		last = id;
	}
	else {
		last = null;
	}
}

function selectAll ( prefix, form ) {
	for ( var i = 0; i < form.elements.length; i++ ) {
		var elem = form.elements[i];
		if ( ( elem.type == 'checkbox' ) && ( elem.id.startsWith( prefix ) ) ) {
			alert( elem.id );
		}
	}
}

function getEventSource ( e ) {
	// get the source element in a cross-browser way
	if ( window.event ) { 
		return window.event.srcElement;
	} 
	else if ( e.target ) { 
		return e.target;
	} 
	return;
}

