/* 
 * dhLib: Simple Dynamic-HTML-Library
 * Konrad Schandera X / MMVII 
 * 
 * base-section
 *
 * functions for returning consistent values for 
 * cross-browser-inconsistent methods, such as:
 * events,
 * event's firing elements
 * event's mouse-offsets in elements
 * etc.
 */ 




/* allocated by dhLib_init() and filled with the browser-string */
dhLib_browser = "undefined"; 




/*
 * initializes the dhLib, sets dhLib_browser-string
 */
function dhLib_init() {
	nav = navigator.userAgent;
	if	( nav.indexOf("MSIE") != -1 ) 	{ dhLib_browser = "IE";		}
	else if	( nav.indexOf("KHTML") != -1 )	{ dhLib_browser = "KHTML";	}
	else if	( nav.indexOf("Gecko") != -1 )	{ dhLib_browser = "GECKO";	}
	else if	( nav.indexOf("Opera") != -1 )	{ dhLib_browser = "PRESTO";	}
} // end.init






/*
 * returns the event-object wich was fired from the element,
 * that is, it simply returns the first argument, wich should be an event in 
 * case of gecko/opera/khtml, or gets the global variable 'event', wich is 
 * used when InternetExplorer is used. always to be called when events from
 * elements are used to get event-data (such as mouse-positions etc.)
 */
function dhLib_getEvent(e) {
	if ( dhLib_browser == "IE" ) {
		return( event );
	} // detected IE, get globally fired 'event'
	else {
		return( e );
	} // end.other browsers, simply return the event
} // end.getEvent






/* 
 * returns the event's offsets from the originating element
 */
function dhLib_getOffsetX(e) {
	if ( dhLib_browser=="IE" || dhLib_browser=="PRESTO" || dhLib_browser=="KHTML" ) {
		return( e.offsetX );
	} // end.get by event.offsetX (IE,OPERA,SAFARI);
	else if ( dhLib_browser=="GECKO" ) {
		return( e.layerX );
	} // end.get by event.layerX (GECKO);
} // end.getOffsetX

function dhLib_getOffsetY(e) {
	if ( dhLib_browser=="IE" || dhLib_browser=="PRESTO" || dhLib_browser=="KHTML" ) {
		return( e.offsetY );
	} // end.get by event.offsetY (IE,OPERA,SAFARI);
	else if ( dhLib_browser=="GECKO" ) {
		return( e.layerY );
	} // end.get by event.layerY (GECKO);
} // end.getOffsetX





/*
 * returns the element wich fired the event given as argument
 */
function dhLib_getEventElement(e) {
	if ( dhLib_browser=="IE" ) {
		return( e.srcElement );
	} // end.ie, return srcElement
	else {
		return( e.target );
	} // end.all others return target
} // end.getEventElement


/* returns the scrolling inside the window */
function dhLib_getWindowScrollOffsetX() {
	if ( dhLib_browser=="IE" ) { return( document.body.scrollLeft );	}	 // end.detected IE
	else { return( window.pageXOffset ); }
} // end.getScrollX

function dhLib_getWindowScrollOffsetY() {
	if ( dhLib_browser=="IE" ) { return( document.body.scrollTop ); } // end.ie
	else { return( window.pageYOffset ); }
} // end.getScrollY




/* initialises the base */
dhLib_init();
