//Fonction de calcul de résistance à la magie
//mm entier >=1
//sr entier [5;95]
function CalculRM(mm,sr) {
    if (mm<=0) mm=1;
    if (sr>95) sr=95;
    if (sr<5) sr=5;

    if (sr==5)
    {
	    var rm= (sr*mm)/50;
	    rm = parseInt(rm, 10);
    	
	    //boucle de calcul de la valeur supérieure limite
	    var tmp=rm+1;
	    var res= parseInt(50*tmp/mm,10);
	    while (res==5)
	    {
		    rm=tmp;
		    tmp=rm+1;
		    res= parseInt(50*tmp/mm,10);
	    }
	     return "<=" + rm;
    }

    if (sr==95)
    {
	    var rm= (50*mm)/(100-sr);
	    rm = parseInt(rm, 10);

	    //pas de boucle de calcul car la valeur est déjà la limite supérieure et tombe toujours juste (i.e rm=mm*10)
	    return ">=" + rm;
    }
        
    if (sr>=50)
    {
	    var rm= (50*mm)/(100-sr);
	    rm = parseInt(rm, 10);
        
        //Vérifie de la valeur trouvée convient, problème d'arrondi
	    var res= parseInt(100-50*mm/rm,10);
        if (res!=sr)
        {
            rm=rm+1;
        }

	    //boucle de calcul de la valeur supérieure limite
	    var tmp=rm+1;
	    res= parseInt(100-50*mm/tmp,10);
	    while (res==sr)
	    {
		    tmp=tmp+1;
		    res= parseInt(100-50*mm/tmp,10);
	    }
	    tmp=tmp-1;
	    return rm + "<=RM<=" + tmp;
    }
    if (sr<50)
    {
	    var rm= (sr*mm)/50;
	    rm = parseInt(rm, 10);
    	
        //Vérifie de la valeur trouvée convient, problème d'arrondi
	    var res= parseInt(50*rm/mm,10);
        if (res!=sr)
        {
            rm=rm+1;
        }
    	
	    //boucle de calcul de la valeur supérieure limite
	    var tmp=rm+1;
	    res= parseInt(50*tmp/mm,10);
	    while (res==sr)
	    {
		    tmp=tmp+1;
		    res= parseInt(50*tmp/mm,10);
	    }
	    tmp=tmp-1;
	    return rm + "<=RM<=" + tmp;
    }
}
//Fonction de calcul de maîtrise de la magie
//rm entier >=1
//sr entier [5;95]
function CalculMM(rm,sr) {
    if (rm<=0) rm=1;
    if (sr>95) sr=95;
    if (sr<5) sr=5;
       
    if (sr==5)
    {
	    var mm= 50*rm/sr;
	    mm = parseInt(mm, 10);
    	
	    //boucle de calcul de la valeur inférieure limite
	    var tmp=mm-1;
	    var res= parseInt(50*rm/tmp,10);
	    while (res==5)
	    {
		    mm=tmp;
		    tmp=mm-1;
		    res= parseInt(50*rm/tmp,10);
	    }
    	
	    return ">=" + mm;
    }

    if (sr==95)
    {
	    var mm= rm*(100-sr)/50;
	    mm = parseInt(mm, 10);

	    //pas de boucle de calcul car la valeur est déjà la limite inférieure 
    	
        return "<=" + mm;
    }
        
    if (sr>=50)
    {
	    var mm= rm*(100-sr)/50;
	    mm = parseInt(mm, 10);
        
	    //boucle de calcul de la valeur inférieure limite
	    var tmp=mm-1;
	    var res= parseInt(100-50*tmp/rm,10);
	    while (res==sr)
	    {
		    tmp=tmp-1;
		    res= parseInt(100-50*tmp/rm,10);
	    }
	    tmp=tmp+1;
	    return tmp + "<=MM<=" + mm;
    }
  
    if (sr<50)
    {
	    var mm= 50*rm/sr;
	    mm = parseInt(mm, 10);

	    //boucle de calcul de la valeur inférieure limite
	    var tmp=mm-1;
	    var res= parseInt(50*rm/tmp,10);
	    while (res==sr)
	    {
		    tmp=tmp-1;
		    res= parseInt(50*rm/tmp,10);
	    }
	    tmp=tmp+1;
	    return tmp + "<=MM<=" + mm;
    }    
}

//Fonction de calcul de seuil de résistance à la magie
//mm entier >=1
//rm entier >=1
function CalculSR(mm,rm) {
    if (mm<=0) mm=1;
    if (rm<=0) rm=1;

    var sr=0;
    
    if (rm>=mm)
    {
        sr=parseInt(100-50*mm/rm, 10);
    }
    else
    {
        sr=parseInt(50*rm/mm, 10);
    }
    
    if (sr<5) sr=5;
    if (sr>95) sr=95;
    
    return sr;
}

//Fonction de calcul du nombre de points d'expérience d'un kill
//niv entier >=1
//nivmons entier >=1
//delta entier 0 ou 1
function CalculPX(niv,nivmons,delta){
    if (niv<=0) niv=1;
    if (nivmons<=0) nivmons=1;
    if (delta<0) delta=0;
    if (delta>1) delta=1;
    
    var px= 11 + delta + 2*(nivmons-niv) + nivmons;
    if (px<0) px=0;
    return px;
}

//Fonction de calcul du niveau d'un monstre en fonction des points d'expérience du kill
//niv entier >=1
//px entier positif
//delta entier 0 ou 1
function CalculNiv(niv,px,delta){
    if (niv<=0) niv=1;
    if (px<0) px=0;
    if (delta<0) delta=0;
    if (delta>1) delta=1;

    var nivmons=(px + 2*niv -delta - 11)/3;
    if (px==0)
    {
        return "<=" + Math.floor(nivmons);
    }
    else
    {
        return nivmons;
    }
}
