// JavaScript Document
//PLacement spécial pour kératocônes

function limiter(nombre) {

	return ((Math.round(nombre*100))/100);
	
}

function arr_dio(nombre) {

var coeff=1;

if (nombre<0) {
	coeff=-1;	
}

nombre=Math.abs(nombre);

var partie_ent = Math.floor(nombre);
var dec = Math.floor(1000*(nombre-partie_ent));
var dec_arron = "00";


	if(dec<125) {
		dec_arron="00";
	}
	else if ((dec>=125)&&(dec<375)) {
		dec_arron="25";
	}
	else if ((dec>=375)&&(dec<625)) {
		dec_arron="50";
	}

	else if ((dec>=625)&&(dec<875)) {
		dec_arron="75";
	}
	
	else {
		partie_ent=parseInt(partie_ent)+1;
		dec_arron="00";
	}
		
			
	if ((partie_ent==0)&&(coeff==-1)) {
		return "-0."+dec_arron;
	} else {
		partie_ent=coeff*parseInt(partie_ent);
		if (coeff==1) {
			return "+"+partie_ent+"."+dec_arron;
		} else {
			return partie_ent+"."+dec_arron;
		}
				
	}
		
}

function arr_axe(nombre) {
partie_ent=Math.floor(nombre);

if (parseInt(partie_ent)>180) {
partie_ent=parseInt(partie_ent)-180;
}

return partie_ent;

}

function calculer(form1) {

var Ic=1.3771;

var sphereod= document.forms[0].elements["rxlusphd"].value;
var cylindreod= document.forms[0].elements["rxlucyld"].value;
var axeod= document.forms[0].elements["rxluaxed"].value;

var sphereog= document.forms[0].elements["rxlusphg"].value;
var cylindreog= document.forms[0].elements["rxlucylg"].value;
var axeog= document.forms[0].elements["rxluaxeg"].value;

var vo=document.forms[0].elements["distance_vo"].value;

//REFRACTION AU SOMMET DE LA CORNEE
	//OD
	var sph_tmp = 1000 / ((1000 / (sphereod)) - (vo));
	
	var cyl_tmp=  (1000 / ((1000 / (parseFloat(sphereod) + parseFloat(cylindreod))) - vo)) - sph_tmp;
 
 if  (cylindreod>0) {
	document.forms[0].elements["rxlcsphd"].value=limiter(parseFloat(sph_tmp)+parseFloat(cyl_tmp));
	document.forms[0].elements["rxlccyld"].value=-1 * (limiter(cyl_tmp));
	document.forms[0].elements["rxlcaxed"].value=parseFloat(axeod)+90;
 } else {
	document.forms[0].elements["rxlcsphd"].value=limiter(sph_tmp) ;
	document.forms[0].elements["rxlccyld"].value=limiter(cyl_tmp);
	document.forms[0].elements["rxlcaxed"].value=axeod;
}

	//OG
	sph_tmp = 1000 / ((1000 / (sphereog)) - (vo));
	
	cyl_tmp=  (1000 / ((1000 / (parseFloat(sphereog) + parseFloat(cylindreog))) - vo)) - sph_tmp;
 
 if  (cylindreog>0) {
	document.forms[0].elements["rxlcsphg"].value=limiter(parseFloat(sph_tmp)+parseFloat(cyl_tmp));
	document.forms[0].elements["rxlccylg"].value=-1 * (limiter(cyl_tmp));
	document.forms[0].elements["rxlcaxeg"].value=parseFloat(axeog)+90;
 } else {
	document.forms[0].elements["rxlcsphg"].value=limiter(sph_tmp) ;
	document.forms[0].elements["rxlccylg"].value=limiter(cyl_tmp);
	document.forms[0].elements["rxlcaxeg"].value=axeog;
}
	
	
//ASTIGMATISMES CORNEEN ET INTERNE
	//OD
		//CORNEEN
	var K1=document.forms[0].elements["kr1d"].value;
	var K2=document.forms[0].elements["kr2d"].value;
	var Kx=document.forms[0].elements["kr1xd"].value;
	
	if (K1>K2) {
		document.forms[0].elements["accyd"].value=limiter(((Ic-1)*1000/K1)-((Ic-1)*1000/K2));
		document.forms[0].elements["acaxd"].value=Kx;
	} else {
		document.forms[0].elements["accyd"].value=limiter(((Ic-1)*1000/K2)-((Ic-1)*1000/K1));
		if(document.forms[0].elements["accyd"].value==0) document.forms[0].elements["accyd"].value="-0.01";
		document.forms[0].elements["acaxd"].value=arr_axe(parseFloat(Kx)+90);
	}
	
		//INTERNE
	var aid1=int_cylindre(document.forms[0].elements["rxlccyld"].value,document.forms[0].elements["rxlcaxed"].value,document.forms[0].elements["accyd"].value,document.forms[0].elements["acaxd"].value);
	var cid1=int_axe(document.forms[0].elements["rxlccyld"].value,document.forms[0].elements["rxlcaxed"].value,document.forms[0].elements["accyd"].value,document.forms[0].elements["acaxd"].value);
	
	if (aid1>0) {
		document.forms[0].elements["aicyd"].value=-1*(limiter(aid1));
		document.forms[0].elements["aiaxd"].value=arr_axe(parseInt(cid1)+90);
	} else {
		document.forms[0].elements["aicyd"].value=limiter(aid1);
		document.forms[0].elements["aiaxd"].value=arr_axe(Math.abs(cid1));
	}
	
		//RESIDUEL AVEC LRPO SPHERIQUE
		residuel(K1, K2,Kx,document.forms[0].elements["rxlccyld"].value,document.forms[0].elements["rxlcaxed"].value,"d")
		suggestion_lrpo(K1,K2,Kx,"d");
		suggestion_lsh(K1,K2,Kx,"d");
		suggestion_kera(K1,K2,"d");
	
	//OG
		//CORNEEN
	 K1=document.forms[0].elements["kr1g"].value;
	 K2=document.forms[0].elements["kr2g"].value;
	 Kx=document.forms[0].elements["kr1xg"].value;
	
	if (K1>K2) {
		document.forms[0].elements["accyg"].value=limiter(((Ic-1)*1000/K1)-((Ic-1)*1000/K2));
		document.forms[0].elements["acaxg"].value=Kx;
	} else {
		document.forms[0].elements["accyg"].value=limiter(((Ic-1)*1000/K2)-((Ic-1)*1000/K1));
		if (document.forms[0].elements["accyg"].value==0) document.forms[0].elements["accyg"].value="-0.01";
		document.forms[0].elements["acaxg"].value=arr_axe(parseFloat(Kx)+90);
	}
	
		//INTERNE
	aid1=int_cylindre(document.forms[0].elements["rxlccylg"].value,document.forms[0].elements["rxlcaxeg"].value,document.forms[0].elements["accyg"].value,document.forms[0].elements["acaxg"].value);
	cid1=int_axe(document.forms[0].elements["rxlccylg"].value,document.forms[0].elements["rxlcaxeg"].value,document.forms[0].elements["accyg"].value,document.forms[0].elements["acaxg"].value);
	
	if (aid1>0) {
		document.forms[0].elements["aicyg"].value=-1*(limiter(aid1));
		document.forms[0].elements["aiaxg"].value=arr_axe(parseInt(cid1)+90);
	} else {
		document.forms[0].elements["aicyg"].value=limiter(aid1);
		document.forms[0].elements["aiaxg"].value=Math.abs(arr_axe(cid1));
	}
	
		//RESIDUEL AVEC LRPO SPHERIQUE
		residuel(K1, K2,Kx,document.forms[0].elements["rxlccylg"].value,document.forms[0].elements["rxlcaxeg"].value,"g")
		suggestion_lrpo(K1,K2,Kx,"g");
		suggestion_lsh(K1,K2,Kx,"g");
		suggestion_kera(K1,K2,"g");
}

function suggestion_lrpo(K1,K2,Kx,cote) {
	
				K1=limiter(K1);
				K2=limiter(K2);
				
				var Ar=Math.abs(document.forms[0].elements["arcyl" +cote].value); //Astigmatisme résiduel
				var Ai=document.forms[0].elements["aicy" +cote].value; //Astigmatisme interne
				var Ad="1" //Astigmatisme direct par défaut
				var Tr=Math.abs(K1-K2); //Toricité cornéenne
				
				//Excentricité
				var Ex=document.forms[0].elements["krex" +cote].value; 
				var Exs=0;
				if ((Ex<0.45)||(Ex>0.550))  {
					Exs=parseInt((parseFloat(Ex)+0.1)*10,10)/10;
				}
				var nom_lentille="";
	
				var K=0; //Rayon lentille le + plat
				var Kp=0; //K'
				var Ro=0; //Ro
				var Rpo=0; //R'o	
				
				var sph=document.forms[0].elements["rxlcsph"+cote].value ;
				var cyl=document.forms[0].elements["rxlccyl"+cote].value;
				var axe=document.forms[0].elements["rxlcaxe"+cote].value;
				
				var puissance=" ";
				var remarques=" ";
				
	if ((Kx>35) && (Kx<140)) {
		Ad="0"; //Astigmatisme indirect
	} 
	
	if (K1>K2) {
		K=K1;
	} else {
		K=K2;
	}

//Début des choix par critères
//Astig résiduel <0.55
//



//} else {
		//Lentille rigide torique
		if ((Tr<=0.50) && (Ad==1)) {
			
			
				if ((Ar<0.55)||(isNaN(Ar) == true)) {
									if ((Ex>0.449) && (Ex<0.551)) {
										document.forms[0].elements["lr_ro"+cote].value="Ro="+K;
				
									} else {
										document.forms[0].elements["lr_ro"+cote].value="Ro="+K + " Ex=" + Exs;
									}
									
				
				} else {
				
				document.forms[0].elements["lr_ro"+cote].value="Ro="+K;
				remarques="Au regard de l'astigmatisme résiduel vous allez probablement devoir utiliser une lentille rigide torique externe.";
				remarques= remarques + " \n La lentille de 1ère intention est sphérique pour évaluer précisément la valeur de cet astigmatisme résiduel.";
				
				}
			
				afficher_groupe("ls"+cote,"lt"+cote);
				changediametre('z',cote);
				puissance=arr_dio(sph);
							
		
		} else if ((Tr>0.50) && (Ad==1)) {
			
				afficher_groupe("lt"+cote,"ls"+cote);
				changediametre('a',cote);
			
				puissance=arr_dio(sph);
				
				document.forms[0].elements["lr_ro"+cote].value="Ro="+K1 + " R'o=" + limiter((parseFloat(K2)+0.2));
				
				remarques="Au regard de l'astigmatisme résiduel vous allez probablement devoir utiliser une lentille bitorique.";
				remarques= remarques + "\n La lentille de 1ère intention est torique interne pour évaluer précisément la valeur de cet astigmatisme résiduel.";
		
		} else if ((Tr<=0.20) && (Ad==0)) {
			
				afficher_groupe("ls"+cote,"lt"+cote);
				changediametre('z',cote);
			
				puissance=arr_dio(sph);
			
				document.forms[0].elements["lr_ro"+cote].value="Ro="+K;
				
				remarques="Au regard de l'astigmatisme résiduel vous allez probablement utiliser une lentille rigide torique externe";
				remarques= remarques + "\n La lentille de 1ère intention est sphérique pour évaluer précisément la valeur de cet astigmatisme résiduel.";

		} else if ((Tr>0.20) && (Tr<=0.50) && (Ad==0)) {
			
				afficher_groupe("lt"+cote,"ls"+cote);
				changediametre('a',cote);
			
				document.forms[0].elements["lr_ro"+cote].value="Ro=" + limiter((parseFloat(K1)+0.1)) + " R'o=" + limiter((parseFloat(K2)+0.1));
				remarques="Au regard de l'astigmatisme résiduel vous allez probablement devoir utiliser une lentille bitorique.";
				remarques= remarques + "\n La lentille de 1ère intention est torique interne pour évaluer précisément la valeur de cet astigmatisme résiduel.";
				
				puissance=arr_dio(parseFloat(sph)+(-0.50));
	
		} else {
			//tore externe
				afficher_groupe("lt"+cote,"ls"+cote);
				changediametre('a',cote);
			
				document.forms[0].elements["lr_ro"+cote].value="Ro=" + K1 + " R'o=" + limiter((parseFloat(K2)+0.1));
				remarques="Au regard de l'astigmatisme résiduel vous allez probablement devoir une lentille bitorique.";
				remarques= remarques + "\n La lentille de 1ère intention est torique interne pour évaluer précisément la valeur de cet astigmatisme résiduel.";
				
				puissance=arr_dio(sph);
				
		}
//}
	
	document.forms[0].elements["txt_rq"+cote].value=remarques;
	document.forms[0].elements["lrpui"+cote].value=puissance;
}

function suggestion_lsh(K1,K2,Kx,cote) {
				
				
				var K=0;
				var Km=limiter((parseFloat(K1)+parseFloat(K2))/2);				
				var sph=document.forms[0].elements["rxlcsph"+cote].value ;
				var cyl=document.forms[0].elements["rxlccyl"+cote].value;
				var axe=document.forms[0].elements["rxlcaxe"+cote].value;
				
				if (K1>K2) {
					K=K1;
				} else {
					K=K2;
				}
				
				var Ac=Math.abs(document.forms[0].elements["rxlccyl" +cote].value);
				
				if(Ac>0.50) {
					document.forms[0].elements["lsh"+cote].value="EasySoft Toric Ro=" + (parseFloat(Km)+0.65);
					document.forms[0].elements["lshpui"+cote].value=arr_dio(sph) + " (" + arr_dio(cyl) + ") " + arr_axe(axe) +"°";
				} else {
					document.forms[0].elements["lsh"+cote].value="EasySoft Ro=" + limiter((parseFloat(K)+0.55));
					document.forms[0].elements["lshpui"+cote].value=arr_dio(sph);
				}
				document.forms[0].elements["rqls"].value="Diamètre = diamètre iris visible + 2mm \nCommuniquer aussi la kératométrie";
}

function Radian(axe) {
	var axe_rad = ((2 * Math.PI) / 360) * axe;
	return axe_rad;
}

function residuel(K1, K2, axe_cor , cyl_tot, axe_tot,cote) {
var Il=document.forms[0].elements["indice_lc"].value

var q1=0;

if (K1>K2) {
	q1=(336/K1)-(336/K2);
} else {
	q1=(336/K2)-(336/K1);
}

 
var q2, q3, q4, q5, q10 ,q6,q7,q8;
var sphere, cylindre, axe;

			q2=cyl_tot * Math.sin(2 * Radian(axe_tot));
            q3 = q1 * Math.sin(2 * Radian(axe_cor));
            q4 = cyl_tot * Math.cos(2 * Radian(axe_tot));
            q5 = q1 * Math.cos(2 * Radian(axe_cor));
			
            q10 = (Math.atan((q2 - q3) / (q4 - q5))) / 2;

			q6=(cyl_tot * Math.cos(2 * (Radian(axe_tot) - q10))) - (q1 * Math.cos(2 * (Radian(axe_cor) - q10)));
			q7=-1 * (0.5 * (q6 + q1 - cyl_tot));
			q8 = Degres((Math.atan((q2 - q3) / (q4 - q5))) / 2);
			
	if (q6>0) {
		sphere=q6+q7;
		axe=q8+90;
	} else {
		sphere=q7;
		axe=q8;
	}
	
	cylindre=-1*(Math.abs(q6));
	
	document.forms[0].elements["arsph"+cote].value=limiter(sphere);
	document.forms[0].elements["arcyl"+cote].value=limiter(cylindre);
	document.forms[0].elements["araxe"+cote].value=arr_axe(axe);
	
}

function int_cylindre(cyl_total,axe_total,cyl_cor,axe_cor) {
	
	var m18=cyl_total*Math.sin(2*Radian(axe_total));
	var n18=cyl_cor*Math.sin(2*Radian(axe_cor));
	var m17=cyl_total*Math.cos(2*Radian(axe_total));
	var n17=cyl_cor*Math.cos(2*Radian(axe_cor));
	
	var q_tmp  = (Math.atan((m18-n18)/(m17-n17))) / 2 ;
	
	var q_retour = ((cyl_total * Math.cos(2 * (Radian(axe_total) - q_tmp))) - (cyl_cor * Math.cos(2 *( Radian(axe_cor) - q_tmp))));
	return q_retour;

	}

function int_axe(cyl_total,axe_total,cyl_cor,axe_cor) {
	var q_tmp = Degres((Math.atan(((cyl_total * Math.sin(2 * Radian(axe_total))) - (cyl_cor * Math.sin(2 * Radian(axe_cor)))) / ((cyl_total * Math.cos(2 * Radian(axe_total))) - (cyl_cor * Math.cos(2 * Radian(axe_cor)))))) / 2);
return q_tmp;
	
	}

function Degres(axe) {
 var Deg = (360 * axe) / (2 * Math.PI);
  return Deg;
 }
 
 function changeLC(indice) {
 var a=0;
 (indice == 0) ? document.forms[0].elements["indice_lc"].value=1.473: a=0;
 (indice == 1) ? document.forms[0].elements["indice_lc"].value=1.49: a=0;
 (indice == 2) ? document.forms[0].elements["indice_lc"].value=1.47: a=0;
 (indice == 3) ? document.forms[0].elements["indice_lc"].value=1.48:a=0 ;
 (indice == 4) ? document.forms[0].elements["indice_lc"].value=1.4406: a=0;
 (indice == 5) ? document.forms[0].elements["indice_lc"].value=1.449: a=0;
 (indice == 6) ? document.forms[0].elements["indice_lc"].value=1.435: a=0;
 (indice == 7) ? document.forms[0].elements["indice_lc"].value=1.4332: a=0;
 (indice == 8) ? document.forms[0].elements["indice_lc"].value=1.415: a=0;
 (indice == 9) ? document.forms[0].elements["indice_lc"].value=1.473: a=0;
 (indice == 10) ? document.forms[0].elements["indice_lc"].value=1.4332: a=0;
 }

function changediametre(option,cote) {

	var autre_option;
	
	if (option=="z") {
		autre_option="a";
	} else {
		autre_option="z";
	}

	var objet = document.getElementById('group_'+option+cote);
	var objet2=document.getElementById('group_'+autre_option+cote);
	
	objet.style.display='block';
	objet2.style.display='none';

}

function afficher_groupe(nom, cacher) {
	
	var objet = document.getElementById('group_'+nom);
	var objet2=document.getElementById('group_'+cacher);
	
	objet.style.display='block';
	objet2.style.display='none';
}

function display(idobjet) {
	
	var objet = document.getElementById(idobjet);
	
	etat=objet.style.display;
		
		if (etat=='block') {
		 objet.style.display='none';
		 } else {
		 objet.style.display='block';
		}

}

function suggestion_kera(K1,K2,cote) {

	K1=limiter(K1);
	K2=limiter(K2);
	var K=0;
	var sph=document.forms[0].elements["rxlcsph"+cote].value ;
	var nomlc = new Array("KX3", "KN", "Spirée", "KL","KL","KN");

	if (K1>K2) {
		K=K1;
	} else {
		K=K2;
	}
	
	
	if (parseFloat(K)<7.20) {
		
		nomlc[1]="KN";
		nomlc[3]="KL";
		nomlc[5]="KN";
		
		afficher_groupe("cas21"+cote,"cas22"+cote);
		afficher_groupe("cas42"+cote,"cas41"+cote);
		afficher_groupe("cas63"+cote,"cas61"+cote);
		afficher_groupe("cas63"+cote,"cas62"+cote);
		
	} else if (parseFloat(K)>=7.20 && parseFloat(K)<=7.40) {
		
		nomlc[1]="Spirée";
		nomlc[3]="Ixia";
		nomlc[5]="Spirée";
		
		afficher_groupe("cas22"+cote,"cas21"+cote);
		afficher_groupe("cas41"+cote,"cas42"+cote);
		afficher_groupe("cas62"+cote,"cas61"+cote);
		afficher_groupe("cas62"+cote,"cas63"+cote);
		
	} else {
		
		nomlc[1]="Spirée";
		nomlc[3]="Ixia";
		nomlc[5]="Ixia";
		
		afficher_groupe("cas22"+cote,"cas21"+cote);
		afficher_groupe("cas41"+cote,"cas42"+cote);
		afficher_groupe("cas61"+cote,"cas63"+cote);
		afficher_groupe("cas61"+cote,"cas62"+cote);
		
	}
	

	
	for (i=1;i<7;i++) {
		document.forms[0].elements["cas"+i+cote].value=nomlc[i-1]+ " Ro="+ K + " Puissance " +sph;
	}
	
	
	
}
