/**
*
* JavaScript knihovna pro práci s událostmi
*
* @package		sllibs3
* @subpackage	jslibs
* @version		$Id: sl.event.js 9117 2009-05-06 14:02:28Z filip $
* @encoding		UTF-8
* @author		Michal Kouďa <michal.kouda@e4you.cz>
* @copyright	(c) e4you spol. s r.o. 2002-2008, <design@e4you.cz>
*
* Obsah tohoto souboru je majetkem e4you spol. s r.o. Jeho kopírování,
* pozměňování, šíření a jakékoli další využití je možné výhradně
* se souhlasem e4you spol. s r.o.
*
*/

/// pokud neexistuje jmenný prostor sl. vytvoříme ho
if(!sl) { var sl = {} };

/// definujeme modul a jeho metody
sl.event = {

	/**
	* Konstanty pro klávesové kódy
	*/
	KEY_ARROW_DOWN:	40,
	KEY_ARROW_UP: 	38,
	KEY_ESC:		27,
	KEY_ENTER:		13,
	KEY_BACKSPACE:	8,
	KEY_TAB:		9,
	KEY_PAGE_UP:		33,
	KEY_PAGE_DOWN:	34,
	KEY_HOME:			36,
	KEY_END:		35,

	/**
	* Vrátí správný keyCode buď z předaného elementu nebo pro IE z window.event
	*
	* @param event objekt s událostí
	*
	* @return integer keyCode stisknuté klávesy
	*/
	getKeyCode: function(event) {
		var result = null;
		if (event && event.keyCode) {
			result = event.keyCode;
		} else if(window.event && window.event.keyCode) {
			result = window.event.keyCode;
		}
		return result;
	},


	/**
	* Zastaví další propagaci eventu
	*
	* @param event objekt s událostí
	*/
	stopPropagation: function(event) {
		/// pokud je předán objekt události nejsme v IE
		if(event && event.stopPropagation) {
			event.stopPropagation();
		} else {
			try {
				window.event.cancelBubble = true;
			} catch (e) {}
		}
	},


	/**
	* Přidá objektu ovladač události
	*
	* @param _object objekt, kterému přiřazujeme ovladač události
	* @param _event_name jméno události, pro kterou přiřazujeme ovladač
	* @param _handler funkce s ovladačem dané události
	*/
	addHandler: function (_object, _event_name, _handler) {
		/// DOM model
		if (_object.addEventListener) {
			_object.addEventListener(_event_name, _handler, false);
		/// MS IE model
		} else if (_object.attachEvent) {
			_object.attachEvent('on' + _event_name, _handler);
		}
	},


	/**
	* Odejme objektu ovladač události
	*
	* @param _object objekt, jemuž odebíráme ovladač události
	* @param _event_name jméno události, pro kterou přiřazujeme ovladač
	* @param _handler funkce s ovladačem dané události
	*/
	removeHandler: function(_object, _event_name, _handler) {
		/// DOM model
		if (_object.removeEventListener) {
			_object.removeEventListener(_event_name, _handler, false);
		/// MS IE model
		} else if (_object.detachEvent){
			_object.detachEvent('on' + _event_name, _handler);
		}
	},

	/**
	* Přidá objektu ovladač události - zavrženo
	*
	* @param _object objekt, kterému přiřazujeme ovladač události
	* @param _event_name jméno události, pro kterou přiřazujeme ovladač
	* @param _handler funkce s ovladačem dané události
	* @deprecated místo této funkce je třeba, použít sl.event.addHandler
	*/
	addEvent: function (_object, _event_name, _handler) {
		sl.event.addHandler(_object, _event_name, _handler);
	},


	/**
	* Odejme objektu ovladač události
	*
	* @param _object objekt, jemuž odebíráme ovladač události
	* @param _event_name jméno události, pro kterou přiřazujeme ovladač
	* @param _handler funkce s ovladačem dané události
	* @deprecated místo této funkce je třeba, použít sl.event.removeHandler
	*/
	removeEvent: function(_object, _event_name, _handler) {
		sl.event.removeHandler(_object, _event_name, _handler)
	}

}

