(function($) {	
	/* 
	 * jQuery Masque Saisie Horaire
	 * Depends:
	 * #11.00Ap WDLIB.JS 
	 *
	 * Permet de recupérer les masques de saisie de Webdev
	 */	
	$.fn.masqueSaisieHoraire = function() {
	
		$(this).bind("focus.MasqueSaisie",function(event){
			initPerso(event,'HH:MM');
		});
	
		$(this).bind("blur.MasqueSaisie",function(event){
			reinitPerso(event,'HH:MM');
			VerifRegExpPerso(this,'^(\\d|[0-1]\\d|2[0-4]):(\\d|[0-5]\\d)$');
		});

		$(this).bind("keypress.MasqueSaisie",function(event) {
			var z=HHMM(event,'HH:MM');
			return z
		});
		return this;
	}

	/* 
	 * jQuery Masque Saisie Date
	 * Depends:
	 * #11.00Ap WDLIB.JS 
	 * 
	 * Permet de recupérer les masques de saisie de Webdev dans jQuery
	 */
	$.fn.masqueSaisieDate = function(){
		
		$(this).bind("focus.MasqueSaisie",function(event){
			initPerso(event,'JJ/MM/AAAA');
		});
	
		$(this).bind("blur.MasqueSaisie",function(event){
			reinitPerso(event,'JJ/MM/AAAA');
			VerifRegExpPerso(this,'^([1-9]|[0-2]\\d|3[0-1])\\/((0){0,1}[1-9]|1[0-2])\\/\\d{1,4}$');
		});
		 
		$(this).bind("keypress.MasqueSaisie",function(event){
			var z=JJMMAA(event,'JJ/MM/AAAA');
			return z;
		});
		return this;
	}
		

	/* 
	 * jQuery Masque Saisie Decimale
	 * Depends:
	 * #11.00Ap WDLIB.JS
	 *
	 * Permet de recupérer les masques de saisie de Webdev dans jQuery
	 */

	$.fn.masqueSaisieDecimale = function(mask, settings) {
				
		$(this).bind("focus.MasqueSaisie",function(event){
			initNombrePerso(event,'999 999 999 999 999,99');
		});
	
		$(this).bind("blur.MasqueSaisie",function(event){
			reinitNombre(event,'999 999 999 999 999,99');
			VerifRegExpPerso(this,'^(\\+|\\-){0,1}(\\d|'+_WW_SEPMILLIER_+'){1,22}('+_WW_SEPDECIMAL_+'(\\d| ){0,2}){0,1}$');
		});

		$(this).bind("keypress.MasqueSaisie",function(event) {
			return VerifSaisieNombre(event,'999 999 999 999 999,99');
		});
	}

	/* 
	 * jQuery Masque Saisie Horaire Decimale
	 * Depends:
	 * #11.00Ap WDLIB.JS
	 *
	 * Permet de recupérer les masques de saisie de Webdev dans jQuery
	 */
	$.fn.masqueSaisieHDecimale = function(mask, settings) {
				
		$(this).bind("focus.MasqueSaisie",function(event){
			initNombrePerso(event,'99,99');
		});
	
		$(this).bind("blur.MasqueSaisie",function(event){
			reinitNombre(event,'99,99');
			VerifRegExpPerso(this,'^(\\+|\\-){0,1}(\\d|'+_WW_SEPMILLIER_+'){1,22}('+_WW_SEPDECIMAL_+'(\\d| ){0,2}){0,1}$');
		});

		$(this).bind("keypress.MasqueSaisie",function(event) {
			return VerifSaisieNombre(event,'99,99');
		});
	}


	/* 
	 * jQuery Masque tout en majuscule
	 * Permet de n'autoriser la saisie que en majuscule
	 */
	$.fn.toutEnMajuscule = function(){
		$(this).bind("keyup.toutEnMajuscule blur.toutEnMajuscule change.toutEnMajuscule",function(event){				
			$(this).val($(this).val().toUpperCase() )				
		});
		return this;
	}


	/* 
	 * jQuery Masque sans accent
	 * Permet de retirer les accents
	 */	
	$.fn.sansAccent = function(){
		$(this).bind("keyup.sansAccent",function(event){
			var xVal = $(this).val()
			// Minuscule
			xVal = xVal.replace(/[àâä]/gi,"a")
			xVal = xVal.replace(/[éèêë]/gi,"e")
			xVal = xVal.replace(/[ìîï]/gi,"i")
			xVal = xVal.replace(/[òôö]/gi,"o")
			xVal = xVal.replace(/[ùûü]/gi,"u")
			xVal = xVal.replace(/[ÿ]/gi,"y")
			xVal = xVal.replace(/[ç]/gi,"c")
			// Majuscule 
			xVal = xVal.replace(/[ÀÂÄ]/gi,"A")
			xVal = xVal.replace(/[ÉÈÊË]/gi,"E")
			xVal = xVal.replace(/[ÌÎÏ]/gi,"I")
			xVal = xVal.replace(/[ÒÔÖ]/gi,"O")
			xVal = xVal.replace(/[ÙÛÜ]/gi,"U")
			xVal = xVal.replace(/[Ÿ]/gi,"Y")
			xVal = xVal.replace(/[Ç]/gi,"C")
			
			$(this).val(xVal);
		});
		return this;
	}

	
	
    $.fn.wait = function(time, type) {
        time = time || 1000;
        type = type || "fx";
        return this.queue(type, function() {
            var self = this;
            setTimeout(function() {
                $(self).dequeue();
            }, time);
        });
    }	
	
})(jQuery);


// Functions utilitaires pour les masques de saisie (inspirés des fonction webdev mais débuggées)
var gValChampSaisie = ""
 _WW_SEPMILLIER_=" ";
 _WW_SEPDECIMAL_=",";

function VerifRegExpPerso(Champ,sRegExp)
{
	// on cree l'objet expression reguliere a partir de la chaine :
	regExp = new RegExp(sRegExp);
	// on test si la valeur du champ est ok :
	var test = (Champ.value == "") || regExp.test(Champ.value);
	if ( ! test )
	{	// si non, on averti l'utilisateur :
		alert( sErreur );
		setTimeout(function(){Champ.focus();},5); // utilisation de setTimeout car comme cette procedure est appelée à la perte de focus du champ(onblur), elle s'execute juste avant la perte de focus 
		return false;
	}
	return true;
}


function initPerso(evt,val)
{
	var xChamp = evt.target;
	gValChampSaisie = xChamp.value;
	if (xChamp.value != "") return;
	xChamp.value = val;
	SetPositionCaretPerso(xChamp,0);
}

///////////////////////////////////////////////////////////////////////
function reinitPerso(evt,val)
{
	
	var xChamp = evt.target;
	if (xChamp.value == val) xChamp.value = "";
	if (xChamp.value == gValChampSaisie) return;
	gValChampSaisie = xChamp.value;
	//if (bIsExplorer() && (xChamp.onchange != null)) xChamp.onchange();
}

function initNombrePerso(evt,m)
{
	if (_WW_SEPMILLIER_ == "") return;
	var xChamp = evt.target;
	var i = 0;
	while ((i = xChamp.value.indexOf(_WW_SEPMILLIER_)) >= 0) xChamp.value = remplacePos(xChamp.value,i,"");
	if (xChamp.setSelectionRange)
	{
		xChamp.setSelectionRange(0,xChamp.value.length);
		xChamp.selectionEnd = xChamp.value.length;
	}
	else if (xChamp.createTextRange)
	{
		var s = xChamp.createTextRange();	
		s.collapse(true);
		s.moveStart('character', 0);
		s.moveEnd('character', xChamp.value.length);
		s.select();
	}
}

function reinitNombrePerso(evt,m)
{
	if (_WW_SEPMILLIER_ == "") return;
	var xChamp = evt.target;
	var v = PosOuFin(xChamp.value,_WW_SEPDECIMAL_);
	if (v < 4) return;
	var w = PosOuFin(m,_WW_SEPDECIMAL_);
	var n = 0;
	var i = v;
	while (i-- > 0)
	{
		w--;
		if (bIsDigit(xChamp.value.charAt(i))) if ((w > 0) && (m.charAt(w) == " ")) xChamp.value = InserePos(xChamp.value,i+1,_WW_SEPMILLIER_);
	}
}

function SetPositionCaretPerso(chp,pos)
{
	if(chp.setSelectionRange)
	{
		chp.focus();
		chp.setSelectionRange(pos,pos);
	}
	else if (chp.createTextRange)
	{
		var s = chp.createTextRange();	
		s.collapse(true);
		s.moveEnd('character', pos);
		s.moveStart('character', pos);
		s.select();
	}
}

