
 /*

	filename:	/js/evt.js
	version:	1.3 - 2007-02-22 - mkr

	author:		martin (dot) krause (at) gpm (dot) de 

*/

/*
	1.3 - mkr: added _flush on .remove()
	1.2 - mkr: added cache._remove()
	1.1 - mkr: fixed minor bugs
*/
/*!
@function evt()
@abstract constructor
*/

function evt () {
	if(!self) {this.self = this;}
	self._cachedEvts = [];
}

/*!
@function evt.add(_el, _evt, _fn)
@param 	_el: element to add eventhandler 
		_evt: type of eventhandler
		_fn: function that should be called 
@abstract adding eventhanlder (_evt) calling function (_fn) on element (_el). using even._cache to prevent memory leaks
*/
evt.prototype.add = function(_el,_evt,_fn) {
	// moz
	if (_el.addEventListener) {
		_el.addEventListener(_evt,_fn,false);

	}
	// ie 
	else if (_el.attachEvent) {
		_el["e"+_evt+_fn] = _fn;
		_el[_evt+_fn] = function() { _el["e"+_evt+_fn]( window.event ); }
		_el.attachEvent( "on"+_evt, _el[_evt+_fn] );
	}
	else {
		_el["on"+_evt] = _el["e"+_evt+_fn];
	}
};

/*!
@function evt.remove(_el, _evt,_fn,_flush)
@param 	_el: element to add eventhandler 
		_evt: type of eventhandler
		_fn: function that should be called 
@abstract removing eventhanlder (_evt) calling function (_fn) on element (_el).
*/
evt.prototype.remove = function (_el,_evt,_fn){
		// moz
		if(_el.removeEventListener){
			_el.removeEventListener(_evt,_fn,false);
		}
		// ie
		if(_el.detachEvent){
			_el.detachEvent( "on"+_evt,_el[_evt+_fn] );
			_el[_evt+_fn] = null;
			_el["e"+_evt+_fn] = null;
		}
		if(_evt.substring(0, 2) != 'on'){
			_evt = 'on' + _evt;
		}
		_el[_evt] = null;
};
 
evt = new evt();
 
 

// create namespace
if (!window.IHO) {window.IHO = {};}
var $NS = window.IHO;
$NS.core = {
	_options: ['15 sec','30 sec','60 sec','90 sec','120 sec', '3 min','5 min'],
	
	init: function () {
		$NS.core.addHandler();
	},
	
	addHandler: function () {
		evt.add(document,'click',$NSC.handleEvent);
		evt.add(window,'unload',function() {evt.remove('document','click',$NSC.handleEvent);} );
	},
	 
	
	// handles global event: just one eventhandler on the global object (document), using target/srcElement to recognize action
	handleEvent: function(e) {
		var _el = e.target || e.srcElement;
		var _id = _el.id;
		var _class = _el.className;

		switch(_id) {
			case "akw-textarea":
				$NSC.toggleTextareas();
			break;

			case "akw-select":
				$NSC.toggleSelects();
			break;
			
			
		}

	},
	
	toggleTextareas: function() {
		$NSC.toggleElements('textarea','select');
	},

	toggleSelects: function() {
		$NSC.toggleElements('select','textarea');
	},

	toggleElements: function(from,to) {
		if (!from || !to) {return false;}

 		// get everything
		var _col = document.getElementsByTagName(from);
		var _n = _col.length;
		var _tmpEl;

		switch (to) {
			// create select list using $NSC_options as <option>
			case 'select':
				_tmpSelect = document.createElement(to);
				var _options = $NSC._options;
					_tmpOption = document.createElement('option');
					_tmpOption.setAttribute('value','');
					_tmpOptionText = document.createTextNode('');
					_tmpOption.appendChild(_tmpOptionText);
					_tmpSelect.appendChild(_tmpOption);
				for (var k in $NSC._options) {
					_tmpOption = document.createElement('option');
					_tmpOption.setAttribute('value','Konz. '+_options[k]);
					_tmpOptionText = document.createTextNode('Konz. '+_options[k]);
					_tmpOption.appendChild(_tmpOptionText);
					_tmpSelect.appendChild(_tmpOption);
				}
				// store reference
				_tmpEl = _tmpSelect;
				
			break;

			default:
				_tmpEl = document.createElement(to);
				_tmpEl.style.display="none";
			break;
		}
		
		// replace nodes
		while(_n--) {
			// get current 
			var _el = _col[_n];
			_elId = _el.getAttribute('id');
			if ( _elId == 'idCoverage' || _elId==null || _elId.substr(0, 3)=='tmp') { continue; }
			_elValue = _el.value;
			_elName = _el.getAttribute('name');
			_elOnchange = (_el.onchange) ? _el.onchange : false;			
			 // clone temporary element, set attributes
			_nEl = _tmpEl.cloneNode(true);
			
			// set default preselection
			if(_elId == 'viruzid' || _elId == 'cleanConditions') {
				_nEl.options[0].text = '--- keine Angaben ---';
			} else {
				_nEl.options[0].text = '--- keine Angaben bzw. Wert Viruzid ---';
			}
			_nEl.setAttribute('id',_elId);
			_nEl.setAttribute('name',_elName);
			_nEl.onchange = (_elOnchange !== false) ? _el.onchange : '';			
//			console.log(_elOnchange+' >> '+ _nEl.onchange )
			//replace!
			_el.parentNode.replaceChild(_nEl,_el);
			document.getElementById(_elName+'list').style.display=(to=='select'?'none':'block');
			
			// zander stuff - preselect based on textarea value
			if (to == 'select') {
				// regrab element
				if(!_elId) {continue;} 
				  _el = document.getElementById(_elId); 
				if(!_el) {continue;} 
				// get options
				var _kol = _el.getElementsByTagName('option');
				var _m = _kol.length;
				// parse options
				while(_m--) {
					if ( _kol[_m].value == _elValue ) { _kol[_m].selected='selected'; }
				}
			}
		}
		
	},

	
	misc: function(){
		
	}
};

var $NSC = $NS.core;

evt.add(window,'load',function() {$NSC.init();} );
