

/*
 *  $pas.forms
 *
 *  functions to manage forms 
 *
 *
 */

$pas.forms = {
    motclefneuf:true,
    verif: function (obj) {
        if ( $pas.forms.motclefneuf) {
            obj.value="";
            $pas.forms.motclefneuf=false;
            obj.style.color="#000000";
            $pas.tools.getParams();
        }
        return false;
    },
    /*
     *  $pas.forms.checkDiv
     *
     *  check if div where place information exists
     *
     */
    checkDiv: function (idname) {
        if ( !$(idname)  ) {
            alert("manque le tableau des rubriques");
        }
    },
    /*
     *  $pas.forms.displayVilles
     * */
    displayVilles: function () {
        if ( villes && $('villes') && $('villeschoisies') && $('selectedvilles') ) {
            var liste = '';
            for ( var vid in villes) {
                var nom = villes[vid]['nom'];
                liste += $pas.forms.buildLinkVille(vid,nom) + '<br />'; 
                //liste += '<a href="#" id="'+vid+'" class="lien02" onclick="return $pas.forms.select('+vid+');">' + nom + '</a><br />';
            }
            $('villes').innerHTML = liste;
        } else {
            alert("datas missing check form");
        }
    },
    /*
     *  $pas.forms.selectedvilles
     *
     *  hash containing selected villes id
     */
    selectedvilles:{},
    /*
     * $pas.forms.select
     *
     * params: id_ville
     */
    select: function (vid) {
        if (  $pas.forms.selectedvilles[vid] ) {
            delete $pas.forms.selectedvilles[vid];
        } else {
             $pas.forms.selectedvilles[vid] = villes[vid]['nom'];
        }
        $pas.forms.rebuildSelectedVilles();
        //rebuild le champ hidden aussi
        $pas.forms.updateHiddenSelectedVilles();
        return false;
    },
    /*
     * $pas.forms.updateHiddenSelectedVilles
    */
    updateHiddenSelectedVilles: function () {
        $('selectedvilles').value = '';
        for (var vid in $pas.forms.selectedvilles) {
            $('selectedvilles').value += vid+',';
        }
    },
    /*
     *  $pas.forms.rebuildSelectedVilles
     *
     */
    rebuildSelectedVilles: function () {
        var liste = '';
        for (var vid in $pas.forms.selectedvilles) {
            var nom = $pas.forms.selectedvilles[vid];
            liste += $pas.forms.buildLinkVille(vid,nom)  + ' &nbsp;' ;
        }
        $('villeschoisies').innerHTML = liste;

    },
    /*
     *  $pas.forms.displayPaysCode
     *
     *
     */
    displayPaysCode: function () {
        if (  $pas.tools.params['pays']  ) {
            $pas.datas.countrycode =  $pas.tools.params['pays']  ;
        }

    },
    /*
     *  $pas.forms.buildCountryList
     *
     *
     */
    buildCountryList: function () {
        var countryselect = '<select id="pays_8" name="pays_8" onchange="$pas.forms.changePays(this)"; >';
        if (  typeof(listepays)  ) {
            for (var code in listepays ) {
                var checked = '';
                if ( $pas.datas.countrycode == code ) {
                    checked = " selected ";
                }
                countryselect += '<option value="'+code+'"'+checked+'>'+listepays[code]['nom']+'</option>';
            }
            countryselect += '</select>';
            if ( $('pays_8') ) {
                $('pays_8').parentNode.innerHTML = countryselect;
            }
        } else {
            alert("no pays");
        }
    },
    changePays: function ( obj ) {
         var codepays =  obj[ obj.selectedIndex]['value'] ;
         $pas.datas.countrycode = codepays;
         if ( $('regions1') ) {
            $('regions1').innerHTML = '';
         }
         if ( $('regions') ) {
            $('regions').innerHTML = '';
         }
         $('zip_21').value='';
         if ( $pas.forms.ville44) {
            $('ville44field').innerHTML = $pas.forms.ville44;
            $('list44').innerHTML = '';
         }
        $pas.forms.buildRegions1List( );

    },
    buildRegions1List: function () {
          new Ajax.Request('/js/json/'+$pas.datas.countrycode+'/regions1.js',
                        {
                            'method':'get',
                            onSuccess:$pas.forms.getRegion1
                        }
                );
            
    },
    regions1:{},
    getRegion1: function (tr) {
         var datas = tr.responseText;
         eval(datas);
         $pas.forms.regions1 = regions1;
        var rselect = '<br /><select id="regions1" name="regions1" onchange="return $pas.forms.buildregionsList(this);"><option>------------</option>';
        for ( var code in regions1 ) {  
            rselect += '<option value="'+code+'">'+regions1[code]['nom']+'</option>';
        }
        rselect += '</select>';
        if ( $('regions1') ) {
            $('regions1').innerHTML = rselect;
        } else {
            $('pays_8').parentNode.innerHTML += '<div id="regions1">'+ rselect + '</div><div id="regions" ></div>';
        }
        
    },
    buildregionsList: function (obj) {
        var coderegion1 =  obj[ obj.selectedIndex]['value'] ;
        $pas.datas.coderegion1 = coderegion1;
            new Ajax.Request('/js/json/'+$pas.datas.countrycode+'/'+coderegion1+'/regions.js',
                        {
                            'method':'get',
                            onSuccess:$pas.forms.getRegion
                        }
                );
        return false;
    },
    getRegion: function (tr) {
         var datas = tr.responseText;
         eval(datas);
         var rselect = '<br /> <select id="regions" name="regions" onchange="return $pas.forms.buildVillesList(this);"><option>------------</option>';
         for (var code in regions) {
            rselect += '<option value="'+code+'">'+regions[code]['nom']+'</option>';
         }
         rselect += '</select>';
         $('regions').innerHTML = rselect + '<div id="rvilles" ></div>';
         $('zip_21').value='';
         if ( $pas.forms.ville44) {
            $('ville44field').innerHTML = $pas.forms.ville44;
            $('list44').innerHTML = '';
         }

    },
    buildVillesList: function (obj) {
        var coderegion =  obj[ obj.selectedIndex]['value'] ;
         $pas.datas.coderegion = coderegion;
            new Ajax.Request('/js/json/'+$pas.datas.countrycode+'/'+$pas.datas.coderegion1+'/villes_'+coderegion+'.js',
                        {
                            'method':'get',
                            onSuccess:$pas.forms.getVilles
                        }
                );
        return false;

    },
    getVilles: function (tr) {
         var datas = tr.responseText;
         eval(datas);
         $pas.forms.villes = villes;
         var ap = 0;

         var rselect = '<br /> <select id="ville_44" name="ville_44" onchange="$pas.forms.displayZip(this);"><option>----------------</option>';
         for ( var villeid in villes) {
                rselect += '<option value="'+villeid+'">'+villes[villeid]['nom']+'</option>';
                ap++;
         }
         rselect += '</select>';
         if ( $pas.forms.first ) {
             $pas.forms.ville44 =  $('ville_44').parentNode.innerHTML;
             $pas.forms.first = false;
         }
         $('zip_21').value='';
         if (   $pas.forms.ville44 ) {
            if (  $('ville44field')  ) {
                $('ville44field').innerHTML =  $pas.forms.ville44;
            }
         }
         if ( ap > 0 ) {
            $('ville_44').parentNode.innerHTML  = '<div id="list44">' + rselect  + '</div><div id="ville44field"></div>';
         }

    },
    villes:{},
    first:true,
    ville44:'',
    displayZip: function (obj) {
        var villeid = obj[ obj.selectedIndex ]['value'];
        $('zip_21').value= $pas.forms.villes[villeid]['zip'];
    },
    authenticated: function (formname) {
        if ( GetCookie('estoc') ) {
           //display disconnected in menu bar 
           if ($('authenticated')) {
                if ($('msg_authenticated')) {
                    $('authenticated').innerHTML = $('msg_authenticated').innerHTML;
                }
                $('send').disabled=false;
           }
        } else {
            //disble submit button
            if ( $('send')) {
                $('send').disabled=true;
            }
            //display connect
            if ( $('authenticated') ) {
                if ( $('msg_unauthenticated') ) {
                  $('authenticated').innerHTML = $('msg_unauthenticated').innerHTML;
                }
            }
        }
    },
    connect: function () {
            return false;
    },
    /*
     *  $pas.forms.getAuthentication
     *
     *  display form to authenticate
     *
     */
    getAuthentication: function () {
        //display form to authenticate
        $('authenticated').innerHTML = '<iframe src="/authenticate.html?iframe=yes" width="210px" height="275px" name="authenticate" id="authenticate" frameborder=0></iframe>';
        return false;

    },
    authenticate: function () {
        if ( $('password').value ) {
            var pars = "email1_18=" + window.encodeURIComponent( $('email1_18').value ) + "&password=" + window.encodeURIComponent( $('password').value );
            new Ajax.Request(
                    '/poinconneur',
                    {
                        method:'post',
                        parameters:pars,
                        onComplete:$pas.forms.authDone
                    }
                );
        } else {
            var pars = "email1_18=" + window.encodeURIComponent( $('email1_18').value );
            new Ajax.Request(
                    '/forgotten',
                    {
                        method:'post',
                        parameters:pars,
                        onComplete:$pas.forms.resent
                    }
                );
        }
        return false;
    },
    authDone: function (r) {
         var rs = r.responseText.split(':');
         if (rs[0] == 'ok') {
                //authenticated, close iframe
                if (!$('send')) {
             //       alert("manque id send dans la page parent");
                }
                parent.$('send').disabled=true;
                GetCookie('estoc') ;
                parent.location.reload();
         } else {
            $('authenticated').innerHTML = $('msg2').innerHTML;
         }
    },
    resent: function (r) {
        var rs = r.responseText.split(':');
        $('informations').innerHTML = $('msg3').innerHTML;   
      //  $('informations').className="warning";   
    },
    /*
     *  $pas.forms.tosignup
     *
     *  display form to sign up
     *
     *
     */
    tosignup: function () {
        var countryvar = '';
        if (  $pas.datas.countrycode  ) {
            countryvar = '&pays='+ $pas.datas.countrycode;
        }
        $('authenticated').innerHTML = '<iframe src="/simpleuser.html?iframe=yes'+countryvar+'" width="600px" height="500px" name="newcontact" id="newcontact" frameborder=0></iframe>';
        return false;
    },
    addNewpa: function () {

    },
    /*
     *  $pas.forms.newpa
     *
     *
     */
    newpa: function (msg) {
        $('newpa').innerHTML = '<a href="" class="lien02" onclick="window.location.href;">'+msg+'</a>';
        $('newpa').style.margin="0 50% 0 10%";
        $('newpa').style.textAlign="center";
        $('newpa').className='warning';
    },
        
    /*
     *  $pas.forms.hideHeaders
     *
     *
     */
    hideHeaders: function () {
        if ( $pas.tools.params['iframe'] &&  $pas.tools.params['iframe'] == "yes") {
            $('titre').style.display="none";
            $('general').style.background="white";

        }
    },
    disconnect: function (formname) {
        //disconnect = delete cookie
        //block form
        deconnect();
       window.location.reload();
        
    },
    addRegionDatas: function () {
        //add hiiden field in form
        //regions and ville
        if ( $pas.tools.params['cr1'] ) {
           $('annonce').innerHTML += '<input type="hidden" name="coderegion1" id="coderegion1" value="'+$pas.tools.params['cr1']+'">';
        }
        if ( $pas.tools.params['cr'] ) {
           $('annonce').innerHTML += '<input type="hidden" name="coderegion" id="coderegion" value="'+$pas.tools.params['cr']+'">';
        }
        if ( $pas.tools.params['idville'] ) {
           $('annonce').innerHTML += '<input type="hidden" name="pays" value="'+$pas.datas.countrycode+'">';
           $('annonce').innerHTML += '<input type="hidden" name="ville" value="'+$pas.tools.params['idville']+'">';
           $('annonce').innerHTML += '<input type="hidden" name="villenom" value="'+villes[$pas.tools.params['idville']]['nom']+'">';
           $('annonce').innerHTML += '<input type="hidden" name="zip" value="'+villes[$pas.tools.params['idville']]['zip']+'">';
        }
           $('annonce').innerHTML += '<input type="hidden" name="paxxx" value="'+rubriques[ $pas.tools.params['idru'] ]['runame']+'">';
        $('local').innerHTML = "<h4>" + villes[$pas.tools.params['idville']]['nom'] + "</h4>";

    },
    buildLinkVille: function (vid,nom) {
        return '<a href="#" id="'+vid+'" class="lien02" onclick="return $pas.forms.select('+vid+');">' + nom + '</a>';
    },
    /*
     * $pas.forms.toolbar
     */
    toolbar: function () {
        return [
                ['Source','-','Preview','-','Bold','Italic','Underline','Strike'],
                ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker'],
                ['Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'],
                '/',
                ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote','CreateDiv'],
                ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
                ['Link','Unlink','Anchor'],
                ['Image','HorizontalRule','Smiley','SpecialChar','PageBreak'],
                '/',
                ['Styles','Format','Font','FontSize'],
                ['TextColor','BGColor'],
                ];
    }
}

$pas.forms.rubriques = {
    /*
     *  $pas.forms.rubriques.displayName
     *  
     *
     */
    displayName: function () {
        $pas.forms.checkDiv('rubinfo');
        var idru =  $pas.tools.params['idru']; 
        var parentid = rubriques[idru]['id_parent'];
        var lpath = $pas.forms.rubriques.displayPath( rubriques[idru]['path'] );
        $('rubinfo').innerHTML = "<h3>"+ lpath + " "  +  rubriques[idru]['nom'] + "</h3>"  ;
        $('id_ru').value= idru;
        
    },
    /*
     *  $pas.forms.rubriques.displayList
     *
     *  Display select list of rubriques
     *
     */
    displayList: function () {
        var rselect = '<br /><select id="listerub" name="listerub" onchange="return $pas.forms.rubriques.select(this);"><option>------------</option>';
        for (var idru in rubriques) {
            if (!rubriques[idru]['path'].length == 0 ) {
                var lpath = $pas.forms.rubriques.displayPath( rubriques[idru]['path'] );
                rselect += '<option value="'+idru+'">' +  lpath + rubriques[idru]['nom']  + '</option>';
            }
        }
        rselect += "</select>";
        $('rubsel').innerHTML = $('msgchangerubrique').innerHTML + rselect;
    },
    select: function (obj) {
         $('id_ru').value =  obj[ obj.selectedIndex]['value'] ;
         var idru =  obj[ obj.selectedIndex]['value'];
         var parentid = rubriques[idru]['id_parent'];
         var lpath = $pas.forms.rubriques.displayPath( rubriques[idru]['path'] );
         $('rubinfo').innerHTML = "<h3>"+ lpath + " "  +  rubriques[idru]['nom'] + "</h3>"  ;
         return false;
        
    },
    /*
     *  $pas.forms.rubriques.displayPath
     *
     *
     */
    displayPath: function (path) {
        var l = '';
        for ( var i = 0; i < path.length  ; i++) {
            var idru = path[i];
            if ( idru != 1) {
                l += rubriques[idru]['nom'] + " - ";
            }
        }
        return l;
    },
    /*
     *  $pas.forms.rubriques.displayListLabels
     *
     */
    displayListLabels: function () {
        var rselect = '<select id="label_41" name="label_41"><option>---------------</option>';
        for (var idlabel in labels) {
            rselect += '<option value="'+idlabel+'">' + labels[idlabel]['nom']  + '</option>';
        }
        rselect += "</select>";
        $('label_41').parentNode.innerHTML = rselect;
    }
}

$pas.forms.send = {
    /*
     *  $pas.forms.send.contact
     *
     *
     */
    contact: function () {
        //check datas client side
        var pars='ajax=yes';
        var inputsList = $('newuser').getElementsByTagName('input');
        var nok=0;
        for ( var i = 0; i < inputsList.length; i++) {
            var field = inputsList[i].name;
            if (  $pas.forms.controles.contacts[field] &&  $pas.forms.controles.contacts[field]['required']  ) {
                var res = $pas.forms.send.check(field);
                if ( res && res['ok'] == false) {
                    nok=1;
                   return false;  
                }
            }
            if ( inputsList[i].name ) {
                pars += "&" + field + "=" + window.encodeURIComponent( inputsList[i].value );
            }
        }
        var selectList =  $('newuser').getElementsByTagName('select');
        for ( var i = 0; i < selectList.length; i++) {
            var field = selectList[i].name;
            pars += "&" + field + "=" + window.encodeURIComponent( selectList[i].value );

        }
        //all is fine
        if ( nok == 0) {
            new Ajax.Request( '/register', 
                        {
                            method:'post',
                            parameters:pars,
                            onSuccess:$pas.forms.send.registered
                        }
                );
        }

        return false;
    },
    /*
     *  $pas.forms.send.registered
     *
     */
    registered: function (tr) {

        var datas = tr.responseText;
       eval(datas);
       if (user['exists'] == 'yes') {
            if ($('authenticated') ) {
                if ($('msg102') ) {
                    $('authenticated').innerHTML = $('msg102').innerHTML;
                }
            }
       }
       if ( user['created'] == 'yes' ) {
           //rien de spécial a faire, recharge la page, compte créé 
       }
       if (GetCookie('estoc') ) {
            if ( parent ) {
                parent.$('send').disabled=true;
                parent.location.reload();
            } else {
                window.location.href="http://www."+$pas.datas.domain;
                window.location.href;
            }
       }

    },
    /*
     *  $pas.forms.send.check
     *  
     *
     */
    check: function (field) {
        if ($(field).value) {
            var reg1 = /email/;
            if ( reg1.test(field) ) {
               return $pas.forms.send.checkMail(field);
            }
            var reg2 = /^password$/;
            if ( reg2.test(field) ) {
              return $pas.forms.send.checkPassword(field);
            }
        } else {
            if ($('msgrequired') ) {
                alert( $('n_'+field).innerHTML.replace(/<[^\>]+>/g,'') + " "  + $('msgrequired').innerHTML ) ;
                $(field).style.border="1 px solid red";
                return {'ok':false};
            }
        }
        return {'ok':true};
    },
    /*
     *  $pas.forms.send.checkMail(field) 
     *
     */
    checkMail: function (field) {
        var reg2 = /^[^\@]+\@[^\.]+\.[a-z]+$/i;
        var email = $(field).value;
        if ( !reg2.test(email)  )  {
            alert( $('n_'+field).innerHTML.replace(/<[^\>]+>/g,'') + " "+ email  + " "  + $('msgmailerr').innerHTML ) ;
            $(field).style.border="1 px solid red";
            return {'ok':false};
        }
    },
    checkDate: function () {
        
    },
    checkPassword: function (field) {
        var pass = $(field).value;
        var pass2 = $(field+"2").value;
        if ( pass.length < 6) {
            alert( $('n_'+field).innerHTML.replace(/<[^\>]+>/g,'')  + " "  + $('msgpasswdtooshort').innerHTML + " " +  pass.length ) ;
            return {'ok':false};
        }
        var alphaonly = /^[a-zA-Z]+$/;
        var numonly = /^[0-9]+$/;
        if ( alphaonly.test(pass) || numonly.test(pass)) {
            alert( $('n_'+field).innerHTML.replace(/<[^\>]+>/g,'')  + " "  + $('msgalphanum').innerHTML ) ;
            return {'ok':false};
        }
        if (pass != pass2) {
            alert( $('n_'+field).innerHTML.replace(/<[^\>]+>/g,'')  + " "  + $('msgpassunmatch').innerHTML ) ;
            return {'ok':false};
        }
    }
}

$pas.forms.annonces = {
    /*
     *  $pas.forms.annonces.send
     *
     *
     */
    send: function () {
        //input, select, radio, textarea
        var pars='ajax=yes';
        var inputsList = $('annonce').getElementsByTagName('input');
        var nok=0;
        for (var i = 0; i < inputsList.length;i++) {
            var field = inputsList[i].name;
            if (  $pas.forms.controles.annonces[field] &&  $pas.forms.controles.annonces[field]['required']  ) {
                var res = $pas.forms.send.check(field);
                if ( res && res['ok'] == false) {
                    nok=1;
                   return false;  
                }
            }
            if ( inputsList[i].name ) {
                pars += "&" + field + "=" +  window.encodeURIComponent( inputsList[i].value );
            }
        }
        var selectList =  $('annonce').getElementsByTagName('select');
        for ( var i = 0; i < selectList.length; i++) {
            var field = selectList[i].name;
            if (  $pas.forms.controles.annonces[field] &&  $pas.forms.controles.annonces[field]['required']  ) {
                var res = $pas.forms.send.check(field);
                if ( res && res['ok'] == false) {
                    nok=1;
                   return false;  
                }
            }
            pars += "&" + field + "=" + window.encodeURIComponent( selectList[i].value );
        }
        if ( CKEDITOR) {
            pars += '&body_5=' + window.encodeURIComponent( CKEDITOR.instances.body_5.getData() ) ;       
        } else {
            pars += '&body_5=' +  window.encodeURIComponent(  $('body_5').value );       
        }
        if ( $pas.datas['id_titre']) {
            pars += "&id_titre="+$pas.datas['id_titre'];
        }
        if ( nok == 0) {
            new Ajax.Request(
                    '/addpa',
                    {
                        method:'post',
                        parameters:pars,
                        onComplete:$pas.forms.annonces.saved
                    }
                );
        }
      return false;  
    },
    /*
     *  $pas.forms.annonces.saved
     *
     *
     */
    saved: function (tr) {
        eval(tr.responseText);
        if (newpa) {
            if (newpa['success'] == 'ok') {
                 $pas.datas['id_titre'] = newpa['id_titre'];
                 $('send').value= $('msgupdatepa').innerHTML;
                 //Ajouter une nouvelle information
                 $pas.forms.newpa( $('msgnewpa').innerHTML );
                 alert( $('msgparution').innerHTML);
            }
        }
    }

}

$pas.forms.controles = {
    /*
     *  $pas.forms.controles.requiredContactFields
     *
     *      check field required or not
     *
     *      message is in page msg101 required , msg102 optional
     *
     *
     */
    requiredContactFields: function (formName) {
        var inputsList = $(formName).getElementsByTagName('input');
        for ( var i = 0; i < inputsList.length; i++) {
            var fid = inputsList[i].id;
            if ( $pas.forms.controles.contacts[ fid ] &&   $pas.forms.controles.contacts[ fid ]['required']  ) {
                $('n_'+fid).innerHTML+= ' <span style="vertical-align:super;font-size:.4em;font-weight:bold;">(*)</span>';

                
            }
        }
    },
    contacts:{
        'password':{'required':true},
        'prenom_1':{'required':true},
        'pseudo_55':{'required':true},
        'nom_2':{'required':true},
        'adresse_30':{'required':false},
        'pays_8':{'required':true},
        'ville_44':{'required':true},
        'zip_21':{'required':true},
        'email1_18':{'required':true},
        'phone1_17':{'required':false}
    },
    annonces:{
        'titre_4':{'required':true},
        'body_5':{'required':true},
        'transaction_3':{'required':true},
        'id_ru':{'required':true}
    },
    pa:{},
    pa15:{},
    news:{}
}


$pas.forms.images = {
    /*
    *   $pas.forms.images.checkField
    */
    checkField: function () {
            $pas.forms.images.checkLegend();
            return true;
    },
    checkLegend: function () {
        if ( $('legimage') && $('legimage').value =='' ) {
            if ( $('displayerr')) {
                alert( $('legmiss').innerHTML  );
                $('displayerr').innerHTML = $('legmiss').innerHTML;
                return false;
            }
            
        }
    }

}


