/********************************************/
/*		Cedwik's quick functions(CqF)					*/
/********************************************/

/********************************************************
BUT : Rendre un élément en display "block"	

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function block(id){
  if(document.getElementById(id)){
    document.getElementById(id).style.display="block";
  }
}

/********************************************************
BUT : Rendre un élément en display "none"	

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function none(id){
  if(document.getElementById(id)){
    document.getElementById(id).style.display="none";
  }
}

/********************************************************
BUT : Rendre une liste d'éléments d'identifiant incrémentés 
      en display "none"	

PARAMETRES : 
	> id : première partie de l'identifiant de l'élément
********************************************************/
function noneAll(id){
	var i = 1;
	while(document.getElementById(id+i)){
		none(id+i);
		i++;
	}
}

/********************************************************
BUT : Attribuer une valeur à un élément	

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à attribuer
********************************************************/
function valeur(id,valeur){
	document.getElementById(id).value=valeur;
}

/********************************************************
BUT : Attribuer une valeur à un élément	

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à attribuer
********************************************************/
function valeurInnerHtml(id,valeur){
	document.getElementById(id).innerHTML=valeur;
}

/********************************************************
BUT : rendre un champs vide	

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function resetValeur(id){
  if(document.getElementById(id)){
    document.getElementById(id).value='';
  }
}

/********************************************************
BUT : Rendre un élément visible

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function visible(id){
	document.getElementById(id).style.visibility='visible';
}

/********************************************************
BUT : Rendre un élément invisible

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function hidden(id){
	document.getElementById(id).style.visibility='hidden';
}

/********************************************************
BUT : Rendre un élément invisible

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function hiddenAll(partOfId){
	var i=1;
	while(document.getElementById(partOfId+i)){
		hidden(partOfId+i);
		i++;
	}
}

/********************************************************
BUT : Attribuer une image à un élément img

PARAMETRES : 
	> id : identifiant de l'élément
	> img : chemin de l'image
********************************************************/
function imgSRC(id,img){
	document.getElementById(id).src=img;
}

/********************************************************
BUT : Vérification de suppression

PARAMETRES : 
	> nom : nom de l'élément à supprimer
	> idStockIdToBeDelete : élément contenant 
							l'id de l'élément 
							précédent
********************************************************/
function verifDelete(nom,idStockIdToBeDelete){
  if (confirm("Etes vous sûr de supprimer '"+nom+"' ?")) {
    mySubmit("f");
  }else{
    document.getElementById(idStockIdToBeDelete).value = "";
  }
}

/********************************************************
BUT : Obtenir la valeur d'un élément

PARAMETRES : 
	> id : identifiant de l'élément
********************************************************/
function valeurGet(id){
  return document.getElementById(id).value;
}

/********************************************************
BUT : Ajouter une valeur à un élément

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à ajouter
	> valeurNom : nom de la valeur
********************************************************/
function valeurAdd(id,valeur,valeurNom){
  var string = document.getElementById(id).value;
  tab = string.split('+');
  var i = 0;
  var ok = true;
  while(tab[i] && tab[i] != ''){
	  if(tab[i] == valeur){
		  ok = false;
		  break;
	  }
	  i++;
  }
  if(ok == true && valeur != ''){
    document.getElementById(id).value+=valeur+'+';
		if(valeurNom != ''){
			innerHTMLButton('createdDeclinaison',valeur,valeurNom);
		}
  }
}

/********************************************************
BUT : Supprimer une valeur à un élément

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à supprimer
********************************************************/
function valeurDelete(id,valeur){
  var string = document.getElementById(id).value;
  string = string.replace(valeur,'');
  document.getElementById(id).value = string;
}

/********************************************************
BUT : Verifier si une valeur existe dans un champs

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à vérifier
********************************************************/
function valeurVerif(id,valeur){
  var string = document.getElementById(id).value;
  tab = string.split('+');
  var i = 0;
  var ok = false;
  while(tab[i] && tab[i] != ''){
	  if(tab[i] == valeur){
		  ok = true;
		  break;
	  }
	  i++;
  }
  return ok;
}

/********************************************************
BUT : Création d'un boutton HTML

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à ajouter
	> valeurNom : nom de la valeur
********************************************************/
function innerHTMLButton(id,valeur,valeurNom){
  if(valeur){
    document.getElementById(id).innerHTML = '<input type="button" value="'+valeurNom+'" onClick="suppr(\'optionSelected_Validate\',\''+valeur+'+\');this.style.display=\'none\';"/>'+document.getElementById(id).innerHTML;
    block('createdDeclinaison');
  }
}

/********************************************************
BUT : Création d'un boutton HTML

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à ajouter
	> num : numero d'identifiant du nouvel input file
********************************************************/
function innerHTMLInputFile(id,num){
  if(id){
    document.getElementById(id).innerHTML += 'Image : <input type="file" name="contenu_upload_img_'+num+'" id="contenu_upload_img_'+num+'" value="" onChange="viewImageTreated(\'contenu_img_'+num+'\',this.value,150);block(\'contenu_img_'+num+'\');"><br/><br/><img src="" id="contenu_img_'+num+'" class="hidden"/><br/><br/>';
  }
}

/********************************************************
BUT : Suppression d'une valeur contenu par un élément

PARAMETRES : 
	> id : identifiant de l'élément
	> valeur : valeur à ajouter
********************************************************/
function suppr(id,valeur){
	var string = document.getElementById(id).value;
	string = string.replace(valeur,'');
	document.getElementById(id).value = string;
	if(string == ''){
		none('createdDeclinaison');
	}
}

/********************************************************
BUT : Rendre différents élément en display none en fonction d'une liste 
	  de leurs id contenu dans un autre élément

PARAMETRES : 
	> id : identifiant de l'élément
	> partOfId : première partie de l'id
********************************************************/
function displayAllById(id,partOfId){
	var string = document.getElementById(id).value;
  tab = string.split('+');
  var i = 0;
  while(tab[i] && tab[i] != ''){
		if(document.getElementById(partOfId+tab[i])){
			none(partOfId+tab[i]);
			i++;
		}else{
			break;	
		}
  }
}

/********************************************************
BUT : Rendre différents élément en display block en fonction d'une liste 
	  de leurs id contenu dans un autre élément

PARAMETRES : 
	> id : identifiant de l'élément
	> partOfId : première partie de l'id
********************************************************/
function unexplode(id,partOfId){
  var string = document.getElementById(id).value;
  tab = string.split('+');
  var i = 0;
  while(tab[i] && tab[i] != ''){
	  block(partOfId+tab[i]);
	  i++;
  }
}

/********************************************************
BUT : Raccourci de soumition du formulaire

PARAMETRES : 
	> id : identifiant du formulaire
********************************************************/
function mySubmit(id){
 document.getElementById(id).submit(); 
}

/********************************************************
BUT : Raccourci de remise à zéro des champs

PARAMETRES : 
	> id : identifiant du formulaire
********************************************************/
function myReset(id){
 document.getElementById(id).reset(); 
}

/********************************************************
BUT : Attribuer une classe CSS différente à un élément parmi 
d'autres dont leurs id sont contenus dans un autre élément

PARAMETRES : 
	> id : id de l'élément contenant la liste des id
	> partOfId : première partie de l'id
	> IdSelected : id selectionné
	> classSelect : classe CSS de selection 
	> classUnselect : classe CSS de déselection
********************************************************/
function selectElement(id,partOfId,IdSelected,classSelect,classUnselect){
  var string = document.getElementById(id).value;
  tab = string.split('+');
  var i = 0;
  while(tab[i] && tab[i] != ''){
	  document.getElementById(partOfId+tab[i]).className=classUnselect;
	  i++;
  }
  document.getElementById(partOfId+IdSelected).className=classSelect;
}

/********************************************************
BUT : Attribution d'un lien à une balise img.
	  Cette image sera ensuite retaillée

PARAMETRES : 
	> id : id de l'image vide 
	> img : lien de l'image
	> maxi : largeur/hauteur maxi d'une image
********************************************************/
function viewImageTreated(id,img,maxi){
  document.getElementById(id).src='modules/functions/miniature.php?pic='+img+'&maxi='+maxi;
}

/********************************************************
BUT : Vérification d'étape en fonction 
      de la valeur d'un élément

PARAMETRES : 
	> id : id de l'élément
********************************************************/
function verifStep(id){
  if(valeurGet(id) != ''){
	if(confirm("Les modifications n'ont pas été validées.\n Cliquez sur OK pour les insérer ou sur ANNULER pour continuer.")) {
      mySubmit("f");
    }else{
      valeur(id,'');
	    myReset("f");
    }
  }
}

/********************************************************
BUT : Création d'un popup

PARAMETRES : 
	> doc : document à afficher 
********************************************************/
function popup(doc){
	window.open(doc,"_blank");
}
/********************************************************
BUT : Vérification des champs avant soumition

PARAMETRES : 
	> doc : document à afficher 
********************************************************/
function verifFieldBeforeSubmit(ids){
  //alert(ids);
  tab = ids.split('+');
  var i = 0;
  var ok = true;
  while(tab[i] && tab[i] != ''){
		if(document.getElementById(tab[i])){
			document.getElementById(tab[i]).style.backgroundColor = "white";
			if(document.getElementById(tab[i]).value == ""){
				document.getElementById(tab[i]).style.backgroundColor = "red";
				ok = false;
			}
		}else{
			//alert(tab[i]);	
		}
		i++;
		
  }
  
  if(ok){
	  mySubmit('f'); 
  }else{
	  alert('Vérifiez chaque champs.\n Les champs au fond rouge sont vides.\n Pour pouvoir les insérer veuillez les remplir.')
  }
}


/********************************************************
BUT : Vérification du nombre de caracteres

PARAMETRES : 
	> id : document à afficher 
	> maxi : nb de caracteres maxi
********************************************************/
function maxlenght(id, maxi){
	document.getElementById(id).value = document.getElementById(id).value.substr(0,maxi);
}

/********************************************************
BUT : Compte le nombre de caracteres

PARAMETRES : 
	> id : id du contenant 
********************************************************/
function nbChar(id){
	return document.getElementById(id).value.lenght;
}

/////////////////////////////////////////////////////////

/********************************************************
BUT : Modifier la position vertical d'une balise (haut)

PARAMETRES : 
	> id : document à afficher 
	> nb : nb de pixels de déplacement
	> speed : vitesse
********************************************************/
function top(id,nb,speed){
	var top = document.getElementById(id).offsetTop;
	if((top)*-1 > 0){
		top += parseInt(nb);
		document.getElementById(id).style.top = top+"px";
		if(document.getElementById("mvtAgainTop").value == "yes"){
			setTimeout("top('"+id+"', '"+nb+"', '"+speed+"')",speed);
		}
	}
}

/********************************************************
BUT : Modifier la position vertical d'une balise (bas)

PARAMETRES : 
	> id : document à afficher 
	> nb : nb de pixels de déplacement
	> width : nb de caracteres maxi
	> ratio : nb multiplicateur pour determiner la position maximale
	> speed : vitesse
********************************************************/
function bottom(id,nb,height,speed){
	var top = document.getElementById(id).offsetTop;
	if((top)*-1 < height){
		top -= parseInt(nb);
		document.getElementById(id).style.top = top+"px";
		if(document.getElementById("mvtAgainBottom").value == "yes"){
	  	setTimeout("bottom('"+id+"', '"+nb+"', '"+height+"', '"+speed+"')",speed);
		}
	}
}

/********************************************************
BUT : Modifier la position horizontal d'une balise (gauche)

PARAMETRES : 
	> id : document à afficher 
	> nb : nb de pixels de déplacement
	> speed : vitesse
********************************************************/
function left(id,nb,speed){
	var left = document.getElementById(id).offsetLeft;
	if((left)*-1 > 0){
		left += parseInt(nb);
		document.getElementById(id).style.left = left+"px";
		if(document.getElementById("mvtAgainLeft").value == "yes"){
			setTimeout("left('"+id+"', '"+nb+"', '"+speed+"')",speed);
		}
	}
}

/********************************************************
BUT : Modifier la position horizontal d'une balise (gauche)

PARAMETRES : 
	> id : document à afficher 
	> nb : nb de pixels de déplacement
	> width : largeur maxi
	> speed : vitesse
********************************************************/
function right(id,nb,width,speed){
	var left = document.getElementById(id).offsetLeft;
	//alert((left)*-1+' < '+width);
	if((left)*-1 < width){
		left -= parseInt(nb);
		document.getElementById(id).style.left = left+"px";
		if(document.getElementById("mvtAgainRight").value == "yes"){
	  	setTimeout("right('"+id+"', '"+nb+"', '"+width+"', '"+speed+"')",speed);
		}
	}
}

/********************************************************
BUT : Modifier la position horizontal d'une balise (droite)

PARAMETRES : 
	> id : document à afficher 
	> width : largeur maxi
********************************************************/
function selectHeightPerChar(id,strsearch,ratio){
	var content = document.getElementById(id).innerHTML.toLowerCase();
	tab = content.split(strsearch);
  var nb = 0;
  while(tab[nb] && tab[nb] != ''){
		nb++;
  }
	nb--;
	var height = nb * ratio;
	return height
}

/********************************************************
BUT : Modifier la position horizontal d'une balise (droite)

PARAMETRES : 
	> id : document à afficher 
	> width : largeur maxi
********************************************************/
function placePictures(id,width){
	var left = (document.getElementById(id).offsetLeft)*-1;
	var ratio = Math.floor(left/width);
	var newLeft = width * ratio;
	document.getElementById(id).style.left = "-"+newLeft+"px";
}

/********************************************************
BUT : Modifier la position horizontal d'une balise (droite)

PARAMETRES : 
	> id : document à afficher 
	> width : largeur maxi
********************************************************/
function changePosition(id,top,left){
	document.getElementById(id).style.top = top+"px";
	document.getElementById(id).style.left = left+"px";
}

/********************************************************
BUT : Ajout d'un tag ouvrant et fermant autour d'une selection d'un textarea

PARAMETRES : 
	> tag : ouverture du tag
	> ftag : fermeture du tag
	> id : id du textaera
********************************************************/
function addTag(tag, ftag, id){
	var obj = document.getElementById(id), sel;
 	obj.focus();
 	if (document.selection && document.selection.createRange){//if ie
   	sel = document.selection.createRange();
   	if(sel.parentElement()==obj)//si sel est dans obj
			sel.text = tag+sel.text+ftag;
 	}else if(String(typeof obj.selectionStart)!="undefined"){
   	var longueur= parseInt(obj.textLength);
   	var selStart = obj.selectionStart;
   	var selEnd = obj.selectionEnd;
   	if(selEnd == 2 || selEnd == 1)selEnd = longueur;
   		obj.value = (obj.value).substring(0,selStart) +tag +(obj.value).substring(selStart,selEnd) +ftag +(obj.value).substring(selEnd,longueur);
 	}else{ 
 		obj.value+=Tag+fTag;
 	}
	obj.focus();
}