/*** functions generales ***/
    function displayDiv(division,modeDisplay) {
        if(document.getElementById(division)!=null) {
            document.getElementById(division).style.display = modeDisplay;
        }
    }
    
    function displayDivByName(division,modeDisplay,divcachees) {

    	//cache ses soeurs
    	//bug à faire
    	/*
    	if(divcachees!='') {
    	   displayDivByName(divcachees,'none','');
    	}*/
        
        var a   = document.getElementsByTagName('div');
    	var len = a.length;
    	var out = new Array();
    	
    	for (var i = 0; i < len; i++)
    	{
    		if (a[i].getAttribute('name')==division)
            var idDiv = a[i].getAttribute('id');
            if(document.getElementById(idDiv)!=null) {
                document.getElementById(idDiv).style.display = modeDisplay;
            }
    	}



    }

function resizeFlash(divId,h){
	document.getElementById(divId).style.height = h+"px";		
}
    
function popup(page,nom,largeur,hauteur,options) {
	
  var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	
	if(page.indexOf("web/")<0 && page.indexOf("http://")<0) {
	 var chemin = runfile("ajax/ajaxGetCheminsite.php");
   page = chemin + "web/" + page;
	}
	
	window.open(page,nom,"top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}

function popupFenetre(idItem,largeur,hauteur) {
	if(largeur=="") {
   largeur = 800;
  }
  if(hauteur=="") {
    hauteur = 500;
  }

  var top=(screen.height-hauteur)/2;
	var left=(screen.width-largeur)/2;
	var chemin = runfile("ajax/ajaxGetCheminsite.php");
	popup(chemin+"web/popup.php?idItem="+idItem,'fenetre',largeur,hauteur,'resizable=1,scrollbars=1');
}

//zoom image par visionneuse FLA
var yOffset = 0;



function zoomImageFull(source, titre) {
    source = source.replace('/minis', '');

    //affiche le swf
    var divVisionneuse = runfile("ajax/ajaxVisionneuse.php?source="+source+"&titre="+titre);
    displayDiv("ajax_div_visionneuse","block");
    document.getElementById("ajax_div_visionneuse").innerHTML = divVisionneuse;
    /*
    var newDiv = document.createElement("div");
    newDiv.setAttribute("id","div_visionneuse");
    newDiv.innerHTML = divVisionneuse;
    document.body.appendChild(newDiv);
    */
    
    yOffset = window.pageYOffset;
    if(yOffset==undefined) {
      yOffset = document.documentElement.scrollTop;
    }
    

    window.scrollTo(0,0);
    document.body.style.overflowY = "hidden";
    
} 

//version simplifiée
function zoomImage(source) {
  zoomImageFull(source, "");
}

//recup les images de la page
function getImagesHTML() {

  var tabImages = new Array();
  
  var j = 0;
  var images = window.document.images;
  var reg=new RegExp("(minis/)", "g");
  var regR=new RegExp("(reduites/)", "g");
  var regAlt=new RegExp("( - Cliquez pour agrandir)", "g");
   
 
  for(i=0;i<images.length;i++) {
    //ne recup que celles issues de upload
    if(images[i].src.indexOf("upload/")>-1) {

      var idImage = images[i].getAttribute("id");
    
      if(idImage!="" && idImage!=null) {
        var thisImage = document.getElementById(idImage);

        //ne recupere que celle de la class zoomImage
        
        if(thisImage.className=="zoomImage") {

          //grande
          var grande = images[i].src.replace(reg,"");
          var grande = grande.replace(regR,"");
          
          //verifie le onclick, car la source de l'originale est peut-être une image différente (nom différent)
          var onclick = images[i].getAttribute("onclick");
          if(onclick!="" && onclick!=null) {
            //on tente de sortir les params : fonction zoomImage ou zoomImageFull
            //zoomImageFull('upload/editeur/islande-aout-2005-071.jpg',this.alt)
            var value_onclick = onclick.toString();
            //parenthese et virgule sont les points de separation à chercher
            //à finir
            var array_parenthese = value_onclick.split('(');
            var last_parenthese = array_parenthese[array_parenthese.length-1];
            var array_virgule = last_parenthese.split(',');
            var param_src_originale = array_virgule[0];
            
            param_src_originale = param_src_originale.replace('\'', '');
            param_src_originale = param_src_originale.replace('\'', '');
            if(param_src_originale!='') {
              grande = param_src_originale;
            }
            
          }
          
          var photoImage = new Object();
          photoImage.mini = images[i].src;

          try {
            photoImage.titre = thisImage.getAttribute("alt").replace(regAlt,"");
          } catch(e) {
            try {
              photoImage.titre = thisImage.getAttribute("title").replace(regAlt,"");
            } catch(e) {
              photoImage.titre = "";
            }
          }
          
          if(photoImage.titre!=null && photoImage.titre!="") {
            photoImage.titre = photoImage.titre.replace('- Cliquez pour agrandir', '');
          } else {
            photoImage.titre = " ";
          }
          
          if(photoImage.titre=="null" && photoImage.titre==null) {
            photoImage.titre = " ";
          }
          
          
          photoImage.mini = images[i].src; 
          photoImage.grande = grande;

          tabImages[j] = photoImage;
          j++;         
        }
        
        
      }
    }
  }

  //utilise externalInterface de FLASH
  thisMovie("swf_visionneuse_image").createMosaiqueFromJs(tabImages);
}

function thisMovie(movieName) {
     if (navigator.appName.indexOf("Microsoft") != -1) {
          return document.getElementById(movieName);
     } else {
          return document[movieName];
     }
}


//reinit et revient sur la position de depart
function jsResetZoom() {

  if(yOffset==undefined) {
    yOffset = 0;
  }  
  /*
  divV = document.getElementById("div_visionneuse");
  document.body.removeChild(divV);
  */
  displayDiv("ajax_div_visionneuse","none");

  
  document.body.style.overflowY = "visible";
  window.scrollTo(0,yOffset);
}

//affiche une galerie photo avec la visionneuse
function visionneuseGalerie(idGalerie, idPhoto) {

    //affiche le swf
    var divVisionneuse = runfile("ajax/ajaxVisionneuse.php?idGalerie="+idGalerie+"&idPhoto="+idPhoto);
    displayDiv("ajax_div_visionneuse","block");
    document.getElementById("ajax_div_visionneuse").innerHTML = divVisionneuse;

    
    yOffset = window.pageYOffset;
    if(yOffset==undefined) {
      yOffset = document.documentElement.scrollTop;
    }
    

    window.scrollTo(0,0);
    document.body.style.overflowY = "hidden";
}

//zoom image par popup
/*
function zoomImage(source) {
    source = source.replace('/minis', '');
    var chemin = runfile("ajax/ajaxGetCheminsite.php");
    popup(chemin+"web/zoomImage.php?source="+source,'zoom','730','500','resizable=1,scrollbars=1');
} 
*/

//fonction zoom image simple
/*
function zoomImage(source) {
    //enleve la string minis/
    source = source.replace('/minis', '');    
    popup(source,'zoom','700','500','resizable=1,scrollbars=1');
} 
*/

/*****utils*****/
function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }

    return true;
}

String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}


/***champs required + formats speciaux ***/
function validateRequiredForm(formulaire) {
    
    if(validateEmail(formulaire)==false) {
			return false;
    }
		
    if(validateDate(formulaire)==false) {
        return false;
    }

    if(validateFloat(formulaire)==false) {
        return false;
    }
		
		if(validateNumerique(formulaire)==false) {
			return false;
		}

    var alerte = 0;
    for(f=0;f<formulaire.elements.length;f++) {
		    var thisName = formulaire.elements[f].getAttribute("name");

		
        var thisAttribut = formulaire.elements[f].getAttribute("required");
        if((thisAttribut!='')&&(thisAttribut!=null)) {
        //si pas disabled
             if(formulaire.elements[f].disabled==false){
                    //cas speciaux 
                    var thisType = formulaire.elements[f].getAttribute("type");
                    if(thisType == "radio" || thisType == "checkbox") {
                        
                        caseChecked = false;
                        for(r=0;r<formulaire.elements.length;r++) {
                          if(formulaire.elements[r].getAttribute("name")==thisName) {
                            if(formulaire.elements[r].checked==true) {
                                caseChecked = true;
                            }                          
                          }
                        }
                        if(!caseChecked) {
                            
                            var messageFr = "Merci de remplir le champ ";
                            var message = ajaxGetTraduction(messageFr,'');
                            if(message==false) {
                              message = messageFr;
                            }
                            alert(message + ' "'+thisAttribut+'"');
                            formulaire.elements[f].focus();
                            return false;   
                            break;
                        }
                    } else {
                        if(formulaire.elements[f].value=='') {
                            var messageFr = "Merci de remplir le champ ";
                            var message = ajaxGetTraduction(messageFr,'');
                            if(message==false) {
                              message = messageFr;
                            }
                            alert(message + ' "'+thisAttribut+'"');
                            formulaire.elements[f].focus();
                            return false;
                        }
                    }
             }
             
             ///cas special n° elevage
             if(thisName=="numero_elevage") {
             
  						 try {
        				var numero_elevage = formulaire.elements.numero_elevage;				
        				var code_postal = formulaire.elements.cp;  						 
  						 
               // verifie si les 2 premiers chiffres du numero_elevage et du code_postal sont egaux
          		 if(numero_elevage.value.substring(0, 2)!=code_postal.value.substring(0, 2)) {
          			alert("Les 2 premiers chiffres du numéro d'élevage et du code postal,\n doivent être identiques!");
          			return false;
          		}   						 
  						 } catch(e) {

  						 }
            
             }
						 

						 
						 
        }
    }
		
		
		
    return true;
}


/*****date*****/

function validateDate(formulaire) {
    var alerte = 0;
    for(f=0;f<formulaire.elements.length;f++) {
        var thisAttribut = formulaire.elements[f].getAttribute("format");
        if(thisAttribut=='date' && thisAttribut!=null) {
            tabDate = formulaire.elements[f].value.split('/');
            if(formulaire.elements[f].value!='') {
                if(tabDate.length!=3) {
                    alerte++;
                    break;                
                } else {
                    if(tabDate[2]!='0000' && isValidDate(tabDate[0], tabDate[1], tabDate[2])==false) {
                        alerte++;
                        break;
                    }                
                }
            
            }

        }
    }
      
    if(alerte>0) {
      var messageFr = "Merci de respecter le format des dates !";
      var message = ajaxGetTraduction(messageFr,'');
      if(message==false) {
        message = messageFr;
      }    
        alert(message);
		if ((formulaire.elements[f].type == "radio") || (formulaire.elements[f].type == "select") || (formulaire.elements[f].type == "text") || (formulaire.elements[f].type == "textarea")) {
            formulaire.elements[f].focus();
		}
        
		return false;   
    }
    return true;
    
}

function isValidDate(day, month, year) {
	    if(day=='' || month=='' || year=='' || day=='undefined' || month=='undefined' || year=='undefined') {
            return false;
        } else {
            if (month < 1 || month > 12) {
                return false;
            }
            if (day < 1 || day > 31) {
                return false;
            }
            if ((month == 4 || month == 6 || month == 9 || month == 11) &&
                (day == 31)) {
                return false;
            }
            if (month == 2) {
                var leap = (year % 4 == 0 &&
                   (year % 100 != 0 || year % 400 == 0));
                if (day>29 || (day == 29 && !leap)) {
                    return false;
                }
            }        
        }
        

        return true;
}

/***email***/
function validateEmail(formulaire) {
    var alerte = 0;
    for(f=0;f<formulaire.elements.length;f++) {
        var thisAttribut = formulaire.elements[f].getAttribute("format");
        if(thisAttribut=='email' && thisAttribut!=null) {
            if(formulaire.elements[f].value!='') {
                if(checkEmail(formulaire.elements[f].value)==false) {
                        alerte++;
                        break;
                }                
            }

        }
    }
      
    if(alerte>0) {

      var messageFr = "Merci de respecter le format des e-mails !";
      var message = ajaxGetTraduction(messageFr,'');
      if(message==false) {
        message = messageFr;
      } 		
        alert(message);
		if ((formulaire.elements[f].type == "text") || (formulaire.elements[f].type == "textarea")) {
            formulaire.elements[f].focus();
		}
        
		return false;   
    }
    return true;
    
}

function checkEmail(emailStr) {
		if (emailStr.length == 0) {
			 return true;
		}
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
		var matchArray=emailStr.match(emailPat);
		if (matchArray == null) {
			 return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
		if (user.match(userPat) == null) {
			 return false;
		}
		var IPArray = domain.match(ipDomainPat);
		if (IPArray != null) {
			 for (var i = 1; i <= 4; i++) {
					if (IPArray[i] > 255) {
						 return false;
					}
			 }
			 return true;
		}
		var domainArray=domain.match(domainPat);
		if (domainArray == null) {
			 return false;
		}
		var atomPat=new RegExp(atom,"g");
		var domArr=domain.match(atomPat);
		var len=domArr.length;
		if ((domArr[domArr.length-1].length < 2) ||
			 (domArr[domArr.length-1].length > 4)) {
			 return false;
		}
		if (len < 2) {
			 return false;
		}
		return true;
}
    
/* A FAIRE
float
*/    
function validateFloat(formulaire) {
    var alerte = 0;
    for(f=0;f<formulaire.elements.length;f++) {
        var thisAttribut = formulaire.elements[f].getAttribute("format");
        if(thisAttribut=='float' && thisAttribut!=null) {
            if(formulaire.elements[f].value!='') {
                if(isNaN(parseFloat(formulaire.elements[f].value))) {
                    alerte++;
                    break;                
                }
            
            }

        }
    }
      
    if(alerte>0) {
      var messageFr = "Merci de respecter le format des prix !";
      var message = ajaxGetTraduction(messageFr,'');
      if(message==false) {
        message = messageFr;
      } 		
        alert(message);		
		if ((formulaire.elements[f].type == "radio") || (formulaire.elements[f].type == "select") || (formulaire.elements[f].type == "text") || (formulaire.elements[f].type == "textarea")) {
            formulaire.elements[f].focus();
		}
        
		return false;   
    }
    return true;
    
}

/*** Permet de vérifier que les champs numero d'élevage, numéro de téléphone et code postal ne contiennent que des chiffres ***/
function validateNumerique(formulaire) {
	var alerte = 0;
	var caractereAutorise = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
	for(f=0;f<formulaire.elements.length;f++) {
			var thisAttribut = formulaire.elements[f].getAttribute("format");
			if(thisAttribut=='quedesnombres' && thisAttribut!=null) {
					for(var i=0; i<formulaire.elements[f].value.length; i++) {
						var verification = false;
						for(var j=0; j<caractereAutorise.length; j++) {
							if(formulaire.elements[f].value.substring(i, i+1) == caractereAutorise[j]) {
								verification = true;
							}
						}
						if(verification == false) {							
							var messageFr = "Merci de ne mettre que des chiffres pour le champ "+formulaire.elements[f].getAttribute("required");
							var message = ajaxGetTraduction(messageFr,'');
							if(message==false) {
								message = messageFr;
							} 		
							alert(message);
							return false;
						}
					}
			}
	}
	
	return true;
}

/***photo detail**/
function viewPhotoDetail(photo,division) {
    document.getElementById(division).innerHTML = "<p align=\"right\"><a href=\"javascript:void(0)\" onclick=\"displayDiv('"+division+"','none')\">[X]</a></p><p align=\"center\"><img src=\""+photo+"\"/></p>";
    document.getElementById(division).style.display = "block";
}

/*AJAX*/

function getCheminSite() {
  var urlH = window.location.href;
  tabH = urlH.split('www');
  var cheminSite = tabH[0] + 'www/';
  return cheminSite;
}

function runfile(fichier) 
     
     { 
     
     if(window.XMLHttpRequest) // FIREFOX 
          xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // IE 
          xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else 
          return(false); 
          
          try {
     xhr_object.open("GET", fichier, false); 
     xhr_object.send(null);          
          } catch(e) {

          }

     if(xhr_object.readyState == 4) {
        //return(false);
        return(xhr_object.responseText);
        } else {
        return(false);
        } 
     }

/**codes securite**/
function verifCodeSecurite(codeValue) {
    var retour = runfile("ajax/ajaxVerifCodeSecurite.php?codeValue="+codeValue);
    if(retour=="1") {
        return true;
    } else {
		var message = ajaxGetTraduction('Le code sécurité est erroné !','');
        alert(message);	
        return false;
    }
}


function gotoAncre(ancre) {
    var thisLocation = window.location.href;
    tabLocation = thisLocation.split('#');
    window.location.href = tabLocation[0] + "#" + ancre;
    var message = ajaxGetTraduction('Lien vers',''); 
    window.status = message + " " + ancre;  
}

//recup en ajax un texte traduit
function ajaxGetTraduction(texte,langue) {
    var cheminSite = getCheminSite();

    var retour = runfile(cheminSite + "ajax/ajaxGetTraduction.php?traduction_texte="+texte+"&traduction_langue="+langue);
    
    return retour;
}

/* alertes */
var yOffset = 0;

function nc_alerte_get_content_sans_appar(page) {

  var chemin = runfile("ajax/ajaxGetCheminsite.php");
  if(page.indexOf(chemin)==-1) {
    page = chemin + page;
  }

  var retour = runfile(page);
  if(retour!="") {
    document.getElementById("div_alerte_message").innerHTML = retour;
  }
    
}

function nc_alerte_get_content(page) {
  var chemin = runfile("ajax/ajaxGetCheminsite.php");
  if(page.indexOf(chemin)==-1 && page.indexOf("http://")==-1) {
    page = chemin + page;
  }

  //var retour = runfile(page);
  var retour = runfile("ajax/ajaxGetFileContents.php?page=" + page);
  
  if(retour!="") {
    nc_alerte(retour);
  }
    
}

function nc_alerte(message) {
 
  //scroll
  yOffset = window.pageYOffset;
  if(yOffset==undefined) {
      yOffset = document.documentElement.scrollTop;
  }
  window.scrollTo(0,0);
  document.body.style.overflowY = "hidden";
  

  document.getElementById("div_alerte_message").innerHTML = message;
  document.getElementById("div_alerte_fond").style.display = "block";
  document.getElementById("div_alerte").style.display = "block";
  document.getElementById("div_alerte").scrollTop = 0;
  document.getElementById("div_alerte_fermer").style.display = "block";
  document.getElementById("div_alerte_fond").style.height = document.body.clientHeight + "px";
}

function nc_alerte_fermer() {
  document.getElementById("div_alerte_fond").style.display = "none";
  document.getElementById("div_alerte").style.display = "none";
  document.getElementById("div_alerte_fermer").style.display = "none";

  //scroll
  if(yOffset==undefined) {
    yOffset = 0;
  }   

  
  document.body.style.overflowY = "auto";
  window.scrollTo(0,yOffset);
}

/*
specials modules include
*/
//recupere toutes les div de class "div_module_include" pour en afficher les contenus
function makeDivModulesIncludes() {
  var divs   = document.getElementsByTagName("div");
  var len = divs.length;
  var out = new Array();
  	
  for (var i = 0; i < len; i++) {
    
    var classDiv = "";
    classDiv = divs[i].getAttribute('class');
    
    if(classDiv==null) {
      try {
        classDiv = divs[i].className;
      } catch(ee) {      
      }    
    }

    if (classDiv=='div_module_include') {
      var idDiv = divs[i].getAttribute('id');
      
      if(idDiv!=undefined && idDiv!='' && idDiv!=0) {
        ajaxGetContenuModule(idDiv);
      }      
    }
  }
}

//liste le contenu d'un module
function ajaxGetContenuModule(idDiv) {
  var contenu = runfile("ajax/ajaxGetContenuModule.php?idDiv="+idDiv);
  
  if(document.getElementById(idDiv)!=null) {
    document.getElementById(idDiv).innerHTML = contenu;
  }
}

function reset_field(champ, valeur_init) {
  if(champ.value == valeur_init) {
    champ.value = '';
  }
}

// Special SMBV pour les techniciens
function affiche(id) {
	//alert(id);
	displayDivByName("div_technicien","none","");
	
	document.getElementById(id).style.display = "block";
}

// Special SMBV pour les documents extranet
function expansion(idCategorie, idDocument) {
	var elements = document.getElementsByName("description");
	var signe = document.getElementsByName("signe");
	
	//action si la description est deja affichee
	if(document.getElementById("description_"+idCategorie+"_"+idDocument).style.display == "block") {
		document.getElementById("signe_"+idCategorie+"_"+idDocument).style.backgroundImage = "url('web/images/documents_extranet_plus.gif')";
		displayDiv("description_"+idCategorie+"_"+idDocument, "none");
		document.getElementById("signe_"+idCategorie+"_"+idDocument).title = "Afficher la description";
	} else {
	//action si la description est masquee
		for(var i=0; i<elements.length-1; i++) {
			elements[i].style.display = "none";
			signe[i].style.backgroundImage = "url('web/images/documents_extranet_plus.gif')";
		}
		
		document.getElementById("signe_"+idCategorie+"_"+idDocument).style.backgroundImage = "url('web/images/documents_extranet_moins.gif')";
		displayDiv("description_"+idCategorie+"_"+idDocument, "block");
		document.getElementById("signe_"+idCategorie+"_"+idDocument).title = "Masquer la description";
		
		if(document.getElementById("tableau_"+idCategorie+"_"+idDocument).style.backgroundColor != "") {
			document.getElementById("tableau_"+idCategorie+"_"+idDocument).style.backgroundColor = "";
		}
	}
}