// Fonction permettant de controler la clé du CIP13
// Argument code CIP sur 13 caractères
// Retourne la clé calculé 

function calculCleCIP13(cip13){  
      var cle = 0;
      var cleRangPair = 0;
      var cleRangImpair = 0;
      var calculCle = 0;
      // somme des valeurs de rang pair
      var totRangPair = parseInt(cip13.charAt(1))+parseInt(cip13.charAt(3))+parseInt(cip13.charAt(5))+parseInt(cip13.charAt(7))+parseInt(cip13.charAt(9))+parseInt(cip13.charAt(11));
      // somme des valeurs de rang impair
      var totRangImpair = parseInt(cip13.charAt(0))+parseInt(cip13.charAt(2))+parseInt(cip13.charAt(4))+parseInt(cip13.charAt(6))+parseInt(cip13.charAt(8))+parseInt(cip13.charAt(10));
      var totInter = totRangPair * 3 + totRangImpair;
      //alert(" somme : "+totInter);
      var pos = totInter.toString().length;
      if (parseInt(totInter.toString().charAt(pos-1)) > 0){
        cle = 10 - parseInt(totInter.toString().charAt(pos-1));
      }
      return cle;
}
// Fonction permettant de controler la clé du CIP7
// Argument code CIP sur 7 caractères
// Retourne la clé calculé 
function calculCleCIP7(cip7){ 
      var cle = ((parseInt(cip7.charAt(0))*2)+(parseInt(cip7.charAt(1))*3)+(parseInt(cip7.charAt(2))*4)+(parseInt(cip7.charAt(3))*5)+(parseInt(cip7.charAt(4))*6)+(parseInt(cip7.charAt(5))*7))%11;			
      return cle;
}

function controleCIP(str1) {
  // Test si chaine numérique
  if (isNaN(str1.value)) {
 		alert  ("Le code CIP doit être numérique");
		return false ;
	}
  //c'est un cip 7
	//pour une chaine de plus de 7 caractères controle le début
    if (str1.value.length > 7 && str1.value.substr(0,5) != "34009"){
      alert("Code CIP 13 incohérent");
      return false;
   }
  //alert(" code CIP numerique : "+str1.value+" longu : "+str1.value.length);
  // Controles CIP 7
  if (str1.value.length == 7){
    var cip7 = str1.value;
    var cle = calculCleCIP7(cip7);
		if (cle == cip7.substr(6,1)){
		  return true ;
    }
    else {
    	alert  ("Clé CIP7 erronée");
  		return false ;
    }
	}
      
	//pour une chaine de plus de 7 caractères controle le début
  // Controles sur CIP13
   if (str1.value.length == 13){
    var cip13 = str1.value;
    var cle = calculCleCIP13(cip13);

    if (cip13.substr(12,1) == cle){
   		return true ;
    } else {
			alert  ("Clé CIP13 erronée");
			return false ;
    }
	} 
}
// Fonction permettant de controler la clé du code UCD
// Argument code UCD
// Retourne la clé calculé 
function calculCleUCD(codeUCD){ 
      var cleUCD = ((parseInt(codeUCD.charAt(0))*2)+(parseInt(codeUCD.charAt(1))*3)+(parseInt(codeUCD.charAt(2))*4)+(parseInt(codeUCD.charAt(3))*5)+(parseInt(codeUCD.charAt(4))*6)+(parseInt(codeUCD.charAt(5))*7))%11;
      
      return cleUCD;
      return true;
}

//*******************************
function controleUCD(str1) {
  // Test si chaine numérique
  if (isNaN(str1.value)) {
 	  alert  ("Le code UCD doit être numérique");
		return false ;
	}
  // Test sur la longueur de la chaine
  if (str1.value.length > 7 || str1.value.charAt(0) != "9"){
 		  alert  ("Code UCD incohérent");
      return false;
  }
  // Controles du code
  if (str1.value.length == 7){
    var ucd = str1.value;
    var cle = calculCleUCD(ucd);
		if (cle == ucd.substr(6,1)){
		  return true ;
    }
    else {
    	alert  ("Clé UCD erronée");
  		return false ;
    }
	}
}

function checkVide(str1,str2,check1,check2,check3,check4,check5,check6) {
	if (str1.value != "" ) {
		if (isNaN(str1.value)) {
			alert  ("Le code CIP ou UCD doit être numérique");
			return false; 
		}
	}

	if (str1.value == "" && str2.value == ""){
		alert  ("Vous devez saisir au moins un critère code ou nom");
		return false; 
	}

	if (str1.value != "" && str2.value != ""){
		alert  ("Vous devez saisir un seul critère code ou nom");
		return false; 
	}

  if (!check1.checked && !check4.checked){
		alert  ("Vous devez cocher un choix CIP ou UCD");
		return false; 
	}
	if (check1.checked && check4.checked){
		alert  ("Vous ne devez cocher que CIP ou UCD");
		return false; 
	}
	
	if (check1.checked ){
	    if (!check2.checked && !check3.checked){
		     alert  ("Vous devez cocher au moins une homologation assuré ou collectivité");
		     return false; 
		  }
	    if (check5.checked || check6.checked){
		     alert  ("Les homologations rétrocession et TAA ne sont à cocher que pour les UCD");
		     return false; 
		  }
      return controleCIP(str1);
	}

	if (check4.checked ){
	    if (!check5.checked && !check6.checked){
		     alert  ("Vous devez cocher au moins une homologation rétrocession ou TAA");
		     return false; 
		  }
	    if (check2.checked || check3.checked){
		     alert  ("Les homologations assurés et collectivités ne sont à cocher que pour les CIP");
		     return false;
		  }
      
      if (str1.value != "" )
      {	        
        return controleUCD(str1);
      }
	}
	return true;
}
