/***********************************
Ce fichier contient les fonctions javascripts qui permettent d'unifier les appels entre tous les navigateurs
**********************************/
var utils = {};

/**---- ajoute un gestionnaire d'événement ---- **/
/****** A REMPLACER PAR UN APPEL A LA METHODE DANS PROTOTYPE (Event.observe) ******/
// from : the Yahoo User Interface library
utils.addListener = function (el, sType, fn) {
	if (window.addEventListener) {
		el.addEventListener(sType, fn, false);
	} else if (window.attachEvent) {
		el.attachEvent("on" + sType, fn);
	} else {
		el['on'+sType] = fn;
	}
}


/** ----renvoie les éléments ayant une classe donnée ---- */
// from : http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
/****** A REMPLACER PAR UN APPEL A LA METHODE DANS PROTOTYPE ******/
utils.getElementsByClassName = function(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


/** ----transforme les \n en <br /> ---- */
utils.nl2br = function (str, is_xhtml) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Philip Peterson
    // +   improved by: Onno Marsman
    // +   improved by: Atli Ţór
    // +   bugfixed by: Onno Marsman
    // +      input by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: nl2br('Kevin\nvan\nZonneveld');
    // *     returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
    // *     example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
    // *     returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
    // *     example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
    // *     returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'

    var breakTag = '';

    breakTag = '<br />';
    if (typeof is_xhtml != 'undefined' && !is_xhtml) {
        breakTag = '<br>';
    }

    return (str + '').replace(/([^>]?)\n/g, '$1'+ breakTag +'\n');
}

function slide_element(elem) {
	if($(elem).style.display=='none') {
		Effect.SlideDown(elem);
	} else {
		Effect.SlideUp(elem);
	}
}