/* ***********************************************************************************************
file:		tools.js
project: 	indepentend
author: 	Jens Späth (jms) 
contact: 	mail@jens-spaeth.de
date: 		13.08.2007

credits:	Simon Willison: unified load event handler all Browsers
				
summary:	Heap of useful tools and common functions to make javascripting easier.

		
dependencies:	none
				
functions:		$  							        returns document.getElementById(id)
				      $$ 							        returns document.getElementsByTagName(tag)
				
				      EVENT.addLoadEvent 			adds an event on Page Load (browser independent)
				      EVENT.addEvent				  adds event (browser independent)
				      EVENT.addMultipleEvents	adds multiple events (browser independent)
				      EVENT.w3cOrIe				    checks if EventHandling is working the way of w3c or ie 	
				
known problems: none
*********************************************************************************************** */
//alert('Jep, link to tools.js is working!');


//BUG.feed('reading tools.js',3);


/* Common symplifying functions */
function $(id) {
	return document.getElementById(id);
}
function $$(tag) {
	return document.getElementsByTagName(tag);
	alert(call);
}

/* EVENTS ****************************************************************** */
var EVENT;
if (EVENT && (typeof EVENT != "object" || EVENT.NAME))
    throw new Error("Namespace 'EVENT' already exists");
  
// Create our namespace, and specify some meta-information
EVENT = {};
EVENT.NAME = "EVENT";     // The name of this namespace
EVENT.VERSION = 1.0;    // The version of this namespace

/* c2004 Simon Willison: unified load event handler all Browsers */
EVENT.addLoadEvent = function(func) {							
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}
/* unified way to add Event Listener / all Browsers */
EVENT.addEvent = function(id, handler, func) {					
	//alert('calling addEvent('+id+')',2);
	element = $(id);
	
	if(element.addEventListener) {
		//alert('W3c Browser');
		element.addEventListener(handler, func, false);	
	} else {
			if(element.attachEvent) {
				//alert('ie');
				element.attachEvent('on'+handler, func);
	  		} else {
           		//alert('old School');
		   		handler = 'on'+handler;
		   		element.handler = func;	  	
	  		  }
	  }
}
/* unified way to add Event Listener to multiple elements / all Browsers */
EVENT.addMultipleEvents = function(elements, handler, func) { 	
	//BUG.feed('calling addMultipleEvents()',1);
	//alert('calling addMultipleEvents()');

	if (elements[0].addEventListener) {
		//BUG.feed('W3c Browser',2);
		//alert('W3c Browser');
		for(var i=0; i<elements.length; i++) {
			elements[i].addEventListener(handler, func, false);
		}
	} else { 
		if(elements[0].attachEvent) {
			//BUG.feed('ie',2);
			//alert('ie');
			for(var i=0; i<elements.length; i++) {
				elements[i].attachEvent('on'+handler, func);
			}
	  	} else {
	  	   	for(var i=0; i<elements.length; i++) {
				//BUG.feed('something else',2);
				//alert('something else');
				handler = 'on'+handler;
				elements[i].handler = func;
	  	   	}
	 	  }
	  }	
}
/* Unified event information handling all Browsers */
EVENT.w3cOrIe = function(event) {								
	//BUG.feed('calling w3cOrIE(event)', 2);
	if(!event) {
		event = window.event;
		event.target = event.srcElement;
	}
		
}

