Utilisateur:Pamputt/Gadget-CreerFlexionDa.js

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.

//==========================================================================================
// Création d'une page de flexions en danois depuis le lien rouge dans la page principale
// -----------------------------------------------------------------------------------------
// Pamputt 2017-01-11
// -----------------------------------------------------------------------------------------
//[[Catégorie:JavaScript du Wiktionnaire|CreerFlexionDa.js]]
//==========================================================================================
importScript('MediaWiki:Gadget-CommonWikt.js');
 
if ( mw.config.get('wgNamespaceNumber') === 0 ){ CrFlDa_ChangerLiensRouges(); }
 
//--------------------------------------------------------------------------------------
// Créer les liens vers le gadget
// pour tous les liens rouges dans les infobox de classe "flextable-da"
//--------------------------------------------------------------------------------------
function CrFlDa_ChangerLiensRouges(){
	var genre_pagename;
	// genre du mot de la page courante ? On cherche le mot en gras dans la boite de flexions
	var flextable_vedette = $('.flextable-da strong').length;
	if ( flextable_vedette && $('.flextable-da strong').first().parents('.flextable-da-c').length ) {
		genre_pagename = 'c';
	} else if ( flextable_vedette && $('.flextable-da strong').first().parents('.flextable-da-n').length ) {
		genre_pagename = 'n';
	}
	$(".flextable-da .new").each(function() {
		var flex = $(this).text();
		// Une boite de flexions pour noms communs contient deux lemmes différents :
		// celui au masculin et au féminin : on ne colore dans ce cas que les formes
		// du genre correspondant au nom de la page
		var isNomCommun = false;
		var typeDeMot = $(this).parents('.flextable-da').prevAll('h3').first()
		                .children().first().text();
		if ( typeDeMot == 'Nom commun' || typeDeMot == 'Locution nominale' ) {
			isNomCommun = true;
		}
		// genre du mot en lien rouge ?
		var genre_lien_rouge;
		if ( $(this).parents('.flextable-da-c').length ) {
			genre_lien_rouge = 'c';
		} else if ( $(this).parents('.flextable-da-n').length ) {
			genre_lien_rouge = 'n';
		}
		// On ne surligne pas les liens qui ne sont pas des flexions du mot courant
		if (isNomCommun && genre_lien_rouge != genre_pagename) {
			return;
		}
		// sinon on surligne
		$(this).css('background-color','#00ff00');
		$(this).prop('title', 'Cliquez pour créer « ' + flex + ' » avec le gadget');
		$(this).click(function(e) {
			e.preventDefault();
			CrFlDa_CreerFlexion1( flex.replace(/ /g, ' ') );
		});
    });
}
 
//==========================================================================================
var CrFlDa_Mot = "";
var CrFlDa_Flex = "";
 
//--------------------------------------------------------------------------------------
// Première étape suite à clic :
// * mémoriser les graphies des mots dans les variables globales
// * requête pour obtenir le wikicode de l'article
//--------------------------------------------------------------------------------------
function CrFlDa_CreerFlexion1(flx){
 
    CrFlDa_Mot = mw.config.get('wgPageName').replace(/_/g," ");
    CrFlDa_Flex = flx;
 
    // requête pour obtenir le contenu de l'article
    var urlMot =mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(CrFlDa_Mot);
    CommonWikt_ajax.http({ 
        url: urlMot + '&action=raw',
        onSuccess:CrFlDa_CreerFlexion2
    });
}
 
//--------------------------------------------------------------------------------------
// Deuxième étape suite à clic :
// * récupération du wikicode de l'article
// * calcul du wikicode pour la flexion
// * requête pour ouvrir la page de flexion en édition
//--------------------------------------------------------------------------------------
function CrFlDa_CreerFlexion2(Req,data){
    // récupérer le wikicode
    var codewiki=Req.responseText;
    var codesplit = codewiki.split("\n"); // séparation en lignes individuelles
 
    // Générer le code wiki de la nouvelle page en ne conservant que les lignes utiles
    // de l'ancienne (la page principale du mot).
    // Le principe est que l'on doit trouver dans l'ordre :
    // * une section de langue danoise
    // ** une section de type de mot
    // *** éventuellement une boite de flexions
    // *** une ligne de forme
    // ** éventuellement une autre section de type de mot (retour récursif).
    // * Une autre section de langue arrête tout.
    var status = "wait da";
    var flex = false;
    var new_codewiki="";
    var mot_inv = false;
    var nouvelleSyntaxe = false;
    var k;
    var pos;
	var lig_frm_trouvee = false;

    for (k=0; k<codesplit.length; k++){
 
        var sec_qqq = /^==[ ]*\{\{langue/.test(codesplit[k]);
        var sec_da = /^==[ ]*\{\{langue\|da\}\}[ ]*==/.test(codesplit[k]);
        var sec_flex = /\|flexion\}\}/.test(codesplit[k]);
        var sec_adj = /^=== *\{\{S\|(adj|adjectif)\|/.test(codesplit[k]);
        var sec_nom = /^===[ ]*\{\{S\|nom\|/.test(codesplit[k]);
        var flex_box = /^{\{da\-/.test(codesplit[k]);
        var lig_frm = /^'''/.test(codesplit[k]);
 
        if(/*sec_adj || */sec_nom)
        	nouvelleSyntaxe = true;
 
 		if(nouvelleSyntaxe===false) {
        	sec_flex = /^\{\{-flex-/.test(codesplit[k]);
        	sec_nom = /-nom-\|/.test(codesplit[k]);
 		}
 
        switch (status) {
            case "wait da" :
                if (sec_da) {
                    new_codewiki = codesplit[k] + "\n";
                    status="wait sec mot";
                }
                break;
 
            case "wait sec mot" :
                if (sec_qqq) { status="fini"; }
                if (sec_flex) { flex = true; }
                if (sec_nom && !mot_inv) {
                    if (flex)
                        new_codewiki += codesplit[k] + "\n";
                    else
                    	if(nouvelleSyntaxe)
                        	new_codewiki += codesplit[k].replace(/da(\|num=\d)?}}/,"da|flexion$1}}") + "\n";
                        else
                        	new_codewiki += "=== {{S|nom|da|flexion}} ===\n";
                    status = "wait frm nom";
                }
                break;

            case "wait frm nom" :
                if (sec_qqq) { status="fini"; }
                if (flex_box) {
                    new_codewiki += CrFlDa_Infobox(codesplit[k],CrFlDa_Mot) + "\n";
                    infobox_lig = codesplit[k];
                }
                if (lig_frm) {
                	lig_frm_trouvee = true;
                	//on vérifie que le mot sur la ligne de forme est le même que le titre de la page
                    if(codesplit[k].indexOf(CrFlDa_Mot) == -1) {
                        alert("Le mot vedette sur la ligne de forme ne correspond pas au titre de la page.");
                    }
                    
                    //remplacement par la flexion
                    var lfm = codesplit[k].replace(CrFlDa_Mot,CrFlDa_Flex);
                    //détection du modèle c/n, avec paramètres éventuels ignorés (ils seront supprimés)
                    var chc = lfm.match( /\{\{(c|n|n\?)\s*(?:\|[^\}]*)?\}\}/ );
                    //si trouvé, garde le modèle de genre mais sans les paramètres
                    if (chc) {
                        new_codewiki += lfm + "\n";
                    }
                    //si pas de modèle de genre, ajoute le modèle "c'est pas bien"
                    else if ( lfm.indexOf("{{genre") != -1 ) {
                            new_codewiki += lfm + "\n";
                    } else {
                            new_codewiki += lfm + " {{genre ?|da}}\n";
                    }

					var frm_principale = CrFlDa_Mot;
					if (flex) {
                        //on essaie de récupérer la forme principale
                        //depuis l'infobox en cherchant « |1= »
                        var trouve = false;
                        pos = infobox_lig.indexOf("|1=");
                        if( pos>0 ) {
                            frm_principale = infobox_lig.substring(pos+3,infobox_lig.indexOf("}}",pos)); 
                            trouve = true;
                        }
                        flex = false;
                    }
                    
                    //*************************************************************//
                    //on cherche maintenant à traiter les différents cas possibles
                    //*da-nom-c-er
                    //*da-nom-c-n
                    //*da-nom-n-er
                    //*da-nom-n-0
                    //*da-nom
                    //Si aucun de ces cas n'est trouvé alors on utilise un cas général où on laisse l'utilisateur choisir les bons termes.
                    //*************************************************************//
					if( /da-nom-c-er/.test(new_codewiki) )
                        new_codewiki = Flex_c_er(new_codewiki,frm_principale);
                    else if( /da-nom-c-n/.test(new_codewiki) )
                        new_codewiki = Flex_c_n(new_codewiki,frm_principale);
                    else if( /da-nom-n-er/.test(new_codewiki) )
                        new_codewiki = Flex_n_er(new_codewiki,frm_principale);
                    else if( /da-nom-n-0/.test(new_codewiki) )
                        new_codewiki = Flex_n_0(new_codewiki,frm_principale);
                    else if( /da-nom/.test(new_codewiki) )
                        new_codewiki = Flex_nom(new_codewiki,frm_principale);
                    else
                        new_codewiki += Flex_standard(codesplit[k],CrFlDa_Mot);

                    status = "wait sec mot";
                }
                break;
        }
        if (status=="fini") { break; }  //on ne traite que le danois
    }
    if(!lig_frm_trouvee) { 
    	alert("La ligne de forme est probablement mal formée. Vérifiez l'article avant d'utiliser le gadget.");
    	return;
    }
 
    //Par sécurité, inutile si les classes sont correctement déclarées dans les modèles
    //et que la page est correctement fichue.
    if (status=="wait da") { alert("Pas de section « danois »."); }
 
    //générer clé de tri
    //var cle = CommonWikt_CleTri(CrFlDa_Flex);
    //if (cle != CrFlDa_Flex.toLowerCase()){ new_codewiki += "{{clé de tri|" + cle + "}}\n"; }
 
    //ouvrir la nouvelle page en édition
    var urlFlx =mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(CrFlDa_Flex);
    CommonWikt_ajax.http({ 
        url: urlFlx + "&action=edit",
        text: new_codewiki,
        onSuccess:CrFlDa_CreerFlexion3
    });
}
 
//--------------------------------------------------------------------------------------
// Troisième étape suite à clic :
// * charger le code wiki dans la zone d'édition
// * rendre la main à l'utilisateur
//--------------------------------------------------------------------------------------
function CrFlDa_CreerFlexion3(Req,data){
 
    var TexteFinal = data.text;
    while(document.body.firstChild){ document.body.removeChild(document.body.firstChild); }
    document.body.innerHTML = Req.responseText; 
    document.getElementById('wpTextbox1').value = TexteFinal;
    document.getElementById('wpSummary').value = "Création avec [[Aide:Gadget-CreerFlexionDa|Gadget-CreerFlexionDa]]";
}
 
//==========================================================================================
 
//--------------------------------------------------------------------------------------
// Vérifie qu'une des formes mp, fs ou fp a été trouvée. Si ce n'est pas le cas, 
// on affiche une boite de dialogue pour signaler que le modèle de flexion n'est
// probablement pas le bon.
//--------------------------------------------------------------------------------------
function verifFlexBox(indp, defs, defp){
    if(indp==-1 && defs==-1 && defp==-1)
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");
// il faudrait mettre ici qqchose qui stoppe l'exécution du gadget pour qu'on reste sur la page principale plutôt que d'arriver sur une page de flexion mal remplie.
}
//--------------------------------------------------------------------------------------
// Ajouter le paramètre s= ou ms= à l'infobox
//--------------------------------------------------------------------------------------
function CrFlDa_Infobox(lig,mot){
    var p = lig.lastIndexOf("}}");
    if (p==-1) {
        alert("Les infobox avec le code sur plusieurs lignes ne sont pas gérées.");
        return lig;
    }
    if ( (/da-nom-c-er/.test(lig) ||
    	 /da-nom-c-n/.test(lig) ||
    	 /da-nom-n-er/.test(lig) ||
    	 /da-nom-n-0/.test(lig) ||
         /da-rég-x\|/.test(lig) ||
         /da-accord-mf\|/.test(lig)) && 
         lig.indexOf("|1=")==-1) {
        return lig.substring(0,p) + "|1=" + mot + "}}";
    } else if ( (/da-rég/.test(lig)) && lig.indexOf("|s=")==-1) {
        return lig.substring(0,p) + "||s=" + mot + "}}";
    }
    if ( (/da-nom-rég\|/.test(lig) ||
         /da-accord-mixte\|/.test(lig) ||
         /da-accord-s\|/.test(lig) ||
         /da-accord-cons\|/.test(lig) ||
         /da-accord-el\|/.test(lig) ||
         /da-accord-ain\|/.test(lig) ||
         /da-accord-an\|/.test(lig) ||
         /da-accord-en\|/.test(lig) ||
         /da-accord-et\|/.test(lig) ||
         /da-accord-on\|/.test(lig) ||
         /da-accord-in\|/.test(lig) ||
         /da-accord-un\|/.test(lig) ) && 
         (lig.indexOf("|ms=") == -1) ){
        return lig.substring(0,p) + "|ms=" + mot + "}}";
    }
    if ( /da-accord-mixte\|/.test(lig) && (lig.indexOf("|fs=") == -1)){
        return lig.substring(0,p) + "|ms=" + mot + "|fs=" + mot + "e}}";
    }
    return lig; // pour les modèles non gérés
}
 
//--------------------------------------------------------------------------------------
// Définition dans le cas régulier
//--------------------------------------------------------------------------------------
function Flex_standard(codesplit,CrFlDa_Mot){
    var tmp_codewiki="";
    if ((codesplit.indexOf("{{mf}}")>=0) )
        tmp_codewiki += "# ''Pluriel de'' [[";
    else    
        tmp_codewiki += "# ''Masculin/Féminin singulier/pluriel de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    return tmp_codewiki;
}
 
 
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent da-nom
//--------------------------------------------------------------------------------------
function Flex_nom(new_codewiki,CrFlDa_Mot){
	//exemple : {{da-nom|inds=konto|indp=kontoer|defs=kontoen|defp=kontoerne}}
    var tmp_codewiki=new_codewiki;
    // on cherche d'abord à quelle forme on doit s'occuper
    
    //pour cela on extrait les différentes valeurs inds, indp, defs et defp
    var pos1=0, pos2=0, pos_tmp=0;
    pos1    = tmp_codewiki.indexOf("|inds=")+6;
    pos2    = tmp_codewiki.indexOf("|",pos1);
    pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    var inds = tmp_codewiki.substr(pos1,pos2-pos1);
	
    pos1    = tmp_codewiki.indexOf("|indp=")+6;
    pos2    = tmp_codewiki.indexOf("|",pos1);
    pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    var indp = tmp_codewiki.substr(pos1,pos2-pos1);
    
    pos1    = tmp_codewiki.indexOf("|defs=")+6;
    pos2    = tmp_codewiki.indexOf("|",pos1);
    pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    var defs = tmp_codewiki.substr(pos1,pos2-pos1);
    
    pos1    = tmp_codewiki.indexOf("|defp=")+6;
    pos2    = tmp_codewiki.indexOf("|",pos1);
    pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    var defp = tmp_codewiki.substr(pos1,pos2-pos1);

	// on extrait ensuite la forme traitée
	pos1 = tmp_codewiki.indexOf("'''")+3;
	pos2 = tmp_codewiki.indexOf("'''",pos1);
	var frm = new RegExp(tmp_codewiki.substr(pos1,pos2-pos1));
        
	// pour la comparer aux différentes formes présentes dans le modèle
	var pos_inds = -1
    var pos_indp = -1;
    var pos_defs = -1;
    var pos_defp = -1;
    if (frm.test(inds))
    	pos_inds=0;
    else if (frm.test(indp))
    	pos_indp=0;
    else if (frm.test(defs))
    	pos_defs=0;
    else if (frm.test(defp))
    	pos_defp=0;
    else
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");

    if (pos_inds===0)
        tmp_codewiki += "# ''Singulier indéfini de'' [[";
    if (pos_indp===0)
        tmp_codewiki += "# ''Pluriel indéfini de'' [[";
    if (pos_defs===0)
        tmp_codewiki += "# ''Singulier défini de'' [[";
    if (pos_defp===0)
        tmp_codewiki += "# ''Pluriel défini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    
    // on supprime l'éventuelle prononciation
    pos1 = tmp_codewiki.indexOf("{{pron|");
    if(pos1!=-1) {
    	pos1    = pos1 + 7;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	var avant = tmp_codewiki.substr(0,pos1);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + apres;
    } else {
    	//s'il n'y a pas {{pron||da}}, on le rajoute
    	pos1 = tmp_codewiki.indexOf("'''")+3;
    	pos2 = tmp_codewiki.indexOf("'''",pos1)+3;
    	var avant = tmp_codewiki.substr(0,pos2);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + " {{pron||da}}" + apres;
    }
    
    return tmp_codewiki;
}

//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent da-nom-c-er
//--------------------------------------------------------------------------------------
function Flex_c_er(new_codewiki,CrFlDa_Mot){
    var tmp_codewiki=new_codewiki;

    var pos1=0, pos2=0, pos_tmp=0;
    var inds="", indp="", defs="", defp="";
    var inds2="", indp2="", defs2="", defp2="";

	// on extrait d'abord la forme traitée
	pos1 = tmp_codewiki.indexOf("'''")+3;
	pos2 = tmp_codewiki.indexOf("'''",pos1);
	var frm = new RegExp(tmp_codewiki.substr(pos1,pos2-pos1));
	//alert("frm = " + frm);
    
    // on cherche ensuite d quelle forme on doit s'occuper
    
    //pour cela on extrait les différentes valeurs inds (1), indp (3), defs (2) et defp (4)    
    pos1    = tmp_codewiki.indexOf("|1=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds = " + inds + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|1\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds2 = " + inds2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
	
    pos1    = tmp_codewiki.indexOf("|3=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp = " + indp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);	
    pos1    = tmp_codewiki.indexOf("|3\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp2 = " + indp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|2=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs = " + defs + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|2\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs2 = " + defs2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|4=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp = " + defp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|4\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp2 = " + defp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);


	//rac
	var rac = "";
    pos1    = tmp_codewiki.indexOf("|rac=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac=")!=-1) pos1 = pos1 + 5;
		else                                  pos1 = pos1 + 8;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
 		rac = tmp_codewiki.substr(pos1,pos2-pos1);
    }
 	//alert("Apres rac, rac = " + rac);
 
	
	//rac-pl
    pos1    = tmp_codewiki.indexOf("|rac-pl=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine-pl=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac-pl=")!=-1) pos1 = pos1 + 8;
    	else                                     pos1 = pos1 + 11;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
       	if(indp==="") indp = tmp_codewiki.substr(pos1,pos2-pos1)+"er";
    	if(defp==="") defp = tmp_codewiki.substr(pos1,pos2-pos1)+"erne";
    }
 	//alert("Apres rac-pl, indp = " + indp + ", defp=" + defp);
    
    
	// sans paramètre
    if(rac!="")  {
    	if(indp==="") indp = rac + "er";
    	if(defs==="") defs = rac + "en";
    	if(defp==="") defp = rac + "erne";
    } else if(inds!="") {
    	if(indp==="") indp = inds + "er";
    	if(defs==="") defs = inds + "en";
    	if(defp==="") defp = inds + "erne";
    } else {
    	inds = CrFlDa_Mot;
    	if(indp==="") indp = CrFlDa_Mot + "er";
    	if(defs==="") defs = CrFlDa_Mot + "en";
    	if(defp==="") defp = CrFlDa_Mot + "erne";
    }
        
	// pour la comparer aux différentes formes présentes dans le modèle
	var pos_inds = -1
    var pos_indp = -1;
    var pos_defs = -1;
    var pos_defp = -1;
    if (frm.test(inds) || frm.test(inds2))
    	pos_inds=0;
    else if (frm.test(indp) || frm.test(indp2))
    	pos_indp=0;
    else if (frm.test(defs) || frm.test(defs2))
    	pos_defs=0;
    else if (frm.test(defp) || frm.test(defp2))
    	pos_defp=0;
    else
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");

    if (pos_inds===0)
        tmp_codewiki += "# ''Singulier indéfini de'' [[";
    if (pos_indp===0)
        tmp_codewiki += "# ''Pluriel indéfini de'' [[";
    if (pos_defs===0)
        tmp_codewiki += "# ''Singulier défini de'' [[";
    if (pos_defp===0)
        tmp_codewiki += "# ''Pluriel défini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    
    // on supprime l'éventuelle prononciation
    pos1 = tmp_codewiki.indexOf("{{pron|");
    if(pos1!=-1) {
    	pos1    = pos1 + 7;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	var avant = tmp_codewiki.substr(0,pos1);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + apres;
    } else {
    	//s'il n'y a pas {{pron||da}}, on le rajoute
    	pos1 = tmp_codewiki.indexOf("'''")+3;
    	pos2 = tmp_codewiki.indexOf("'''",pos1)+3;
    	var avant = tmp_codewiki.substr(0,pos2);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + " {{pron||da}}" + apres;
    }
	return tmp_codewiki;
}

//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent da-nom-c-n
//--------------------------------------------------------------------------------------
function Flex_c_n(new_codewiki,CrFlDa_Mot){
    var tmp_codewiki=new_codewiki;
	
    var pos1=0, pos2=0, pos_tmp=0;
    var inds="", indp="", defs="", defp="";
    var inds2="", indp2="", defs2="", defp2="";
    
	// on extrait d'abord la forme traitée
	pos1 = tmp_codewiki.indexOf("'''")+3;
	pos2 = tmp_codewiki.indexOf("'''",pos1);
	var frm = new RegExp(tmp_codewiki.substr(pos1,pos2-pos1));
	//alert("frm = " + frm);
    
    // on cherche ensuite de quelle forme on doit s'occuper
    
    //pour cela on extrait les différentes valeurs inds (1), indp (3), defs (2) et defp (4)
    pos1    = tmp_codewiki.indexOf("|1=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds = " + inds + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|1\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds2 = " + inds2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
	
    pos1    = tmp_codewiki.indexOf("|3=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp = " + indp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);	
    pos1    = tmp_codewiki.indexOf("|3\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp2 = " + indp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|2=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs = " + defs + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|2\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs2 = " + defs2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|4=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp = " + defp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|4\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp2 = " + defp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);


	//rac
	var rac = "";
    pos1    = tmp_codewiki.indexOf("|rac=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac=")!=-1) pos1 = pos1 + 5;
		else                                  pos1 = pos1 + 8;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
 		rac = tmp_codewiki.substr(pos1,pos2-pos1);
    }
 	//alert("Apres rac, rac = " + rac);
 
	
	//rac-pl
    pos1    = tmp_codewiki.indexOf("|rac-pl=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine-pl=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac-pl=")!=-1) pos1 = pos1 + 8;
    	else                                     pos1 = pos1 + 11;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
       	if(indp==="") indp = tmp_codewiki.substr(pos1,pos2-pos1)+"e";
    	if(defp==="") defp = tmp_codewiki.substr(pos1,pos2-pos1)+"ene";
    }
 	//alert("Apres rac-pl, indp = " + indp + ", defp=" + defp);
    
    
	// sans paramètre
    if(rac!="")  {
    	if(indp==="") indp = rac + "e";
    	if(defs==="") defs = rac + "en";
    	if(defp==="") defp = rac + "ene";
    } else if(inds!="") {
    	if(indp==="") indp = inds + "e";
    	if(defs==="") defs = inds + "en";
    	if(defp==="") defp = inds + "ene";
    } else {
    	inds = CrFlDa_Mot;
    	if(indp==="") indp = CrFlDa_Mot + "e";
    	if(defs==="") defs = CrFlDa_Mot + "en";
    	if(defp==="") defp = CrFlDa_Mot + "ene";
    }
        
	// pour la comparer aux différentes formes présentes dans le modèle
	var pos_inds = -1
    var pos_indp = -1;
    var pos_defs = -1;
    var pos_defp = -1;
    if (frm.test(inds) || frm.test(inds2))
    	pos_inds=0;
    else if (frm.test(indp) || frm.test(indp2))
    	pos_indp=0;
    else if (frm.test(defs) || frm.test(defs2))
    	pos_defs=0;
    else if (frm.test(defp) || frm.test(defp2))
    	pos_defp=0;
    else
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");

    if (pos_inds===0)
        tmp_codewiki += "# ''Singulier indéfini de'' [[";
    if (pos_indp===0)
        tmp_codewiki += "# ''Pluriel indéfini de'' [[";
    if (pos_defs===0)
        tmp_codewiki += "# ''Singulier défini de'' [[";
    if (pos_defp===0)
        tmp_codewiki += "# ''Pluriel défini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    
    // on supprime l'éventuelle prononciation
    pos1 = tmp_codewiki.indexOf("{{pron|");
    if(pos1!=-1) {
    	pos1    = pos1 + 7;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	var avant = tmp_codewiki.substr(0,pos1);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + apres;
    } else {
    	//s'il n'y a pas {{pron||da}}, on le rajoute
    	pos1 = tmp_codewiki.indexOf("'''")+3;
    	pos2 = tmp_codewiki.indexOf("'''",pos1)+3;
    	var avant = tmp_codewiki.substr(0,pos2);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + " {{pron||da}}" + apres;
    }
	return tmp_codewiki;
}

//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent da-nom-n-er
//--------------------------------------------------------------------------------------
function Flex_n_er(new_codewiki,CrFlDa_Mot){
    var tmp_codewiki=new_codewiki;
	
    var pos1=0, pos2=0, pos_tmp=0;
    var inds="", indp="", defs="", defp="";
    var inds2="", indp2="", defs2="", defp2="";
    
	// on extrait d'abord la forme traitée
	pos1 = tmp_codewiki.indexOf("'''")+3;
	pos2 = tmp_codewiki.indexOf("'''",pos1);
	var frm = new RegExp(tmp_codewiki.substr(pos1,pos2-pos1));
	//alert("frm = " + frm);
    
    // on cherche ensuite de quelle forme on doit s'occuper
    
    //pour cela on extrait les différentes valeurs inds (1), indp (3), defs (2) et defp (4)
    pos1    = tmp_codewiki.indexOf("|1=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds = " + inds + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|1\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds2 = " + inds2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
	
    pos1    = tmp_codewiki.indexOf("|3=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp = " + indp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);	
    pos1    = tmp_codewiki.indexOf("|3\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp2 = " + indp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|2=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs = " + defs + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|2\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs2 = " + defs2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    
    pos1    = tmp_codewiki.indexOf("|4=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp = " + defp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);    
    pos1    = tmp_codewiki.indexOf("|4\'=");
    if(pos1!=-1) {
    	pos1    = pos1+4;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp2 = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp2 = " + defp2 + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);


	//rac
	var rac = "";
    pos1    = tmp_codewiki.indexOf("|rac=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac=")!=-1) pos1 = pos1 + 5;
		else                                  pos1 = pos1 + 8;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
 		rac = tmp_codewiki.substr(pos1,pos2-pos1);
    }
 	//alert("Apres rac, rac = " + rac);
 
	
	//rac-pl
    pos1    = tmp_codewiki.indexOf("|rac-pl=");
    if(pos1==-1) pos1 = tmp_codewiki.indexOf("|racine-pl=");
    if(pos1!=-1) {
    	if(tmp_codewiki.indexOf("|rac-pl=")!=-1) pos1 = pos1 + 8;
    	else                                     pos1 = pos1 + 11;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
       	if(indp==="") indp = tmp_codewiki.substr(pos1,pos2-pos1)+"er";
    	if(defp==="") defp = tmp_codewiki.substr(pos1,pos2-pos1)+"erne";
    }
 	//alert("Apres rac-pl, indp = " + indp + ", defp=" + defp);
    
    
	// sans paramètre
    if(rac!="")  {
    	if(indp==="") indp = rac + "er";
    	if(defs==="") defs = rac + "et";
    	if(defp==="") defp = rac + "erne";
    } else if(inds!="") {
    	if(indp==="") indp = inds + "er";
    	if(defs==="") defs = inds + "et";
    	if(defp==="") defp = inds + "erne";
    } else {
    	inds = CrFlDa_Mot;
    	if(indp==="") indp = CrFlDa_Mot + "er";
    	if(defs==="") defs = CrFlDa_Mot + "et";
    	if(defp==="") defp = CrFlDa_Mot + "erne";
    }
        
	// pour la comparer aux différentes formes présentes dans le modèle
	var pos_inds = -1
    var pos_indp = -1;
    var pos_defs = -1;
    var pos_defp = -1;
    if (frm.test(inds) || frm.test(inds2))
    	pos_inds=0;
    else if (frm.test(indp) || frm.test(indp2))
    	pos_indp=0;
    else if (frm.test(defs) || frm.test(defs2))
    	pos_defs=0;
    else if (frm.test(defp) || frm.test(defp2))
    	pos_defp=0;
    else
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");

    if (pos_inds===0)
        tmp_codewiki += "# ''Singulier indéfini de'' [[";
    if (pos_indp===0)
        tmp_codewiki += "# ''Pluriel indéfini de'' [[";
    if (pos_defs===0)
        tmp_codewiki += "# ''Singulier défini de'' [[";
    if (pos_defp===0)
        tmp_codewiki += "# ''Pluriel défini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    
    // on supprime l'éventuelle prononciation
    pos1 = tmp_codewiki.indexOf("{{pron|");
    if(pos1!=-1) {
    	pos1    = pos1 + 7;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	var avant = tmp_codewiki.substr(0,pos1);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + apres;
    } else {
    	//s'il n'y a pas {{pron||da}}, on le rajoute
    	pos1 = tmp_codewiki.indexOf("'''")+3;
    	pos2 = tmp_codewiki.indexOf("'''",pos1)+3;
    	var avant = tmp_codewiki.substr(0,pos2);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + " {{pron||da}}" + apres;
    }
	return tmp_codewiki;
}
 
 
//--------------------------------------------------------------------------------------
// Définition dans le cas des mots qui utilisent da-nom-n-0
//--------------------------------------------------------------------------------------
function Flex_n_0(new_codewiki,CrFlDa_Mot){
	var tmp_codewiki=new_codewiki;
	
    var pos1=0, pos2=0, pos_tmp=0;
    var inds="", indp="", defs="", defp="";
    
	// on extrait d'abord la forme traitée
	pos1 = tmp_codewiki.indexOf("'''")+3;
	pos2 = tmp_codewiki.indexOf("'''",pos1);
	var frm = new RegExp(tmp_codewiki.substr(pos1,pos2-pos1));
	//alert("frm = " + frm);
    
    // on cherche ensuite d quelle forme on doit s'occuper
    
    //pour cela on extrait les différentes valeurs inds (1), indp (3), defs (2) et defp (4)
    pos1    = tmp_codewiki.indexOf("|1=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2==-1) pos2 = pos_tmp;
    	inds = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("inds = " + inds + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
	
    pos1    = tmp_codewiki.indexOf("|3=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	indp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("indp = " + indp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    pos1    = tmp_codewiki.indexOf("|2=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defs = tmp_codewiki.substr(pos1,pos2-pos1);
    }
    //alert("defs = " + defs + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);
    
    pos1    = tmp_codewiki.indexOf("|4=");
    if(pos1!=-1) {
    	pos1    = pos1+3;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	defp = tmp_codewiki.substr(pos1,pos2-pos1);
    }
	//alert("defp = " + defp + ", pos1=" + pos1 + ", pos2=" + pos2 + "\n" + tmp_codewiki);

	//rac
	var rac = "";
    pos1    = tmp_codewiki.indexOf("|rac=");
    if(pos1!=-1) {
    	pos1    = pos1 + 5;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
 		rac = tmp_codewiki.substr(pos1,pos2-pos1);
    }
 	//alert("Apres rac, rac = " + rac);
 
	//rac-pl
    pos1    = tmp_codewiki.indexOf("|rac-pl=");
    if(pos1!=-1) {
    	pos1    = pos1 + 8;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
       	if(indp==="") indp = tmp_codewiki.substr(pos1,pos2-pos1);
    	if(defp==="") defp = tmp_codewiki.substr(pos1,pos2-pos1)+"ene";
    }
 	//alert("Apres rac-pl, indp = " + indp + ", defp=" + defp);
    
	// sans paramètre
    if(rac!="")  {
    	if(defs==="") defs = rac + "et";
    	if(defp==="") defp = rac + "ene";
    } else if(inds!="") {
    	if(defs==="") defs = inds + "et";
    	if(defp==="") defp = inds + "ene";
    } else {
    	inds = CrFlDa_Mot;
    	if(indp==="") indp = CrFlDa_Mot;
    	if(defs==="") defs = CrFlDa_Mot + "et";
    	if(defp==="") defp = CrFlDa_Mot + "ene";
    }
        
	// pour la comparer aux différentes formes présentes dans le modèle
	var pos_inds = -1
    var pos_indp = -1;
    var pos_defs = -1;
    var pos_defp = -1;
    if (frm.test(inds))
    	pos_inds=0;
    else if (frm.test(indp))
    	pos_indp=0;
    else if (frm.test(defs))
    	pos_defs=0;
    else if (frm.test(defp))
    	pos_defp=0;
    else
        alert("Le modèle de flexion ne semble pas correct. Vérifiez le et modifiez le si besoin avant de créer les flexions.");

    if (pos_inds===0)
        tmp_codewiki += "# ''Singulier indéfini de'' [[";
    if (pos_indp===0)
        tmp_codewiki += "# ''Pluriel indéfini de'' [[";
    if (pos_defs===0)
        tmp_codewiki += "# ''Singulier défini de'' [[";
    if (pos_defp===0)
        tmp_codewiki += "# ''Pluriel défini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    
    // on supprime l'éventuelle prononciation
    pos1 = tmp_codewiki.indexOf("{{pron|");
    if(pos1!=-1) {
    	pos1    = pos1 + 7;
    	pos2    = tmp_codewiki.indexOf("|",pos1);
    	pos_tmp = tmp_codewiki.indexOf("}}",pos1);
    	if (pos2>pos_tmp || pos2===-1) pos2 = pos_tmp;
    	var avant = tmp_codewiki.substr(0,pos1);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + apres;
    } else {
    	//s'il n'y a pas {{pron||da}}, on le rajoute
    	pos1 = tmp_codewiki.indexOf("'''")+3;
    	pos2 = tmp_codewiki.indexOf("'''",pos1)+3;
    	var avant = tmp_codewiki.substr(0,pos2);
    	var apres = tmp_codewiki.substr(pos2);
    	tmp_codewiki = avant + " {{pron||da}}" + apres;
    }
    return tmp_codewiki;
}
 
//--------------------------------------------------------------------------------------
// Définition dans le cas régulier
//--------------------------------------------------------------------------------------
function Flex_standard(codesplit,CrFlDa_Mot){
    var tmp_codewiki="";
    tmp_codewiki += "# ''Singulier/Pluriel défini/indéfini de'' [[";
    tmp_codewiki += CrFlDa_Mot + "#da|" + CrFlDa_Mot + "]].\n\n";
    return tmp_codewiki;
}