_fu = {};

// fonction bind
if(typeof(Function.prototype.bind)=="undefined"){
	Function.prototype.bind =function () {
		var _fn = this;
		var sc = arguments[0];
		arguments.shift();
		var fn = function () {
			_fn.apply(sc,arguments)
		}
		return fn;
	}
}

// fonction stop event
_fu.stopPropagation = function (evt) {
		var evt = evt || window.event;
		if(evt==null)return;
		if (evt.preventDefault) evt.preventDefault(); // FF
		evt.returnValue = false; // IE
}

// fonction qui retour la taille de la fenetre
 _fu.windowSize = function (win){
	var myWidth = 0, myHeight = 0;
	if(win!=undefined && win!=window){
		myWidth = win.clientWidth;
		myHeight = win.clientHeight;
	}else{
		if (typeof(window.innerWidth) == 'number') {
			//Non-IE
			myWidth = window.innerWidth;
			myHeight = window.innerHeight;
		} else {
			if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
				//IE 6+ in 'standards compliant mode'
				myWidth = document.documentElement.clientWidth;
				myHeight = document.documentElement.clientHeight;
			} else {
				if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
					//IE 4 compatible
					myWidth = document.body.clientWidth;
					myHeight = document.body.clientHeight;
				}
			}
		}
	}
    
    return {
        width: myWidth,
        height: myHeight
    };
}

// fonction qui retour le scroll de la fenetre
 _fu.scrollOffset =function(){
    var scrOfX = 0, scrOfY = 0;
    if (typeof(window.pageYOffset) == 'number') {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    }
    else 
        if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
            //DOM compliant
            scrOfY = document.body.scrollTop;
            scrOfX = document.body.scrollLeft;
        }
        else 
            if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
                //IE6 standards compliant mode
                scrOfY = document.documentElement.scrollTop;
                scrOfX = document.documentElement.scrollLeft;
            }
    return {
        left: scrOfX,
        top: scrOfY
    };
}

// window.onload
_fu.onLoad = function (func) {
	if(window._onLoadFired){func()}
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function(){
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}



// addEventSimple
_fu.addEvent = function (el, type, cb, sc, args){
	var useMootools = feC && (feC.platform=="vista" || document.all || Browser.Engine.presto) && el.nodeName != null && typeof(Element) != "undefined" && typeof($) != "undefined";
	var fn = function(e){
		//feC.log('call',fn)
		var obj = {
			'e':e,
			'el':el,
			'args':args
		}
		cb.call(sc, obj);
	}
	if (useMootools && el.addEvent == null) {
        el = $(el)
    }
	// mootools is present
	if(useMootools) {
		//feC.log('addEvent',fn)
		el.addEvent(type,fn);
	} else if (typeof(el.attachEvent)!="undefined") {
		el.attachEvent('on' + type, fn);
	}else if (typeof(el.addEventListener)!="undefined") {  // IE
		el.addEventListener(type, fn, false);		
	}else{
		if(!el.events) el.events = {};
		el.events['on' + type] = fn;
	}	
}

// fireEvent
_fu.fireEventShare = function (el, e){
	var useMootools = feC && (feC.platform=="vista" || document.all || Browser.Engine.presto) && el.nodeName != null && typeof(Element) != "undefined" && typeof($) != "undefined";
	if(useMootools) {
		el.fireEvent(e)
	} else if (el.dispatchEvent){
		var ce = document.createEvent('HTMLEvents');
		ce.initEvent(e, false, false);
		el.dispatchEvent(ce);
	}else if (el.fireEvent) {
		el.fireEvent("on" + e);
	}else{
		if (!el.events) {
			el.events = {};
			return false;
		}
		if (!el.events['on' + e]) return false;
		else el.events['on' + e].call();
	}
}

//callAjax
_fu.callAjax=function (href,fn){
	if(typeof(feC)!="undefined" && feC.callAjax){
		feC.callAjax(href,fn);
		return;
	}
	var xmlhttp = null;
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (trymicrosoft){
		try {
	    	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
	    	try{
	      		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	    	} catch (failed) {
				xmlhttp = null;
	    	}
	  	}
	}

	xmlhttp.open("GET", href, true);	
	xmlhttp.onreadystatechange = function (){
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
			fn(xmlhttp.responseText);
		}
	}				
	xmlhttp.send(null);
}

//openPopup
_fu.openPopup = function (href){
	if(window.feC===undefined)
		window.open(href);
	else
		feC.openPopup(href,null,"no-track");
}

//getElementsByClassName
_fu.getElementsByClassName = function(className){
	if (document.getElementsByClassName) {
		return document.getElementsByClassName(className);
	}else {
		var my_array = document.getElementsByTagName("*");
		var retvalue = new Array();
		var i;
		var j;
		for (i=0,j=0;i<my_array.length;i++) {
			var c = " " + my_array[i].className + " ";
			if (c.indexOf(" " + className + " ") != -1) retvalue[j++] = my_array[i];
		}
		return retvalue;
	}
}

// verifie email
_fu.isEmail = function (strSaisie) {
	var verif = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
	return ( verif.test(strSaisie) );
}
