/*
 *
 * LIBRARY of commonly useful functions and effects
 *
 */



function dynref( address, label, classname ) {
	if ( address && address.length ) {

		// join array elements to get string, then replace any occurence of '?' by '@'
		var temp = address.join( '' );
		var mailadr = temp.replace( /\?/, '@' );

		if ( !label || !label.length ) label = mailadr;
		if ( !classname ) classname = "email";

		document.write( "<a class=\"" + classname + "\" href=\"mailto:" + mailadr + "\">" + label + "</a>" );

	}
}


function focusFirstEdit( node ) {

	if ( ( ( node.nodeName == "INPUT" ) && node.getAttribute( "type" ).match( /^text|password$/i ) ) ||
																	( node.nodeName.match( /SELECT|TEXTAREA/i ) ) ) {
		if ( !node.disabled && !node.readOnly ) {
			node.focus();
			return true;
		}
	}


	if ( node.childNodes && ( node.childNodes.length > 0 ) ) {
		var child = node.firstChild;
		while ( child && child.parentNode )
			if ( focusFirstEdit( child ) )
				return true;
			else
				child = child.nextSibling;
	}


	return false;
}


function selectAll() {
	node = document.getElementsByTagName( 'BODY' )[0];
	if ( !node || !node.nodeName )
		return;

	__selectAll( node, true );
}
function selectNone() {
	node = document.getElementsByTagName( 'BODY' )[0];
	if ( !node || !node.nodeName )
		return;

	__selectAll( node, false );
}
function __selectAll( node, value ) {
	if ( ( node.nodeName == "INPUT" ) && node.getAttribute( "type" ).match( /^checkbox$/i ) ) {
		node.checked = value;
		return;
	}

	if ( node.childNodes && ( node.childNodes.length > 0 ) ) {
		var child = node.firstChild;
		while ( child && child.parentNode ) {
			__selectAll( child, value );
			child = child.nextSibling;
		}
	}
}



/* EOF */