/*************************************************************
 *     Fonctions d'intégration SWF ==> JS <== HTML Signoo 
 * @author Yoann (Itheac)
*************************************************************/


/**
* Validation : affichage de la preview
* @motify 15/01/09 : ajout de la prévu gamme de motif : aff du premier motif de la gamme
**/
function valider() {
	
	var laform = document.formAjout;
	var texte_etiquette = parsertexteetiquette_de_form();
	if (laform.sticker_lettrage)
		var lapolice = recuperevalueselectionne_duneliste(laform.sticker_lettrage);
	var num_motif_fond;
	var num_motif_assortiment;
	var num_motif;

	num_motif_fond 		  = recuperevalueselectionne_duneliste(laform.sticker_fond);
	num_motif_assortiment =	laform.sticker_assortiment_elementaselectionner.value;
	
	
	//On utilise le motif de la gamme : premier motif de la gamme
	if ((num_motif_fond == null) && (num_motif_assortiment != null))
		num_motif = num_motif_assortiment;
	else if (num_motif_fond != null)	//On utilise un motif spécifique
		num_motif = num_motif_fond;
	
	
	var num_illustration = recuperevalueselectionne_duneliste(laform.sticker_illustration);
	
	modifier_texte(texte_etiquette,lapolice,laform.couleur_texte.value);;
	
	if (num_motif != "")
		modifier_motif(num_motif);
	//if (num_illustration != "")
		modifier_illustration(num_illustration);
}


/** 
 * Récupérer le code à afficher dans l'étiquette
 * On fait ce traitement dans une fonction pour gérer facilement le multiligne
 * @param [bool_lignesblanches] : Si == false (par défaut), on ne retourne pas les lignes non saisies comme lignes blanches, 
  * 							  Si == true, pour chaque ligne non saisie, on fait un retour ligne compatible flash (\r)
**/
function parsertexteetiquette_de_form(bool_lignesblanches) {
	var texte_etiquette = document.getElementsByName("texte_etiquette[]");		
	var retour = "";
	var code_retour_ligne = "\r"; 
	var tab_etiquette = new Array();		
	var sortie=false;
	
	//Par défaut, on ne tient pas compte des lignes blanches à la fin de la saisie
	if (!bool_lignesblanches) bool_lignesblanches = false;	
	
	
	//Passage du texte de l'étiquette dans un tableau
	for(i = 0; i < texte_etiquette.length; i++)
		tab_etiquette[i] = texte_etiquette[i].value; // + code_retour_ligne;
	
	
	//Parcours pour suppression des lignes blanches de fin
	if (!bool_lignesblanches)
	while (!sortie) {
		pos_dernier = tab_etiquette.length - 1;
		cur_element = tab_etiquette[pos_dernier];
		if (cur_element == '')
			tab_etiquette.splice(pos_dernier,1);
		else 
			sortie = true;
	}
	
	for(i = 0; i < tab_etiquette.length; i++)
		retour += tab_etiquette[i] + code_retour_ligne;
		
	return retour;
	
}

/**
 * Modification du texte de l'étiquette
**/
function modifier_texte(str, police, couleur) {
  if (document.getElementById("id_flash") !== null)
	  document.getElementById("id_flash").modifier_texte(str, police, couleur);
}	
/**
 * Modification de l'illustration de l'étiquette
**/
function modifier_illustration(str) {
  if (document.getElementById("id_flash") !== null)	
	document.getElementById("id_flash").modifier_illustration(str);
}
/**
 * Modification du motif de l'étiquette
**/
function modifier_motif(str) {
  if (document.getElementById("id_flash") !== null)	
	  document.getElementById("id_flash").modifier_motif(str);
}	




/** 
 * Récupère la valeur sélectionnée d'une liste
 * @author Yoann
 * @modify 11/01/09
**/
function recuperevalueselectionne_duneliste(laliste) {
	if(laliste)
	for(i = 0; i < laliste.length; i++)
	if (laliste[i].checked)
		return laliste[i].value;
	return null;
}






/**
 * Sélectionner un élément : changer le style
 * Dirty : ElementASelectionner peut être null si on veut remettre à 0 l'affichage
 * @param ElementASelectionner : radio, div ou img de l'élément à sélectionner
 * @param classedebase :  classe de base d'un élément (class de chaque div du menu)
**/
function selectionner_element(ElementASelectionner, classedebase) {

	var classeselectionnee = 'celulle_over';
	if (ElementASelectionner != null)
		var type_elementaselectionner = ElementASelectionner.tagName.toLowerCase();
		
	var leselements = getElementsByClassName(classedebase);
		
	//
	// Ciblage de l'élément
	//
	//Si l'élément qui appelle (celui sur lequel on a cliqué) est un radio, on doit cibler le div qui contient celui-ci
	if (ElementASelectionner != null)
	if (type_elementaselectionner === 'input')
	if (ElementASelectionner.type)
	if (ElementASelectionner.type == 'radio')
		ElementASelectionner = ElementASelectionner.parentNode;	
	//Si l'élément qui appelle est une image, on doit cibler, la aussi le div qui contient celui-ci
	if (type_elementaselectionner === 'img')
		ElementASelectionner = ElementASelectionner.parentNode;
	
	//
	// Modification des classnames
	//	
	//Désélection de tous les éléments
	for(i = 0; i < leselements.length; i++)
		leselements[i].className = classedebase;	
	
	//Définition de la classe de l'élément sélectionné
	if (ElementASelectionner != null)
		ElementASelectionner.className = classedebase + " " + classeselectionnee;
	
	
	//
	// Sélection des radios
	//
	//Sélectionner le radio si on a cliqué sur le div ou sur l'img
	//On récupère la liste des éléments contenus dans l'élément sélectionné
	if (ElementASelectionner != null) {
		var node_list = ElementASelectionner.getElementsByTagName('input');	
		//Normalement on n'a qu'un seul élément, on vérifie quand meme le type :-)
		if (node_list[0].type == 'radio')	
			node_list[0].checked = true;
	}
}






/**
 * Récupérer une liste d'éléments d'une classe
**/
function getElementsByClassName (className) {
 var classes = className.split(" ");
 var classesToCheck = "";
 var returnElements = [];
 var match, node, elements;
 
 if (document.evaluate) {    
 var xhtmlNamespace = "http://www.w3.org/1999/xhtml";
 var namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace:null;
 
 for(var j=0, jl=classes.length; j<jl;j+=1)
  classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]"; 
  
  try {
   elements = document.evaluate(".//*" + classesToCheck, document, namespaceResolver, 0, null);
  } catch(e) {
   elements = document.evaluate(".//*" + classesToCheck, document, null, 0, null);
  }
  
  while ((match = elements.iterateNext()))
   returnElements.push(match);
 } else {
  classesToCheck = [];
  elements = (document.all) ? document.all : document.getElementsByTagName("*");
 
  for (var k=0, kl=classes.length; k<kl; k+=1)
   classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
 
  for (var l=0, ll=elements.length; l<ll;l+=1) {
   node = elements[l];
   match = false;
   for (var m=0, ml=classesToCheck.length; m<ml; m+=1) {
    match = classesToCheck[m].test(node.className);
    if (!match) break;
   }
   if (match) returnElements.push(node);
  } 
 }
 return returnElements;
}

/**
 * Retourner la ref d'un item d'une liste (de boutons radio par exemple, en se basant sur la value
 * @create 01/03/2010
 * @author Yoann (eka808) 
 * @param liste_a_selectionner : la liste ou l'on fait la sélection
 * @param str_element_a_selectionner : (string) de l'élément à sélectionner ou null si on veut désélectionner toute la liste
 * @return item de liste
**/
function getrefdansliste_fromvalue(liste_a_selectionner, str_element_a_selectionner) {
	//On parcourt la liste
	for(i = 0; i < liste_a_selectionner.length; i++)
	if (liste_a_selectionner[i].value.toLowerCase() == str_element_a_selectionner.toLowerCase())
		return liste_a_selectionner[i];
}

/**
 * Retourner la référence sur un élément en indiquant 
 * - son nom (balise name html) 
 * - le node conteneur de celui-ci (réfence d'objet)
 * @create 03/03/2010
 * @author Yoann
 * @thx to http://answers.yahoo.com/question/index?qid=20080917132933AAnmXMb
**/
function getelementbyname_in_node(nom_element, node_conteneur) {
	var node_childs = node_conteneur.childNodes;
	
	for(var i = 0; i < node_childs.length; i++)
	if(node_childs.item(i).name == nom_element)
		return node_childs.item(i);
	return false;
}
