/**
 * Include script for javascript application layer.
 * 
 * @author R.J.T. de Vries <rdevries@thirdwave.nl>
 * @version 1.00, 09/04/2006
 * @access public
 */

//------------------------------------------------------------------------------
// PHASE I: INCLUDE ALL NECESSARY JAVASCRIPT FILES.
//------------------------------------------------------------------------------
document.write("<script src='/cms/jscripts/cms.event.js'></script>");
document.write("<script src='/cms/jscripts/cms.functions.js'></script>");
document.write("<script src='/cms/jscripts/cms.Timeout.js'></script>");
document.write("<script src='/inc/jscripts/Submenu.js'></script>");
document.write("<script src='/inc/jscripts/FormHandler.js'></script>");
document.write("<script src='/inc/jscripts/Timeline.js'></script>");

//------------------------------------------------------------------------------
// PHASE II: INITIALIZATION FUNCTION, CALLED ON DOCUMENT LOAD EVENT
//------------------------------------------------------------------------------

/**
 * Instance of the Submenu object.
 * @var object submenu
 * @access public
 */
var submenu = null;

/**
 * Instance of the FormHandler object.
 * @var object formhandler
 * @access public
 */
var formhandler = null;

/**
 * Instance of the Timeline object.
 * @var object timeline
 * @access public
 */
var timeline = null;

/**
 * Initialization function.
 *
 * @author R.J.T. de Vries <rdevries@thirdwave.nl>
 * @param		boolean		refresh		should the nav-list be refreshed? default to true.
 * @return 	void
 * @access	public
 */
function init() {
	var radios,				// radio elements with attribute 'showssubform' set to 'yes'.
			selects,			// all selects in current document.
			i;						// iterator.

	submenu = new Submenu();
	submenu.init();

	timeline = new Timeline();
	timeline.init();
	
	if ( radios = document.getElementsByAttribute('showssubform', 'yes', 'input') ) {
		for ( i = 0; i < radios.length; i++ ) {
			addEvent(radios[i], 'click', toggleSubform);
			if ( radios[i].checked ) toggleSubform(radios[i]);
		}
	}
	
	selects = document.getElementsByTagName('select');
	for ( i = 0; i < selects.length; i++ ) {
		if ( selects[i].getAttribute('val') ) {
			selects[i].value = selects[i].getAttribute('val');
		}
	}
	
	formhandler = new FormHandler();
	formhandler.init();
} // init()

/**
 * Toggles a subfrom, depending on the given event(source) or given element.
 * Given variable e could either be an event (for Mozilla based browsers), or
 * a radio input element.
 * 
 * @param		type	var
 * @return	type	var
 * @access	public/private
 */
function toggleSubform(e) {
	var eventSrc,			// source of given event.
			val,					// value of the radio element involved.
			subforms,			// subforms that have attr. 'subformto' set to val.
			i;						// iterator.
	
	if ( !e ) e = window.event;
	eventSrc = e.tagName ? e : getEventSrc(e);
	
	if ( eventSrc.tagName.toLowerCase() == 'label' ) {
		eventSrc = document.getElementById(eventSrc.getAttribute('for'));
		if ( !eventSrc ) return false;
	}
	val = eventSrc.value || false;
	
	subforms = document.getElementsByAttribute('issubform', 'yes', 'div');
	for ( i = 0; i < subforms.length; i++ ) {
		if ( subforms[i].getAttribute('subformto') === val ) {
			subforms[i].style.display = 'block';
		} else {
			subforms[i].style.display = 'none';
		}
	}
	
} // toggleSubform()

window.onload = init;