function Trim(chaine)
{
    var regExpDebut = /^\s+/;
    var regExpFin = /\s+$/;
    return chaine.replace(regExpDebut, '').replace(regExpFin, '');
};
 
function LTrim(chaine)
{
    var regExpDebut = /^\s+/;
    return chaine.replace(regExpDebut, '');
};
 
function RTrim(chaine)
{
    var regExpFin = /\s+$/;
    return chaine.replace(regExpFin, '');
};

function Repeat(repeatString, repeatNum)
{
    var newString = ""; 
    
    for (var x=1; x<=parseInt(repeatNum, 10); x++) 
        newString = newString + repeatString; 

    return (newString); 
};

function EnsureAllDigits(sender, decimalSeparator, decimalPartLength)
{
    if (EnsureAllDigits.arguments.length < 3)
        decimalPartLength = 2;

    if (EnsureAllDigits.arguments.length < 2)
        decimalSeparator = '.';

   EnsureIntPartDigits(sender, decimalSeparator);   
   EnsureDecimalDigits(sender, decimalSeparator, decimalPartLength);
};

function EnsureIntPartDigits(sender, decimalSeparator)
{
    if (EnsureIntPartDigits.arguments.length < 2)
        decimalSeparator = '.';

    var value = Trim(sender.value);
    if (value != '')
    {
        var indexOfDecimalSeparator = value.indexOf(decimalSeparator);        
        var indexOfNegativeSign = value.indexOf('-');        
        
        if (indexOfDecimalSeparator == 0)        
            sender.value = '0' + sender.value;
        else if (indexOfNegativeSign == 0)
        {
            if (indexOfDecimalSeparator == 1)
                sender.value = '-0' + sender.value.substring(1, sender.value.length);
            else if (sender.value == '-')
                sender.value = '-0';
        }
    }
};

function EnsureDecimalDigits(sender, decimalSeparator, decimalPartLength)
{
    if (EnsureDecimalDigits.arguments.length < 3)
        decimalPartLength = 2;

    if (EnsureDecimalDigits.arguments.length < 2)
        decimalSeparator = '.';

    var value = Trim(sender.value);
    if (value != '')
    {
        var decimalPartToAdd = '';
        var indexOfDecimalSeparator = value.indexOf(decimalSeparator);        
        
        if (indexOfDecimalSeparator == -1)
            decimalPartToAdd = decimalSeparator + Repeat('0', decimalPartLength);
        else
            decimalPartToAdd = Repeat('0', decimalPartLength - value.slice(indexOfDecimalSeparator + 1).length);
        
        sender.value += decimalPartToAdd;
    }
};

function IsValidNumber(sender, intPartMaxLength, negativeAllowed, decimalAllowed, decimalSeparator, decimalPartMaxLength)
{
	var e = event;

    //check des arguments de la fonction
    if (IsValidNumber.arguments.length < 5)
        decimalPartMaxLength = -1;

    if (IsValidNumber.arguments.length < 4)
        decimalSeparator = '.';

    if (IsValidNumber.arguments.length < 3)
        decimalAllowed = true;

    if (IsValidNumber.arguments.length < 2)
        negativeAllowed = true;

    if (IsValidNumber.arguments.length < 1)
        intPartMaxLength = -1;
        
	try
	{
		var c = e.keyCode;
		
        //touche "." => remplacé par le séparateur décimal actif
        if (c == 46)
        {            
            c = decimalSeparator.charCodeAt(0);
            event.keyCode = c;
        }
        
		sender.keyCode = c;
		
		var pstart = GetSelectionStart(sender);
		var pend = GetSelectionEnd(sender);
		var new_value = sender.value.substring(0, pstart) + String.fromCharCode(c) + sender.value.substring(pend);
		
		//var mask = '^[\-]{0,1}[0-9]{0,}([.]{1,1}[0-9]{0,1}){0,1}$';
		
		var mask = '^';
		
		if (negativeAllowed)
		    mask += '[\-]{0,1}';
		
		mask += '[0-9]{0,';
		
		if (intPartMaxLength != -1)
		    mask += intPartMaxLength.toString();
		
		mask += '}';
		
		if (decimalAllowed)
		{
		    mask += '([' + decimalSeparator + ']{1,1}';
		    mask += '[0-9]{0,';
		    if (decimalPartMaxLength != -1)
		        mask += decimalPartMaxLength.toString();	
		    mask += '}){0,1}';	    
		}
		
		mask += '$';
		
		var reg = new RegExp(mask,"g");
		
		if (!reg.test(new_value))
            event.returnValue = false;
	}
	catch(ex)
	{
	}
};

/******************************************************************/
//	getSelectionStart
//  renvoie la position de début de la sélection dans une zone
//  de texte (input, textarea)
/******************************************************************/
function GetSelectionStart(o)
{
	if ( typeof o.selectionStart != 'undefined' )
		return o.selectionStart;
	
	// IE Support
	o.focus();
	var range = o.createTextRange();
	range.moveToBookmark(document.selection.createRange().getBookmark());
	range.moveEnd('character', o.value.length);
	return o.value.length - range.text.length;
};

/******************************************************************/
//	getSelectionEnd
//  renvoie la position de fin de la sélection dans une zone
//  de texte (input, textarea)
/******************************************************************/
function GetSelectionEnd(o)
{
	if ( typeof o.selectionEnd != 'undefined' )
		return o.selectionEnd;
 
	// IE Support
	o.focus();
	var range = o.createTextRange();
	range.moveToBookmark(document.selection.createRange().getBookmark());
	range.moveStart('character', - o.value.length);
	return range.text.length;
};

var valeurListeDeroulante;

function SauvegardeValeurListeDeroulante(listeDeroulante)
{
    valeurListeDeroulante = listeDeroulante.selectedIndex;
};

function ConfirmationListeDeroulante(listeDeroulante, message)
{
    if (!confirm(message))
    {        
        listeDeroulante.selectedIndex = valeurListeDeroulante;
        return false;
    }
    else
        return true;
};

