function getInternetExplorerVersion() {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null)
            rv = parseFloat(RegExp.$1);
    }
    return rv;
}
function update_verifzone(section,text){
    if(text!='ok'){
        //$(section).update('<img src="http://formulaire.apicius.com/img/button_cancel.png" alt="" /><span>'+text+'&nbsp;</span>');
        $(section).update('<img src="http://formulaire.apicius.com/img/button_cancel.png" alt="" /></span>');
    }
    else {
        $(section).update('<img src="http://formulaire.apicius.com/img/button_ok.png" alt="" />');
    }
}
function get_test_type(str_type){                                           
    array_type=str_type.split(";");
    var type =  {};
    type.section = array_type[0];
    type.name = array_type[1];
    type.min = 0;
    type.max = 0;
    if(type.name.indexOf('(')!=-1){
        type.length = type.name.substr(type.name.indexOf('(')+1,type.name.indexOf(')')-type.name.indexOf('(')-1);
        array_length = type.length.split(",");
        type.min = array_length[0];
        type.max = array_length[1];
        type.name = type.name.substr(0, type.name.indexOf('('));
    }
    type.oblig = array_type[2]; 
    return type;    
}

    
function test(type,value){
    $('message').addClassName('message_false'); 
    if(type.oblig == 1)
    { 
        if (typeof(arguments[2]) != 'undefined' &&   arguments[2].type == 'checkbox' && arguments[2].checked !== true){
            return trad['required'];
        } 
        else if (value === ''){
            return trad['required'];
        }
    }
    var message='ok';
    //alert(type.name);
    if(value!==''){
        switch  (type.name) {
            case 'confirm_email':
                if(arguments[2] != undefined)
                {
                    if(document.getElementById(arguments[2].id.replace('confirm_','')).value == arguments[2].value)
                    {
                        message = "ok";
                    }
                    else 
                    {
                        message=trad['mail_wrong'];
                    }
                }
            break;
            case 'email':
                  if(/^([\w\-]+)(\.[\w\-]+)*@([\w\-]+\.){1,5}([A-Za-z]){2,4}$/.test(value))
                  {
                       message=("ok");
                       if(arguments[2] != undefined && !document.getElementById('confirm_'+arguments[2].id)  && !document.getElementById('confirm_'+arguments[2].id.replace('confirm_','')))
                       {
                            /*
                            0. <ul class="form_element">
                            1. <li class="name [+classobl+]">[+nom+][+oblsign+] : </li>
                            [+admin_button+] 
                            2. <li class="input">3. <input class="text" rel="[+test+];[+obl+]" id="[+name_post+]" name="[+name_post+]" type="text" value="[+default_value+]"></input></li>
                            4. <li id="msg_[+name_post+]" class="msg_text"></li>
                            */
                            var labelTitle = trad['saisir_a_nouveau'];
                            //Recherche du UL parent
                            searchedObject = arguments[2].parentNode;
                            while(searchedObject.tagName != "UL")
                            {
                                searchedObject = searchedObject.parentNode;    
                            }
                            ulParent = searchedObject;
                            //0.
                            var newUl = document.createElement("ul");
                            newUl.className = "form_element";
                            ulPArent_Parent = ulParent.parentNode;
                            ulPArent_Parent.insertBefore(newUl, ulParent.nextSibling);
                            
                            //id à donner au champ de confirmation email
                            newId = 'confirm_'+arguments[2].id;
                            
                            //1.
                            var confirmMailLabel = document.createElement("li");
                            confirmMailLabel.className = "name obl";
                            confirmMailLabel.innerHTML = labelTitle+" * :";
                            newUl.appendChild(confirmMailLabel);
                            //2.
                            var confirmMailInputLi = document.createElement("li");
                            confirmMailInputLi.className = "input";
                            //3.
                            var confirmMailInput = document.createElement("input");
                            confirmMailInput.id = newId;
                            confirmMailInput.className = "text";
                            confirmMailInput.type = "text";
                            confirmMailInput.value = "";
                            confirmMailInput.setAttribute("rel", type.section+";confirm_email;1");
                            confirmMailInput.setAttribute("autocomplete", "off");
                            confirmMailInput.setAttribute("onpaste", "return false;");
                            //Désactivation du click droit et du ctrl + v pour IE (dans une iframe)
                            if(navigator.appName == 'Microsoft Internet Explorer')
                            {
                                var checkCtrlIns = function(field){
                                    var code = (document.all) ? event.keyCode:e.which;
                                    var ctrl = (document.all) ? event.ctrlKey:e.modifiers & Event.CONTROL_MASK;
                                    if(ctrl && code==86){ return false; }
                                    return true;
                                };
                                var desactiveClickDroit = function(){
                                    if(event.button==2){ 
                                        function clickIE() {if (document.all) {(message);return false;}}
                                        if (document.layers){document.captureEvents(Event.MOUSEDOWN);}
                                        else{document.oncontextmenu=clickIE;}
                                        document.oncontextmenu=new Function("return false")
                                    }
                                };
                                var reactiveClickDroit = function(){
                                    var message="";
                                    function clickIE(){if (document.all) {(message);return true;}}
                                    if(document.layers){document.captureEvents(Event.MOUSEDOWN);}
                                    else{document.oncontextmenu=clickIE;}
                                    document.oncontextmenu=new Function("return true");
                                };
                                confirmMailInput.setAttribute("onkeydown", function(){return checkCtrlIns(this);});
                                confirmMailInput.setAttribute("onmousedown", function(){desactiveClickDroit();});
                                confirmMailInput.setAttribute("onblur", function(){reactiveClickDroit();});
                            }
                            
                            confirmMailInput.name = newId;
                            confirmMailInputLi.appendChild(confirmMailInput);
                            //confirmMailInput.onpaste = return false; 
                            newUl.appendChild(confirmMailInputLi);
                            //4.
                            var confirmMailImg = document.createElement("li");
                            confirmMailImg.id = 'msg_'+newId
                            confirmMailImg.className = "msg_text";
                            newUl.appendChild(confirmMailImg);
                            //Création du HelpBalooon.
                            window['tip_'+newId] = new HelpBalloon({
                                icon: $(newId),
                                data_rel : type.section+';;1',
                                data_namepost : newId,
                                title : labelTitle,
                                useEvent : []
                            });   
                            //Ajout du test
                            newField = document.getElementById(newId);
                            test_type=newField.getAttribute('rel');
                            addFieldEvents(newField);
                            if(parent.document.getElementById('form_frame') != undefined)
                            {
                                ajust_frame();
                            }
                            
                       }
                  }
                  else 
                  {
                      message=trad['mail_wrong'];
                  }
            break;                                           
            case 'telephone':
                  var reg= /^([+]?[0-9()]{3,20})*$/;
                  if(reg.test(value)===true ){ message=("ok"); }
                  else {  message = trad['phone_wrong']; } 

            break;
            case 'text':
                 /*test de la longueur uniquement si specifiee*/
                 if(type.max!='' && type.max!=0){
                     if(value.length>type.max){
                        message=trad['text_too_long'] + type.max;  
                     }
                 }
                 if(type.min!='' && type.min!=0){
                     if(value.length<type.min){
                        message=trad['text_too_short'] + type.min; 
                     }
                 }
            break;
            case 'int':
                 /*test si numerique et test longueur*/
                 if(isNaN(value)==true || value.indexOf(".")!=-1){
                    message=trad['not_a_number'];
                 }
                 else {
                     if(type.max!=0 ){
                           if(value.length>type.max){
                                message=trad['number_too_big'] + type.max;
                           }
                     }
                     if(type.min!=0 ){
                           if(value.length<type.min){
                                message=trad['number_too_small'] + type.min;
                           }
                     }
                 }
            break;
            case 'double':
                 /*test si numerique + "," ou ".*/
                 /*test si numerique et test longueur */
                 if(isNaN(value.replace(",","."))==true){
                    message="Merci de rentrer un nombre";
                 }
                 else {
                     if(type.max!='' && type.max!=0 ){
                           if(value.length>type.max){
                                message=trad['number_too_big'] + type.max ;
                           }
                     }
                     if(type.min!='' && type.min!=0 ){
                           if(value.length<type.min){
                                message=trad['number_too_small'] + type.min ;
                           }
                     }
                 }
            break;
            case 'intchar':
                 /*test si numerique et test longueur*/
                 if(isNaN(value)==true || value.indexOf(".")!=-1){
                    message=trad['not_a_number'];
                 }
                 else {
                     if(type.max!=0 ){
                           if(value.length>type.max){
                                message=trad['too_many_digits'] + type.max;
                           }
                     }
                     if(type.min!=0 ){
                           if(value.length<type.min){
                                message=trad['too_few_digits'] + type.min;
                           }
                     }
                 }
            break;
            case 'date':
                if(value.length!=10){
                    return trad['not_a_date'];    
                }
                datearray = value.split('/');
                if(datearray.length!=3){
                    return trad['not_a_date']; 
                }  
                if(datearray[0].length!=2 || datearray[1].length!=2 || datearray[2].length!=4 ){
                    return trad['not_a_date'];
                }
                if(isNaN(datearray[0]) || isNaN(datearray[1]) || isNaN(datearray[2]) ){
                    return trad['not_a_date'];
                }
                if(datearray[0]<1 || datearray[0]>31 || datearray[1]<1 || datearray[1]>12 || datearray[2]<0){
                     return trad['not_a_date'];
                }

            break;
            default:
                 message = "ok";
            break;
        }
    }
    return message;
   
}
function verif_form(nocolor){
    var inputs = document.getElementsByTagName('*');
    valide="1";
    /*parcourt des cases de formulaire  lance les tests */
    if(document.getElementsByTagName){
         for (var i=0; i<inputs.length; i++){
            test_type=inputs[i].getAttribute('rel');
            //if(test_type!=null && inputs[i].tagName!='LINK' && inputs[i].tagName!='SCRIPT' && inputs[i].tagName!='A' && test_type != ''){
            if(test_type !== null && test_type!=='' && test_type !='stylesheet' && test_type !='shortcut icon'){
                var test_info = get_test_type(inputs[i].getAttribute('rel'));
                var test_result = test(test_info,inputs[i].value,inputs[i]); 
                if(test_result!="ok"){ 
                    valide = 0; 
                    if(nocolor===0){
                        $(inputs[i].id).addClassName('false');
                    }
                }
                if(nocolor===0){
                     update_verifzone("msg_"+inputs[i].id,test_result);
                }
            }
         }
    }
    return valide;
}
function submit_form(){
       if(verif_form(0)==1){
          if($('agree').checked==false){
            $('message').update(trad['not_agree']);
            $('message').removeClassName('message_false');
            return false;
          }
          $('eform').action=rootpath+"valid_form.php";
          $('eform').submit();
       }
       else{
         $('message').update(trad['form_error']);
         $('message').removeClassName('message_false');
       }   
       return false;
}
function update_message(text){
        if($('message')){
            if(text.substr(text.length-1,1)=='0'){
                $('message').update(text.substr(0,text.length-1));
                $('message').removeClassName('message_false');
            regencaptcha();
            }
            else {
                $('form_body').update(text);
                /*redimensionnement iframe pour plateforme 2*/
                if(ajust_frame2){
                    ajust_frame2();
                }      
            }
        }
}



