//add event to a given element
//for instance...
//addEvent(window, 'load', POINTER_TO_FUNCTION);
function addEvent (element, type, handler) {
	if (element.addEventListener) {
		element.addEventListener(type, handler, false);
	} else {
		// assign each event handler a unique ID
		if (!handler.$$guid) handler.$$guid = guid++;
		// create a hash table of event types for the element
		if (!element.events) element.events = {};
		// create a hash table of event handlers for each element/event pair
		var handlers = element.events[type];
		if (!handlers) {
			handlers = element.events[type] = {};
			// store the existing event handler (if there is one)
			if (element["on" + type]) {
				handlers[0] = element["on" + type];
			}
		}
		// store the event handler in the hash table
		handlers[handler.$$guid] = handler;
		// assign a global event handler to do all the work
		element["on" + type] = handleEvent;
	}
};
// a counter used to create unique IDs
var guid = 1;
function removeEvent(element, type, handler) {
	if (element.removeEventListener) {
		element.removeEventListener(type, handler, false);
	}else{
		// delete the event handler from the hash table
		if (element.events && element.events[type]) {
			delete element.events[type][handler.$$guid];
		}
	}
};
function handleEvent (event) {
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};
function fixEvent(event) {
	// add W3C standard event methods
	event.preventDefault = preventDefault;
	event.stopPropagation = stopPropagation;
	return event;
};
function preventDefault() {
	this.returnValue = false;
};
function stopPropagation() {
	this.cancelBubble = true;
};
function removeClassName(element,classNames){
	element=(typeof element).toLowerCase()=="string"?document.getElemenById(element):element;
	var stringPatern = "(\\b|\\s)(" + classNames.join("|") + ")(\\b|\\s)";
	var reg = new RegExp(stringPatern,"gi");
	element.className=element.className.replace(reg,"");
};
function addClassName(element,className){
	element=(typeof element).toLowerCase()=="string"?document.getElemenById(element):element;
	className=className.replace(/^\s+|\s+$/g,"");
	removeClassName(element,[className]);
	element.className+=" "+className;
};
function Trim(chaine){
	return(chaine.replace(/^\s+|\s+$/g,''));
};
Array.prototype.returnRandomItem=function(){
	if(this.length==0){
		return null;
	}
	var valueToReturn = null;
	if(this.length==1){
		valueToReturn=this[0]
		this.splice(0,1);
		return valueToReturn;
	}
	var randomValue = Math.floor(Math.random()*this.length);
	valueToReturn = this[randomValue];
	this.splice(randomValue,1);
	return valueToReturn;
};
function RandomAds(howManyPubToDisplay){
	this.containers = [];
	this.howManyPubToDisplay=howManyPubToDisplay;
}
RandomAds.prototype.addContainer=function(element){
	element=typeof element=="string"?document.getElementById(element):element;
	this.containers.push(element);
}
RandomAds.prototype.getRandomContainer=function(){
	var elements = [];
	var current=null;
	for(var i=0;i<this.howManyPubToDisplay;i++){
		current=this.containers.returnRandomItem();
		if(current==null){
			break;
		}
		elements.push(current);
	}
	return elements;
}
function PostToAddress(adresse){
    this.adresse = adresse;
    this.nom = new Array();
    this.value = new Array();
    this.form = document.createElement("form");
    this.form.action = this.adresse;
    this.form.method="post";
};
PostToAddress.prototype.addHiddenField = function(nom,valeur){
    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");
    hiddenField.setAttribute("name", nom);
    hiddenField.setAttribute("value", valeur);
    this.form.appendChild(hiddenField);
};
PostToAddress.prototype.post = function(){
    document.documentElement.appendChild(this.form);
    this.form.submit();
};
if(!Array.prototype.indexOf){
    Array.prototype.indexOf = function(valeur){
            //internet explorer est trop cave pour comprendre indexOf sur un tableau
            for(var t=0;t<this.length;t++)
                    if(this[t] == valeur)
                            return t;
            return -1;
    }
};