var produits=new Array();
var liens=new Array();
var listes=new Array();
var groups=new Array();
var bFiche=true;
var monnaie="&euro;";

var url_dossier_image='';

function getFormElementById(formname,id_element) {
	aForm=document.getElementById(formname);
	if (aForm) {
		for(i=1;i<aForm.elements.length;i++) {
			if (aForm.elements[i].name==id_element) return aForm.elements[i];
		}
	}
	return null;	
}

function setMonnaie(sigle){
	monnaie=sigle;
}

/*
// OBSOLETE:
function Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,description,designation,reference) {
	this._init_produit=_init_produit;
	this._init_produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,0,0,description,designation,reference,0,0);
}

// OBSOLETE: permet de garder la compatiblité avec les anciens themes (cad autre que normal_fr)
function Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,description,designation,reference,id_leader,id_group) {
	this._init_produit=_init_produit;
	this._init_produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,0,0,description,designation,reference,id_leader,id_group);
}
*/
function Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference) {
	this._init_produit=_init_produit;
	this._init_produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,0,0);
}

function Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,id_leader,id_group) {
	this._init_produit=_init_produit;
	this._init_produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,id_leader,id_group);
}

function _init_produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,id_leader,id_group) {
	this._init_produit=_init_produit;
	this.id_produit=id_produit;
	this.image=image;
	this.miniature=miniature;
	this.secondaire=secondaire;
	if (url_dossier_image!='') {
		if (image.substr(0,4)!='http') this.image=url_dossier_image+this.image;
		if (miniature.substr(0,4)!='http') this.miniature=url_dossier_image+this.miniature;
		if (secondaire.substr(0,4)!='http') this.secondaire=url_dossier_image+this.secondaire;
	}
	this.prix_ht=prix_ht;
	this.prix_ttc=prix_ttc;
	this.prix_ancienht=prix_ancienht;
	this.prix_ancienttc=prix_ancienttc;
	this.description=description;
	this.designation=designation;
	this.reference=reference;

	this.id_leader=id_leader;
	this.id_group=id_group;
	if ((id_group>0) && (id_leader>0)) addGroup(id_group,id_leader);
	
}

function Group(id_group,id_leader) {
	this.id_group=id_group;
	this.id_leader=id_leader;
}

function addGroup(id_group,id_leader) {
	bFind=false;
	for(i=0;i<groups.length;i++) {
		if (groups[i].id_group==id_group) { bFind=true; break; } 
	}
	if (bFind==false) groups[groups.length]=new Group(id_group,id_leader);
}

function findGroupByID(id_group) {
	for(i=0;i<groups.length;i++) {
		if (groups[i].id_group==id_group) return groups[i];
	}
	return false;
}

function findProduitById(id_produit) {
	for(i=0;i<=produits.length;i++) {
		if (produits[i].id_produit==id_produit) return produits[i];
	}
	return false;
}

function findLienByProduit(id_produit) {
	for(i=0;i<liens.length;i++) {
		if (liens[i].id_produit==id_produit) return liens[i];
	}
	return false;
}

function findProduitsByGroup(id_group) {
	desProducts=new Array();
	for(f=0;f<produits.length;f++) {
		if (produits[f].id_group==id_group) desProducts[desProducts.length]=produits[f];
	}
	return desProducts;
}

function findLiensByGroup(id_group) {
	desLiens=new Array();
	desProduits=findProduitsByGroup(id_group);
	for(c=0;c<desProduits.length;c++) {
		desLiens[desLiens.length]=findLienByProduit(desProduits[c].id_produit);
	}
	return desLiens;
}

// renvoi 1 produit pour chaque valeur distinct du critere (partique pour gerer des criteres visuels sur image timbre (ex: les coloris))
function getProduitByTypeCritere(id_type_critere) {
	desProducts=new Array();
	
	for(a=0;a<listes.length;a++) { // parcours des types de criteres pour trouver la liste de critere a parcourir
		if (listes[a].id_typecritere==id_type_critere) { // le type de critere est trouvé		
			for(b=0;b<listes[a].ids_criteres.length;b++) { // parcour de chaque critere
				id_critere=listes[a].ids_criteres[b];
				id_produit=false;
				for(c=0;c<liens.length;c++) { // trouvons un produit associés au critere 					
					for(d=0;d<liens[c].ids_criteres.length;d++) {
						//alert(liens[c].ids_criteres[d]+' et '+id_critere);
						if (liens[c].ids_criteres[d]==id_critere) { // le produit est trouve
							id_produit=liens[c].id_produit;
							break;
						}
					}
					if (id_produit!=false) break;
				}
				if (id_produit!=false) { // on ajoute le produit
					desProducts[desProducts.length]=findProduitById(id_produit);
				}
			}
			break;
		}
	}
	return desProducts;
}

function Lien(id_produit,ids_criteres) {
	this.id_produit=id_produit;
	this.ids_criteres=ids_criteres;
}

function ListeCritere(id_group,id_typecritere,ids_criteres) {
	this.id_group=id_group;
	this.id_typecritere=id_typecritere;
	this.ids_criteres=ids_criteres;
}

function setListesByProduit(id_produit,bLien) {
	unProduit=findProduitById(id_produit);
	if (unProduit!=false) {
		_afficherProduit(unProduit);
		if (bLien==true) {
			aLien=findLienByProduit(id_produit);
			if (aLien!=false) _setSelectByLien(unProduit.id_group,aLien);
		} else {
			_setSelectByProduit(unProduit);
		}
	}
}

function setListesByGroup(bLien) {
	for(a=0;a<groups.length;a++) {
		setListesByProduit(groups[a].id_leader,bLien);
	}
}

function changerCritere(id_group,id_typecritere) {
	objSelect=document.getElementById("id_produit_"+id_group+"_select_"+id_typecritere);
	old_index=objSelect.selectedIndex;
	aLien=getLienFromSelect(id_group);
	if (aLien==false) {
		aLien=getRandomLien(id_group,id_typecritere);
	}
	if (aLien!=false) {
		unProduit=findProduitById(aLien.id_produit);
		if (unProduit!=false) {		
			_afficherProduit(unProduit);
			//aLien=findLienByProduit(id_produit);			
			_setSelectByLien(unProduit.id_group,aLien);		
		} else {
			alert('Mauvaise combinaison de critere');
		}
	}
}

function changerProduit(id_produit,id_liste) {
	objSelect=document.getElementById("id_produit_"+id_produit+"_select_"+id_liste);
	id_produit=objSelect.options[objSelect.selectedIndex].value;
	unProduit=findProduitById(id_produit);
	if (unProduit!=false) {
		_afficherProduit(unProduit);
	}
}

function getRandomLien(id_group,id_typecritere) {
	objSelect=document.getElementById("id_produit_"+id_group+"_select_"+id_typecritere);
	id_critere=objSelect.options[objSelect.selectedIndex].value;
	
	liensgroup=findLiensByGroup(id_group);
	
	for(i=0;i<liensgroup.length;i++) {
		unLien=liensgroup[i];
		for(k=0;k<unLien.ids_criteres.length;k++) {
			if (id_critere==unLien.ids_criteres[k]) {
				return unLien;
			}
		}
	}
	if (liensgroup.length>0) return liensgroup[0];
	return false;
}

function _getListeFromGroup(id_group) {
	listesDuGroup=new Array();

	for(a=0;a<listes.length;a++) {
		if (listes[a].id_group==id_group) listesDuGroup[listesDuGroup.length]=listes[a];
	}

	return listesDuGroup;
}

function getLienFromSelect(id_group) {
	ids_critere=new Array();
	listeGroup=_getListeFromGroup(id_group);
	
	for(i=0;i<listeGroup.length;i++) {
		uneListe=listeGroup[i];
		objSelect=document.getElementById("id_produit_"+id_group+"_select_"+uneListe.id_typecritere);
		if (objSelect!=null) ids_critere[ids_critere.length]=objSelect.options[objSelect.selectedIndex].value;
		else ids_critere[ids_critere.length]=0;//gerer le cas ou il n'y a pas la liste. J. Chalendard 
	}

	liensgroup=findLiensByGroup(id_group);

	for(i=0;i<liensgroup.length;i++) {
		unLien=liensgroup[i];
		for(j=0;j<ids_critere.length;j++) {
			bFind=false;		
			for(k=0;k<unLien.ids_criteres.length;k++) {
				if (ids_critere[j]==unLien.ids_criteres[k]) {
					bFind=true;
				}			
			}
			if (ids_critere[j]==0) bFind=true;//gerer le cas ou il n'y a pas la liste. J. Chalendard, cela fonctionne comme si on avait une liste a un seul choix (attention si il existe une liste a plusieurs choix qui n'est pas dans le modèle
			if (bFind==false) break;			
		}
		
		if (bFind==true) return unLien;
	}
	return false;
}

function _setSelectByLien(id_group,aLien) {
	for(i=0;i<listes.length;i++) {
		uneListeCritere=listes[i];
		for(j=0;j<uneListeCritere.ids_criteres.length;j++) {
			id=uneListeCritere.ids_criteres[j];
			for(k=0;k<aLien.ids_criteres.length;k++) {
				if (aLien.ids_criteres[k]==id) {
					selectCritereByID(id_group,uneListeCritere.id_typecritere,id);
					break;
				}
			}
		}
	}
}

function _setSelectByProduit(aProduit) {
	fin=aProduit.id_produit;
	if (aProduit.id_group!=0) {
		aGroup=findGroupByID(aProduit.id_group);
		if (aGroup!=false) fin=aGroup.id_group;
	}
	objSelect=document.getElementById("id_produit_"+fin+"_select_"+fin);
	if (objSelect!=null) {
		for(i=0;i<objSelect.options.length;i++) {
			if (objSelect.options[i].value==aProduit.id_produit) {
				objSelect.selectedIndex=i;
				return;
			}
		}
	}
	return false;
}


function selectCritereByID(id_group,id_typecritere,id_critere) {
	if (document.getElementById("id_produit_"+id_group+"_select_"+id_typecritere)) {
		objSelect=document.getElementById("id_produit_"+id_group+"_select_"+id_typecritere);
		for(_i1_=0;_i1_<objSelect.options.length;_i1_++) {
			if (objSelect.options[_i1_].value==id_critere) {
				objSelect.selectedIndex=_i1_;
				break;
			}
		}
	}
}


function _afficherProduit(leproduit) {
	var fin='';
	var contenu='';
	if (this.bFiche==true) {
		aForm=document.getElementById("form_produit");
		if (aForm.elements["idProduit"]) aForm.elements["idProduit"].value=leproduit.id_produit;
		
	} else { // MAJ du champ idProduit dans le cas d'une liste de produit
		fin='_'+leproduit.id_group;
		if (document.getElementById("__idc_produit_"+leproduit.id_group)) {
			aForm=document.getElementById("__idc_produit_"+leproduit.id_group); // recuperation du formulaire
			for(i=0;i<aForm.elements.length;i++) {
				aField=aForm.elements[i];
				if (aField.name=='idProduit') {
					aField.value=leproduit.id_produit;
					break;
				}
			}
		}
	}
	if (document.getElementById("idc_reference_ficheproduit"+fin)) document.getElementById("idc_reference_ficheproduit"+fin).innerHTML=leproduit.reference;
	if (document.getElementById("idc_designation_ficheproduit"+fin)) document.getElementById("idc_designation_ficheproduit"+fin).innerHTML=leproduit.designation;
	if (document.getElementById("idc_description_ficheproduit"+fin)) document.getElementById("idc_description_ficheproduit"+fin).innerHTML=leproduit.description;
	if (document.getElementById("idc_PU"+fin)) {
		document.getElementById("idc_PU"+fin).innerHTML=leproduit.prix_ttc;
		if (document.getElementById("idc_quantite"+fin) && document.getElementById("idc_PUTTCTOTAL"+fin)) { 
			total=Math.round( (leproduit.prix_ttc*document.getElementById("idc_quantite"+fin).value*100) )/100;	
			total=total.toFixed(2);
			document.getElementById("idc_PUTTCTOTAL"+fin).innerHTML=total; }
	}
	if (document.getElementById("idc_PUHT"+fin)) { 
		document.getElementById("idc_PUHT"+fin).innerHTML=leproduit.prix_ht;
		if (document.getElementById("idc_quantite"+fin) && document.getElementById("idc_PUTOTAL"+fin)) { 
			total=Math.round( (leproduit.prix_ht*document.getElementById("idc_quantite"+fin).value*100) )/100;
			total=total.toFixed(2);
			document.getElementById("idc_PUTOTAL"+fin).innerHTML=total; }
	}
	if (document.getElementById("idc_PUANCIENTTC"+fin)) {
		contenu='';
		if ((leproduit.prix_ancienttc!=leproduit.prix_ttc)&&(leproduit.prix_ancienttc!=0)) {
			contenu=leproduit.prix_ancienttc+monnaie;
		}
		document.getElementById("idc_PUANCIENTTC"+fin).innerHTML=contenu;
	}
	if (document.getElementById("idc_PUANCIENHT"+fin)) {
		contenu='';
		if (leproduit.prix_ancienht!=leproduit.prix_ht) {
			contenu=leproduit.prix_ancienht;			
		}
		document.getElementById("idc_PUANCIENHT"+fin).innerHTML=contenu;
	}
	if (document.getElementById("idc_image_ficheproduit"+fin)) {
		if (document.getElementById("idc_image_ficheproduit"+fin).src) document.getElementById("idc_image_ficheproduit"+fin).src=leproduit.image;
		if (document.getElementById("idc_image_ficheproduit"+fin).innerHTML) {
			baliseA='';
			if (leproduit.secondaire!='') baliseA='<a href="javascript:popupImageWindow(\''+leproduit.secondaire+'\',700,500)">';			
			contentImage=baliseA+'<img class="VPhoto" src="'+leproduit.image+'" alt="" border="0" />';
			if (baliseA!='') contentImage+='</a>';
			document.getElementById("idc_image_ficheproduit"+fin).innerHTML=contentImage;
		}
	}
	if (document.getElementById("idc_image_timbre"+fin)) {
		if (document.getElementById("idc_image_timbre"+fin).src) document.getElementById("idc_image_timbre"+fin).src=leproduit.miniature;
		if (document.getElementById("idc_image_timbre"+fin).innerHTML) {
			baliseA='';
			if (leproduit.secondaire!='') baliseA='<a href="javascript:popupImageWindow(\''+leproduit.secondaire+'\',700,500)">';			
			contentImage=baliseA+'<img class="VPhoto" src="'+leproduit.miniature+'" alt="" border="0" />';
			if (baliseA!='') contentImage+='</a>';
			document.getElementById("idc_image_timbre"+fin).innerHTML=contentImage;
		}
	}
	
}

// appeler cette fonction pour changer tous les champs avec le produit (typiquement cette fonction est a appeler 
// lors d'une modification du champs quantite <input type="text" value="idc_quantite" onChange="myChangerProduit(0).... 
// en entree: l'identifiant du produit ou la valeur 0: dans le cas de la valeur 0 c'est l'identifiant du champ idProduit qui est pris en compte
function myChangerProduit(id_produit) {
	if (id_produit==0) id_produit=document.getElementById("idProduit").value;
	unProduit=findProduitById(id_produit);
	if (unProduit!=false) {
		_afficherProduit(unProduit);
		setListesByProduit(id_produit,true);
	}
}

function c(id_group,id_typecritere,ids_criteres) {
	listes[listes.length]=new ListeCritere(id_group,id_typecritere,ids_criteres);
}

function l(id_produit,ids_criteres) {
	liens[liens.length]=new Lien(id_produit,ids_criteres);
}

function p(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference) {
	produits[produits.length]=new Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference);
}

function p(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,id_leader,id_group) {
	produits[produits.length]=new Produit(id_produit,image,miniature,secondaire,prix_ht,prix_ttc,prix_ancienht,prix_ancienttc,description,designation,reference,id_leader,id_group);
}