//================================================
// Librairie des validations et filtres Javascript
// Modifié le 2005-09-20
//================================================

//_____________________________________________
//Préserve les touches importante dans mozilla
//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
//Flèches
//Home
//End
//Shift
//Space
//Enter
//Backspace
function pwPreserveKey(key)
{
    if ( key == '35' || key == '45' || key == '13' || key == '37' ||
         key == '39' || key == '9' || key == '189' || key == '16' || key == '8' ||
         key == '46'|| key == '36' || key == '35' || key == '17')
    {
        return true;
    }

    return false;
}

function pwHexColor(event, el)
{
    var key = event.keyCode;
    if( key == '0' ) key = event.which;

    if( !( el.value.indexOf('#') >= 0 && key == '35' ) )
    {
        if(((key >= '48' && key <= '57') || (key >= '65' && key <= '70') ||
           (key >= '97' && key <= '102') || key == '13' || pwPreserveKey(key))
           &&  key <= '128' )
        {
            return true;
        }
    }
    return false;
}

function pwOnKeyPressPostalCode(event,fkcountries)
{
    key = event.keyCode;
    if( key == '0' ) key = event.which;

    if( key )
    {
        switch(fkcountries)
        {
            case '61' : //France
            case '183' : //États-Unies
                if( (((key >= '48' && key <= '57') || key == '45' || key == '13') &&  key < '128') || pwPreserveKey(key) )
                {
                    return true;
                }
                break;
            case '32' : //Canada
            default:
                if(((key >= '48' && key <= '57') || (key >= '65' && key <= '90') ||
                   (key >= '97' && key <= '122') || key == '32' || key == '13' || pwPreserveKey(key))
                   && ( key != '35' && key < '128' && key != '45') )
                {
                    return true;
                }
                break;
        }
    }

    return false;
}

function pwOnKeyPressPhone(event, fkcountries)
{
    var key = event.keyCode;
    if( key == '0' ) key = event.which;

	switch(fkcountries)
	{
        default:
        case '32':
        case '183' :
    		if( (key >= '48' && key <= '57') || key == '32' ||
                 key == '35' || key == '45' || key == '13' || key == '37' ||
                 key == '39' || key == '9' || key == '189' || key == '38' ||
                 key == '40' || key == '41' || key == '16' || key == '222' || key == '8' ||
                 key == '46' || pwPreserveKey(key))
            {
                return true;
            }
            break;
        case 'others':
            break;
	}

    return false;
}


function pwOnKeyPressEmail(event)
{
    var key = event.keyCode;
    if( key == '0' ) key = event.which;
    if( ((key >= '48' && key <= '57') || key == '45' || (key >= '64' && key <= '90') || (key >= '128' && key <= '255') ||
         key == '95'|| (key >= '97' && key <= '122') || pwPreserveKey(key)) && ( key != '35' && key < '128' ))
    {
        return true;
    }

    return false;
}

function pwChangeStates(myfield,prefix)
{
    pwHideObject(prefix+'canada');
    pwHideObject(prefix+'usa');

    switch( myfield.value )
    {
        case '32' :
            pwShowObject(prefix + 'canada');
            break;
        case '183' :
            pwShowObject(prefix + 'usa');
            break;
    }

    return true;
}

function pwNotEmptyField(el, message)
{
    if( el )
    {
        var myform = el.form;
        el.value = el.value.replace(/^\s*|\s*$/g,'');

        if( el.value == "" || el.value.length == 0 )
        {
            alert(message);
            setTimeout('SetFocus('+ myform.name + ',"'+ el.name +'");', 1);
            return false;
        }
    }
    return true;
}

function pwNotEmptyState(fkcountries, message)
{
    var id = 'fkstates_';

    switch(fkcountries)
    {
        case '32' :
            id = id + 'canada';
            break;
        case '61' :
            id = id + 'france';
            break;
        case '183' :
            id = id + 'usa';
            break;
    }
    if( document.getElementById(id).selectedIndex <= 0 )
    {
        alert(message);
        return false;
    }

    return true;
}

function pwCheckMaxLength(el, max, message)
{
    if( el )
    {
        var myform = el.form;
        if( el.value.length > max )
        {
            alert(message);
            setTimeout('SetFocus('+ myform.name + ',"'+ el.name +'");', 1);
            return false;
        }
    }
    return true;
}

function pwCheckMinLength(el, min, message)
{
    if( el )
    {
        var myform = el.form;

        if( el.value.length < min )
        {
            alert(message);
            setTimeout('SetFocus('+ myform.name + ',"'+ el.name +'");', 1);
            return false;
        }
    }
    return true;
}

function pwCompareField(el1, el2, message)
{
    if( el1 && el2 )
    {
        if( el1.form == el2.form )
        {
            var myform = el1.form;
        }
        if( myform )
        {
            if( el1.value != el2.value )
            {
                alert(message);
                setTimeout('SetFocus('+ myform.name + ',"'+ el2.name +'");', 1);
                return false;
            }
        }
    }
    return true;
}

function pwNotEmptyComdo(el, message)
{
    if( el )
    {
        var myform = el.form;

        if( el.selectedIndex <= 0 )
        {
            alert(message);
            setTimeout('SetFocus('+ myform.name + ',"'+ el.name +'");', 1);
            return false;
        }
    }

    return true;
}

function pwValidateEmail(el, message)
{
    if( el )
    {
        if( el.value.length > 0 )
        {
            var reg = new RegExp;
            var email = el.value;

            var myform = el.form;
            var myfield = el.name;
            var formname = myform.name ;

            email = email.replace(/^\s*|\s*|\s*$/g,''); // Trim.

            if( email.length > 0 )
            {
                reg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/i;

                if( !reg.exec(email) )
                {
                    alert(message);
                    if( el.isDisabled != false )
                    {
                        setTimeout('SetFocus('+ formname + ',"'+ myfield +'");', 1);
                    }
                    return false;
                }
                else
                {
                    el.value = email.toLowerCase();
                }
            }
        }
    }

    return true;
}

function pwValidatePostalCode(el, message, fkcountries)
{
    if( el )
    {
        if( el.value.length > 0 )
        {
            var reg = new RegExp;
            var code = el.value;
            var myform = el.form;
            var myfield = el.name;
            var formname = myform.name ;

            code = code.replace(/^\s*|\s*|\s*$/g,''); //Trim.

            if( code.length > 0 )
            {
                switch( fkcountries )
                {
                    case '32' : // Canada
                        reg = /^([a-z]\d){3}$/i;
                        break;
                    case '61':
                    case '183': // France - États-Unis
                        reg = /^\d{4,5}$/;
                        break;
                    default:
                        reg = /^.{0,10}$/;
                        break;
                }

                if( reg.exec(code) )
                {
                    //Formatage du code postal.
                    if( fkcountries == '32' )
                    {
                        code = code.toUpperCase();
                        code = code.substring(0,3) + ' ' + code.substring(3,6);
                        el.value = code;
                    }
                }
                else
                {
                    alert(message);
                    if( el.isDisabled != false )
                    {
                        setTimeout('SetFocus('+ formname + ',"'+ myfield +'");', 1);
                    }
                    return false;
                }
            }
        }
    }

    return true;
}

function pwValidatePhone(el, message, fkcountries)
{
    if( el )
    {
        if( el.value.length > 0 )
        {
            var reg = new RegExp;
            var number = el.value;
            var myform = el.form;
            var myfield = el.name;
            var formname = myform.name ;

            number = number.replace(/^\s*|\s*|\s*$/g,''); //Trim.

            if( number.length > 0 )
            {
                switch(fkcountries)
                {
                    default:
                    case '32': //Canada
                    case '183': //Etats-Unies
                        reg = /^\d?[\-\s]?\(?\d{3}\)?[\-\s]?\d{3}[\-\s]?\d{4}\s?([\s\-\#]?\d{1,5})?$/;
                        break;
                    case '61':
                        reg = /^\d?[\-\s]?[\d{2}[\-\s\.]]{5}$/;
                        break;
                }

                if( !reg.exec(number) )
                {
                    alert(message);

                    if( el.isDisabled != false )
                    {
                        setTimeout('SetFocus('+ formname + ',"'+ myfield +'");', 1);
                    }
                    return false;
                }
            }
        }
    }
    return true;
}

function SetFocus(myform, el)
{

    if( myform && el )
    {
        myform.elements[el].focus();
    }


}


/*

<---- Junk code ---->

function pwValidationPostalCode(val,fkcountries)
{
    val = val.toUpperCase();

    if(fkcountries == '32')
    {
        if(val.length < 6) return (false);
        i=0;
        if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(val.charAt(i)) < 0) return false;
        i++;
        if('0123456789'.indexOf(val.charAt(i)) < 0) return false;
        i++;
        if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(val.charAt(i)) < 0) return false;
        i++;
        if( val.charAt(i) == " " ) i++;

        if ('0123456789'.indexOf(val.charAt(i)) < 0) return false;
        i++;
        if ('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(val.charAt(i)) < 0)  return false;
        i++;
        if ('0123456789'.indexOf(val.charAt(i)) < 0) return false;
    }
    else if(fkcountries == 183 )
    {
        if(val.length < 5) return false;

        var checkOK = "0123456789-";
        var checkStr = val;
        var allValid = true;
        for(i=0;i<checkStr.length;i++)
        {
            ch = checkStr.charAt(i);
            for(j=0;j<checkOK.length;j++)
            if(ch==checkOK.charAt(j)) break;
            if(j==checkOK.length)
            {
                allValid = false;
                break;
            }
        }
        if(!allValid) return false;
    }
    else
    {
        if(val.length == 0) return false;
    }

    return true;
}

function arobaceok(theform,frm_emailfrom,frm_namefrom,frm_message)
{
var a=theform.all(frm_emailfrom).value;
var b=theform.all(frm_namefrom).value;
var d=theform.all(frm_message).value;
var test="" + a;
for(var k = 0; k < test.length;k++)
{
    var c = test.substring(k,k+1);
    if(c == "@")
    {
        if (b != "" && d != "")
        {
            return true;
        }
        else
        {
            alert("<%=$lng_informationempty%>");
            return false;
        }
    }
}
alert("<%=$lng_validemail%>");
return false;
}
*/
