
function setMessage(element, text)
{
    if (typeof element == 'string')
        element = document.getElementById(element);
    
    if (typeof element == 'object')
        element.innerHTML = text;
}

function isDigit(num) {
    if (num.length>1){return false;}
    var string="1234567890";
    if (string.indexOf(num)!=-1){return true;}
    return false;
    }

function isNameCharOk(name)
{
    var charsOk = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-éèêëç ";
    for (var i = 0; i< name.length; i++)
    {
        var c = name.charAt(i);
        if (charsOk.indexOf(c) == -1)
            return false;
    }
    return true;
}
    
function isInteger (s)
{
    var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    return true;
}
function detectInvalidChars(chaine) 
{
var forbiddenchars = '\"\`\²\%\*\,\.\?\;\:\§\!\#\$\£\µ\€\¤\(\)\~\/\\\'\=\+\{\}\[\]|^@&\"\"\<\>©®ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"';
var i=0;
Result = true;
end=chaine.length;
//Boucle qui extrait chaque lettre de 'chaine' et qui regarde si elle correspond à un caractère interdit
    for (var i=0; i<end; i++) 
    {
        carac = chaine.substring(i,i+1);
        if (forbiddenchars.indexOf(carac)!=(-1))
        {
            Result = false;
        }
    }

   if (Result==false) 
   {
    return true;
   }
   else
   {
    return false;
   }
}

function isValidEmail(email) 
{

    if (email.length==0) 
    {  
        return false;
    }
    if (! allValidChars(email)) 
    {  // check to make sure all characters are valid
        return false;
    }
    if (email.indexOf("@") < 1) 
    { //  must contain @, and it must not be the first character
        return false;
    }
    if (email.indexOf("@") != email.lastIndexOf("@"))
    {// must not contain more than 1 @
        return false;
    }
    else if (email.lastIndexOf(".") < email.lastIndexOf("@")) 
    {  // last dot must be after the @
        return false;
    } 
    else if (email.lastIndexOf("@") == (email.length - 1) ) 
    {  // @ must not be the last character
        return false;
    } 
    else if (email.indexOf("..") >=0) 
    { // two periods in a row is not valid
        return false;
    } 
    else if (email.lastIndexOf(".") == (email.length - 1) ) 
    {  // . must not be the last character
        return false;
    }
    // temporaire: vérification de l appartenance au groupe FT
  /*  var searchregex = /^[a-zA-Z0-9._-]+@(orange-ftgroup.com|rd.francetelecom.com|goa.com)/g ;
    if (!searchregex.test(email))
    {
        document.getElementById('')
        return false;
    }*/
    return true;
}

function allValidChars(email) 
{
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) 
  {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

function validForm(edit)
{
if (edit == 1) 
{
    var testform = 0;
    var errdate = 0;
    var errpass = 0;
    var errcountry = 0;
    var errmail = 0;

    if (document.signupform.terms.checked == false)
    {
        show_rule('term');
        setMessage("errterm",'terms of use');
        testform++;
        show_error('terms');
    }
    else
    {
        setMessage("errterm","");
        hide_rule('term');
        hide_error('terms');
    }

    if (document.signupform.passwordchange.value.length < 6 && document.signupform.passwordchange.value.length > 0)
    {
        show_rule('pass');
        setMessage("errpass",'password must contain at least 6 characters');
        
        testform++;
        errpass++;
        show_error('password');
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
    }
    
    if (document.signupform.passwordchange.value.length > 20)
    {
        show_rule('pass');
        setMessage("errpass",'Password must contain 20 characters max');
        testform++;
        errpass++;
        show_error('password');
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
    }
    

    if (document.signupform.passwordchange.value != document.signupform.passconfchange.value)
    {
        show_rule('pass');
        setMessage("errpass",'password and password confirmation must be the same');
        testform++;
        errpass++;
        show_error('password');
        show_error('passconf');
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
    }
    if (errpass == 0)
    {
        hide_rule('pass');
        hide_error('password');
        hide_error('passconf');
        setMessage("errpass","");
        document.signupform.passwordchange.className = '';
    }
    
    if (testform == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
else 
{
    var testform = 0;
    var errdate = 0;
    var errpass = 0;
    var errlogin = 0;
    var errcountry = 0;
    var errname = 0;
    
    // TODO : differencier sur le show-error le firstname et lastname !
    
    if (document.signupform.terms.checked == false)
    {
        show_rule('term');
        setMessage("errterm",'terms of use');
        testform++;
        document.signupform.terms.focus();
        show_error('terms');
        document.signupform.terms.className = 'inputerror';
    }
    else
    {
        setMessage("errterm","");
        hide_rule('term');
        hide_error('terms');
    }
    
    //REN
    /*
    if (document.signupform.share_ren.checked == false)
    {
        show_rule('share_ren');
        setMessage("errshareren",'You must accept to share your account informations with REN in order to play REN.');
        testform++;
        show_error('shareren');
        document.signupform.share_ren.className = 'inputerror';
    }
    else
    {
        setMessage("errshareren","");
        hide_error('shareren');
    }
    */
    if (document.signupform.captcha.value == "")
    {
        show_rule('captcha'); 
        setMessage("errcaptcha",'enter the verification code');
        testform++;
        document.signupform.captcha.focus();
        document.signupform.captcha.className = 'inputerror';
        show_error('captcha');
    }
    else
    {
        hide_error('captcha');
        hide_rule('captcha');
        setMessage("errcaptcha","");
        document.signupform.captcha.className = '';
    }
    
    if (document.signupform.passwordchange.value.length < 6)
    {
        show_rule('pass');
        setMessage("errpass",'password must contain at least 6 characters');
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
        testform++;
        errpass++;
        show_error('password');
    }
    
    if (document.signupform.passwordchange.value.length > 20)
    {
        show_rule('pass');
        setMessage("errpass",'Password must contain 20 characters max');
        testform++;
        errpass++;
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
        show_error('password');
    }
    
    if (document.signupform.passwordchange.value == "")
    {
        show_rule('pass');
        setMessage("errpass",'please enter a password');
        testform++;
        errpass++;
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
        show_error('password');
    }
    
    if (document.signupform.passwordchange.value != document.signupform.passconfchange.value)
    {
        show_rule('pass');
        setMessage("errpass",'password and password confirmation must be the same');
        testform++;
        errpass++;
        document.signupform.passwordchange.focus();
        document.signupform.passwordchange.className = 'inputerror';
        show_error('password');
        show_error('passconf');
    }
    
    if (errpass == 0)
    {
        hide_rule('pass');
        hide_error('password');
        hide_error('passconf');
        document.signupform.passwordchange.className = '';
        setMessage("errpass","");
    }
    
    if (document.signupform.login.value == "")
    {
        show_rule('login');
        setMessage("errlogin",'please enter a login');
        document.signupform.login.focus();
        document.signupform.login.className = 'inputerror';
        testform++;
        errlogin++;
        show_error('login');
    }
    
    else if (detectInvalidChars(document.signupform.login.value) == true)
    {
        show_rule('login');
        setMessage("errlogin",'the login contains forbidden characters');
        testform++;
        errlogin++;
        document.signupform.login.focus();
        document.signupform.login.className = 'inputerror';
        show_error('login');
    }
    
    else if (document.signupform.login.value.length < 5)
    {
        show_rule('login');
        setMessage("errlogin",'login too short');
        testform++;
        errlogin++;
        document.signupform.login.focus();
        document.signupform.login.className = 'inputerror';
        show_error('login');
    }
    
    else if (document.signupform.login.value.length > 20)
    {
        show_rule('login');
        setMessage("errlogin",'login too long');
        document.signupform.login.focus();
        document.signupform.login.className = 'inputerror';
        testform++;
        errlogin++;
        show_error('login');
    }
    
    if (errlogin == 0)
    {
        hide_rule('login');
        hide_error('login');
        setMessage("errlogin","");
        document.signupform.login.className = '';
    }
    
    if (! isValidEmail(document.signupform.mail.value)) 
    {
        show_rule('mail');
        setMessage('errmail','invalid email address');
        testform++;
        errmail++;
        document.signupform.mail.focus();
        document.signupform.mail.className = 'inputerror';
        show_error('mail');
    }
    
    else if (testform == 0 && errmail == 0)
    {
        hide_error('mail');
        setMessage('errmail','');
        document.signupform.mail.className = '';
    }
    
    if (testform == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
}


function validPass()
{
    var testform = 0;
    var errpass = 0;
    var errpassconf = 0;
    
    if (document.newpassform.pass.value == "")
    {
        setMessage("errpass",'please enter your password');
        testform++;
        errpass++;
        show_rule('pass');
        show_error('passchange');
    }
    
    if (document.newpassform.pass.value.length < 6)
    {
        setMessage("errpass",'password must contain at least 6 characters');
        testform++;
        errpass++;
        show_rule('pass');
        show_error('passchange');
    }
    
    if (document.newpassform.pass.value.length > 20)
    {
        setMessage("errpass",'Password must contain 20 characters max');
        testform++;
        errpass++;
        show_rule('pass');
        show_error('passchange');
    }
    
    if (document.newpassform.pass.value != document.newpassform.passconf.value)
    {
        setMessage("errpass",'password and password confirmation must be the same')
        errpass++;
        testform++;
        show_rule('pass');
        show_error('passchange');
        show_error('passconfchange');
    }
    
    if (errpass == 0 )
    {
        setMessage("errpass","");
        hide_rule('pass');
        hide_error('passchange');
        hide_error('passconfchange');
    }
    
    if (testform == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function validVerif()
{
    var testform = 0;
    
    if (document.retrieveform.email.value == "")
    {
        show_rule('mail');
        show_error('mail');
        setMessage("errmail",'enter your email');          
        testform++;
    }
    else
    {
        hide_error('mail');
        setMessage("errmail","");
    }
    
    if (document.retrieveform.captcha.value == "")
    {
        show_rule('captcha');
        show_error('captcha');
        setMessage("errcaptcha",'enter the verification code');  
        testform++;
    }
     else
    {
        hide_error('captcha');
        setMessage("errcaptcha","");
    }
    
    if (testform == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function validlogin(formnumber)
{
    var testform = 0;
    var errpass = 0;
    var errlogin = 0;
    
    if(formnumber == 1)
    {
        form = document.loginform;
        errlog = "errloginlog";
        log = "log";
        errpass = "errpasslog";
        pass = "passlog";
        inputlog = "log";
        inputpass = "pass";
    }
    
    else if (formnumber == 2)
    {
        form = document.loginform2;
        errlog = "errloginlog2";
        log = "log2";
        errpass = "errpasslog2";
        pass = "passlog2";
        inputlog = "log2";
        inputpass = "pass2";
    }
    
    if (form.log.value == "")
    {
        show_rule(log);
        show_error(log);
        setMessage(errlog,'please enter your login');
        document.getElementById(inputlog).style.border = '1px solid red';    
        testform++;
        errlogin++;
    }
    
    if (errlogin == 0)
    {
        setMessage(errlog,"");
    }
    
    if (form.pass.value == "")
    {
        show_rule(pass);
        show_error(pass);
        setMessage(errpass,'please enter your password');  
        document.getElementById(inputpass).style.border = '1px solid red';
        testform++;
        errpass++;
    }
    
    if (errpass == 0 )
    {
        setMessage(errpass,"");
    }
    
    if (testform == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

function show_rule(rule)
{
    document.getElementById('rules_' + rule + '_tab').style.display = '';
}

function hide_rule(rule)
{
    document.getElementById('rules_' + rule + '_tab').style.display = 'none';
}

function show_error(label)
{
    var prec = document.getElementById(label+'_label').innerHTML;
    var image = '<img src="images/icons/error.png" valign="bottom">';
    
    var id = document.getElementById(label+'_label');
    var imgs = id.getElementsByTagName('IMG');
    if (imgs.length < 1) {
    document.getElementById(label+'_label').innerHTML = image +"&nbsp;"+ prec;
    }
}
function hide_error(label)
{
    var chaine = document.getElementById(label+'_label').innerHTML;
    var tab = chaine.split('<img src="images/icons/error.png" valign="bottom">');
    document.getElementById(label+'_label').innerHTML = tab[0];
}

function testRecommand()
{
    if (document.sendrecommandform.subject.value == '')
    {
        document.getElementById('errmsg').style.display = "";
        document.getElementById('errmsg2').innerHTML = 'Please enter a subject for your message';
        return false;
    }
    if (document.sendrecommandform.message.value == '' || document.sendrecommandform.message.value == 'Indique les coordonnées ( nom, email ) et / ou le site sur lequel nous pouvons contacter le créateur.' || document.sendrecommandform.message.value == 'Tell us about the identity ( name , email ) and / or the URL of the site where we can contact this creator.')
    {
        document.getElementById('errmsg').style.display = "";
        document.getElementById('errmsg2').innerHTML = 'Your message body is empty !';
        return false;
    }
    else
    {
        return true;
    }
}

function pop_up(uid) 
{
    var left = (window.screenX || window.screenLeft) + Math.round(((window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth)  - 500) / 2.0);
    var top  = (window.screenY || window.screenTop) + Math.round(((window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight) - 400) / 2.0);
    var options = 'left='+left+',top='+top+',height=300,width=510,scrollbar="no"';// resize a verifier ...
    pop = window.open('suppress-popup.php?uid='+uid, 'xos', options);
    pop.focus();
}
