// javascript valable pour les 3 graphiques : graphiques, graphiqueindice et graphiquedevise.
/* Compatible IE et Mozilla Firefox et Netscape 7.
 * Conseil ne pas utiliser "document.all" 
 * exemple : 
 * preferer -> document.forms['bloc2'] à document.all.bloc2
 *
 * pour compatibilité avec Mozilla et Netscape 7 
 * ne pas utiliser getYear mais getFullYear !
 */


var language = getPageLanguage();

/* Retourne la langue de la page contenue dans le paramètre 'lg'
 * si non trouvé, retourne la langue par défaut 'fr'.
 */
function getPageLanguage() {
    // On enlève le '?'
    param = window.location.search.slice(1,window.location.search.length);
    
    // On sépare les paramètres...
    // parameterList[0] est de la forme param=valeur    
    parameterList = param.split("&");	
    for(i = 0 ; i < parameterList.length ; i++){
	parameter = parameterList[i].split("=");
	if (parameter[0] == "lg" || parameter[0] == "lang" || parameter[0] == "langue") {
	    return parameter[1]; // valeur du parametre
	} 
    }
    return "fr";
}

function getMessageMoyenneMobile() {
    var message = "";
    if(language == "es") {
	message = "Los parametros de la med\u00EDa movil tienen que ser enteros y no vac\u00EDos";
    } else if (language == "en") {
	message = "Moving average periods have to be filled with an integer";	
    } else {			
	message = "Les champs de la moyenne mobile doivent etre entier et non vide tout les deux ";
    }
    return message;
}

function getMessageBandeBollinger() {
    var message = "";
    if(language == "es") {
	message = "Los parametros de las bandas de Bolinger tienen que ser enteros y no vac\u00EDos";
    } else if (language == "en") {
	message = "Bollinger bands periods have to be filled with an integer";
    } else {			
	message = "les champs de la moyenne de bolingers doivent etre entier et non vide";
    }
    return message;
}

function getMessagePeriodeDate() {
    var message = "";
    if(language == "es") {
	message = "La fecha de inicio tiene que ser anterior a la fecha de fin";
    } else if (language == "en") {
	message = "Start date must be lower than the end date";
    } else {			
	message = "La date de début doit etre inférieure à la date de fin";
    }
    return message;
}

function getMessageFormatDate() {
    var message = "";
    if(language == "es") {
	message = "El formato de fecha tiene que ser de tipo DD/MM/AAAA"; 
    } else if (language == "en") {
	message = "Valid date format is MM/DD/YYYY"; 
    } else {			
	message = "Le format de la date est JJ/MM/AAAA"; 
    }
    return message;
}

function swapClassElement(element, etat) {
	if (element != null) {
	var classe = "";
	if (etat == false) {
	classe = "limpr";
	} else {
	classe = "titreligne";
	}
        element.className = classe;
	}
}

function griseOuDegriseTout(){
   
    if(document.getElementById('TypeDeGraphique').value == "Intraday"){
        swapClassElement(document.getElementById('bloc1'), false); 
	swapClassElement(document.getElementById('bloc2'), false); 

	document.graphiquesForm.TypeDeCourbe.value='courbe';
	document.graphiquesForm.TypeDeCotation.value='110';	
	if (document.graphiquesForm.Operateur1 != null && document.graphiquesForm.Operateur2 != null) {
	    document.graphiquesForm.Operateur1.value='';
	    document.graphiquesForm.Operateur2.value='';
	}
	for(var i=0;i<document.graphiquesForm.length;i++){
	    if(document.graphiquesForm.elements[i].type != 'hidden'){
		if(document.graphiquesForm.elements[i]!= document.graphiquesForm.TypeDeGraphique){
		    if(document.graphiquesForm.elements[i].type == 'checkbox'){
			document.graphiquesForm.elements[i].checked=false;
		    }
		    if((document.graphiquesForm.elements[i].type == 'text')&&
		       (document.graphiquesForm.elements[i] != document.graphiquesForm.Indice)){
			document.graphiquesForm.elements[i].value='';
		    }
		    if(document.graphiquesForm.elements[i] != document.graphiquesForm.Indice){
			document.graphiquesForm.elements[i].disabled=true;	
		    }
		}
	    }
	}
    }else{
	swapClassElement(document.getElementById('bloc1'), true);
	swapClassElement(document.getElementById('bloc2'), true);

        for(var i=0;i<document.graphiquesForm.length;i++){
	    document.graphiquesForm.elements[i].disabled=false;	
        }
	setDates();         
    }       

}
 
function setDates(){
    var d = new Date();
    var j = d.getDate();
    var m = d.getMonth()+1;
    var mois=m;
    var jour=j;
    if(mois<=9) mois="0"+m;
    if(jour<=9) jour="0"+j;
    var a = d.getFullYear();
    var annee2 = d.getFullYear() - 2;

    if(language != "en") {
       document.graphiquesForm.DateDu.value=jour+"/"+mois+"/"+annee2;
       document.graphiquesForm.DateAu.value=jour+"/"+mois+"/"+a;
    }
    else {
       document.graphiquesForm.DateDu.value=mois+"/"+jour+"/"+annee2;
       document.graphiquesForm.DateAu.value=mois+"/"+jour+"/"+a;
    }
}

function moyenneMobile(){
    if(document.graphiquesForm.ChoixMoyenne[0].checked==true){
	document.graphiquesForm.BandeDeBolingersOp1.value='';
	document.graphiquesForm.BandeDeBolingersOp2.value='';
	document.graphiquesForm.ChoixMoyenne[1].checked=false;
	document.graphiquesForm.MoyennesMobilesOp1.disabled=false;
	document.graphiquesForm.MoyennesMobilesOp2.disabled=false;
	document.graphiquesForm.MoyennesMobilesOp1.value='50';
	document.graphiquesForm.MoyennesMobilesOp2.value='100';
	document.graphiquesForm.BandeDeBolingersOp1.disabled=true;
	document.graphiquesForm.BandeDeBolingersOp2.disabled=true;
    }else{
	document.graphiquesForm.MoyennesMobilesOp1.value='';
	document.graphiquesForm.MoyennesMobilesOp2.value='';
    }
}

function moyenneBolingers(){
    if(document.graphiquesForm.ChoixMoyenne[1].checked==true){
	document.graphiquesForm.MoyennesMobilesOp1.value='';
	document.graphiquesForm.MoyennesMobilesOp2.value='';
	document.graphiquesForm.ChoixMoyenne[0].checked=false;
	document.graphiquesForm.BandeDeBolingersOp1.disabled=false;
	document.graphiquesForm.BandeDeBolingersOp2.disabled=false;
	document.graphiquesForm.BandeDeBolingersOp1.value='20';
	document.graphiquesForm.BandeDeBolingersOp2.value='2';
	document.graphiquesForm.MoyennesMobilesOp1.disabled=true;
	document.graphiquesForm.MoyennesMobilesOp2.disabled=true;
    }else{
	document.graphiquesForm.BandeDeBolingersOp1.value='';
	document.graphiquesForm.BandeDeBolingersOp2.value='';
    }
}

function Operateur1Change(){
    if(document.graphiquesForm.Operateur1.value=='rsi'){	    
	document.graphiquesForm.Operateur1Param1.value='14';
	document.graphiquesForm.Operateur1Param2.value='';
    }else if (document.graphiquesForm.Operateur1.value=='mom'){
	document.graphiquesForm.Operateur1Param1.value='9';
	document.graphiquesForm.Operateur1Param2.value='';
    }else if (document.graphiquesForm.Operateur1.value=='vol'){
	document.graphiquesForm.Operateur1Param1.value='20';
	document.graphiquesForm.Operateur1Param2.value='';
    }else if (document.graphiquesForm.Operateur1.value=='osc'){
	document.graphiquesForm.Operateur1Param1.value='20';
	document.graphiquesForm.Operateur1Param2.value='50';
    }else if (document.graphiquesForm.Operateur1.value=='macd'){
	document.graphiquesForm.Operateur1Param1.value='12';
	document.graphiquesForm.Operateur1Param2.value='26';   
    }else{
	document.graphiquesForm.Operateur1Param1.value='';
	document.graphiquesForm.Operateur1Param2.value='';   
    }
}

function Operateur2Change(){
    if(document.graphiquesForm.Operateur2.value=='rsi'){	    
	document.graphiquesForm.Operateur2Param1.value='14';
	document.graphiquesForm.Operateur2Param2.value='';
    }else if (document.graphiquesForm.Operateur2.value=='mom'){
	document.graphiquesForm.Operateur2Param1.value='9';
	document.graphiquesForm.Operateur2Param2.value='';
    }else if (document.graphiquesForm.Operateur2.value=='vol'){
	document.graphiquesForm.Operateur2Param1.value='20';
	document.graphiquesForm.Operateur2Param2.value='';
    }else if (document.graphiquesForm.Operateur2.value=='osc'){
	document.graphiquesForm.Operateur2Param1.value='20';
	document.graphiquesForm.Operateur2Param2.value='50';
    }else if (document.graphiquesForm.Operateur2.value=='macd'){
	document.graphiquesForm.Operateur2Param1.value='12';
	document.graphiquesForm.Operateur2Param2.value='26';   
    }else{
	document.graphiquesForm.Operateur2Param1.value='';
	document.graphiquesForm.Operateur2Param2.value='';   
    }
}

function ValidateMoyenne(){
    var ok=1;
    if(document.graphiquesForm.ChoixMoyenne[0].checked==true){
	if(((isNaN(document.graphiquesForm.MoyennesMobilesOp1.value)==true)||
	    (isNaN(document.graphiquesForm.MoyennesMobilesOp2.value)==true)||
	    (document.graphiquesForm.MoyennesMobilesOp1.value=='')&&
	    (document.graphiquesForm.MoyennesMobilesOp2.value==''))) {
	    alert(getMessageMoyenneMobile());	
	    ok=0;
	}else{
	    ok=1;
	}
    }else{
        if(document.graphiquesForm.ChoixMoyenne[1].checked==true){
	    if((isNaN(document.graphiquesForm.BandeDeBolingersOp1.value)==true)||
	       (isNaN(document.graphiquesForm.BandeDeBolingersOp2.value)==true)||
	       (document.graphiquesForm.BandeDeBolingersOp1.value=='')||
	       (document.graphiquesForm.BandeDeBolingersOp2.value=='')){ 
		alert(getMessageBandeBollinger());
		ok=0;
            }else{
                ok=1;
	    }
        }else{
	    ok=1;
        }
    } 
    return ok;  
}

function validateAll(){	
    if((ValidateMoyenne() == 1)){
	return CheckDates(document.graphiquesForm.DateDu.value,'Du',document.graphiquesForm.DateAu.value,'Au');
       }
    else 
       {
	return false;
       }
}
function CheckDates(d1,name1,d2,name2) {
	if(document.graphiquesForm.TypeDeGraphique != null 
          && document.graphiquesForm.TypeDeGraphique.value=='Intraday') { 
	return true; // pas de verification
	} else if((CheckDate(d1,name1)==1) &&
       (CheckDate(d2,name2)==1) &&
       (CheckDiffDates(d1,name1,d2,name2)==1))
       	{
	    document.graphiquesForm.personaliserGraphique.value='true';
            return true;
	} else {
        return false;
	}
}
function CheckDiffDates(d1,name1,d2,name2){
    //d1 doit etre inferieur ou egale a d2
	

    if(language != "en")
    {
       var j1=(d1.substring(0,2));
       var m1=(d1.substring(3,5));
       var j2=(d2.substring(0,2));
       var m2=(d2.substring(3,5));
    } else
    {
       var j1=(d1.substring(3,5));
       var m1=(d1.substring(0,2));
       var j2=(d2.substring(3,5));
       var m2=(d2.substring(0,2));
    }
    
    var a1=(d1.substring(6));
    var a2=(d2.substring(6));
      
    var date_deb = new Date(a1,m1,j1);
    var date_fin = new Date(a2,m2,j2);
      
    var debut = date_deb.getTime();
    var fin = date_fin.getTime();

    var ok=1;
      
    if (debut>=fin){
	alert(getMessagePeriodeDate());
	ok = 0;
    } else {
        ok=1;
    }
    return ok;
}
 
 
function CheckDate(d,name) {
    // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
    // Le séparateur est défini dans la variable separateur
    var amin=1999; // année mini
    var amax=2100; // année maxi
    var separateur="/"; // separateur entre jour/mois/annee

    if(language != "en")
    {
       var j=(d.substring(0,2));
       var m=(d.substring(3,5));
    }
    else
    {
       var j=(d.substring(3,5));
       var m=(d.substring(0,2));
    }
    var a=(d.substring(6));
    var ok=1;
    if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
	alert(getMessageFormatDate());
	ok = 0;
    }
    if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
	alert(getMessageFormatDate());
	ok = 0;
    }
    if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
	alert(getMessageFormatDate());
	ok = 0;
    }
    if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
	alert(getMessageFormatDate());
	ok = 0;
    }
    return ok;
}

