var	tBouton;
var	tLigne;
var	nbCrit;
var	tIndCrit;
var	nbObjet;
var	tIndObjet;
var	tObjetSet;
var	nbCol;
var	tTarif;
var	tEtat;
var	tVarEtat;

var currTarifs;

function initSIC(aTTarif)
{
	//	tBouton		= new Array("koSel", "ko", "neutre", "ok", "okSel");
	tBouton		= new Array("", "unactived", "", "inherent", "");
	
	currTarifs = new Array();
	
	var			noObjet;

	tLigne			= getTLigne();
	nbCrit			= tLigne.length;
	tIndCrit		= getTIndCrit();
	nbObjet			= tIndCrit.length - 1;
	tIndObjet		= new Array(nbCrit);
	noObjet			= 0;
	for (noCrit = 0; noCrit < nbCrit; noCrit++)
	{
		if (noCrit == tIndCrit [noObjet + 1])
		{
			noObjet++;
		}
		tIndObjet [noCrit]	= noObjet;
	}
	if (nbCrit > 0)
	{
		nbCol	= tLigne [0].length;
	}
	else
	{
		nbCol	= 0;
	}
	tTarif = aTTarif;
	tObjetSet	= new Array(nbObjet);
	tVarEtat	= new Array(nbCrit);
	tEtat		= new Array(nbCol);
	
	
	initConfig();
}




function initConfig()
{
	initTObjetSet();
	initTVarEtat();
	initTEtat();
	setBoutons();
	for (noCrit = 0; noCrit < nbCrit; noCrit++)
	{
		setTarif(noCrit);	
	}
}

function initTObjetSet()
{
	for (noObjet = 0; noObjet < nbObjet; noObjet++)
	{
		tObjetSet [noObjet]	= "";
	}
}

function initTVarEtat()
{
	for (noCrit = 0; noCrit < nbCrit; noCrit++)
	{
		tVarEtat [noCrit]	= 2;
	}
}

function initTEtat()
{
	for (noCol = 0; noCol < nbCol; noCol++)
	{
		tEtat [noCol]	= '1';
	}
}

function setBoutons()
{
	var	varEtat;
	for (noCrit = 0; noCrit < nbCrit; noCrit++)
	{
		varEtat	= tVarEtat [noCrit];
		swapImage(noCrit, tBouton [varEtat]);
		
		if(varEtat == 0 || varEtat == 2) {
			eval("document.getElementById('input" + noCrit + "').checked = false");
		}
		if(varEtat == 1 || varEtat == 3 || varEtat == 4) {
			eval("document.getElementById('input" + noCrit + "').checked = true");
		}
	}
}

function clicOnCritere(leNoCrit)
{
	var	varEtat;

	varEtat	= tVarEtat[leNoCrit];
	if ((varEtat == 0) || (varEtat == 2))
	{
		selectionCritere(leNoCrit);
	}
	else
	{
		if (varEtat == 4)
		{
			deselectionCritere(leNoCrit);
		}
	}
	//rangeComp.cars.updateCars(currTarifs);
}
function clicOnCritereBis(leNoCrit)
{
	var	varEtat;

	varEtat	= tVarEtat[leNoCrit];
	if ((varEtat == 0) || (varEtat == 2))
	{
		selectionCritere(leNoCrit);
	}
	else
	{
		if (varEtat == 4)
		{
			deselectionCritere(leNoCrit);
		}
	}
	rangeComp.cars.updateCars(currTarifs);
}

function selectionCritere(leNoCrit)
{
	var	noObjet;

	noObjet	= tIndObjet [leNoCrit];
	tObjetSet [noObjet]= leNoCrit;
	doResultat();
}

function deselectionCritere(leNoCrit)
{
	var	noObjet;

	noObjet	= tIndObjet [leNoCrit];
	tObjetSet [noObjet]= '';

	doResultat();
}

function doResultat()
{
	initTVarEtat();
	for (noObjetTraite = 0; noObjetTraite < nbObjet; noObjetTraite++)
	{
		if (tObjetSet [noObjetTraite] !== '')
	   	{
			initTEtat();
			for (noObjet = 0; noObjet < nbObjet; noObjet++)
			{
			   	if ((tObjetSet [noObjet] !== '') && (noObjet !== noObjetTraite))
			   	{
			   		setTEtat(tObjetSet [noObjet]);
			   	}
			}
			setTVarEtat(noObjetTraite);
		}
	}
	initTEtat();
	for (noObjet = 0; noObjet < nbObjet; noObjet++)
	{
		if (tObjetSet [noObjet] !== '')
		{
			setTEtat(tObjetSet [noObjet]);
		}
	}
	for (noObjetTraite = 0; noObjetTraite < nbObjet; noObjetTraite++)
	{
	   	// if (tObjetSet [noObjetTraite] == '') bug ! this returns true when tObjetSet [noObjetTraite] is 0
	   	if (tObjetSet [noObjetTraite].length == 0)
		{
			setTVarEtat(noObjetTraite);
		}
	}
	setBoutons();
}

function setTEtat(leNoCrit)
{
	var ligne;

	ligne	= tLigne [leNoCrit];
	for (noCol = 0; noCol < nbCol; noCol++)
	{
		if (ligne.charAt(noCol) == '0')
		{
			tEtat [noCol] = '0';
		}
	}
}

function setTVarEtat(leNoObjet)
{
	var	noCritDeb;
	var	noCritFin;
	var	siObjetSet;
	var	noObjet;
	var valeur;
	var siOk;
	var valeurTemp;

	noCritDeb		= tIndCrit [leNoObjet];
	noCritFin		= tIndCrit [leNoObjet + 1];

	siObjetSet		= (tObjetSet [leNoObjet] !== '');
	if (siObjetSet)
	{
		noCritSet	= tObjetSet [leNoObjet];
	}
	else
	{
		noCritSet	= -1;
	}

	for (noCrit = noCritDeb; noCrit < noCritFin; noCrit++)
	{
		valeur	= '';
		siOk	= true;
		for (noCol = 0; (noCol < nbCol) && siOk; noCol++)
		{
			if (tEtat [noCol] == '1')
			{
				valeurtemp	= tLigne [noCrit].charAt(noCol);
				if (valeur.length == 0)
				{
					valeur	= valeurtemp;
				}
				else
				{
					siOk	= (valeurtemp == valeur);
				}
			}
		}
		if (!siOk)
		{
			valeur		= '-';
		}
		if (valeur == '0')
		{
			tVarEtat [noCrit]= 1;
		}
		else
		{
			if (valeur == '1')
			{
				tVarEtat [noCrit]= 3;
			}
			else
			{
				if (siObjetSet)
				{
					if (noCrit == noCritSet)
					{
						tVarEtat [noCrit]= 4;
					}
					else
					{
						tVarEtat [noCrit]= 0;
					}
				}
			}
		}
		setTarif(noCrit);
	}
}

function swapImage(leNoCrit, leNomImage)
{
//	eval("document.i" + leNoCrit + ".src = '/img/sic/" + leNomImage + ".gif'");
	eval("document.getElementById('i" + leNoCrit + "').className = '" + leNomImage + "'");
}

function setTarif(leNoCrit)
{
	var		tarif;
	var		nbCar;

	if (tVarEtat [leNoCrit] == 1)
	{
		tarif	= "";
	}
	else
	{
		tarif	= getMatchingTarif(leNoCrit);
	}
	nbCar	= 7 - tarif.length;
	for (noCar = 0; noCar < nbCar; noCar++)
	{
		tarif	= " " + tarif;
	}
	currTarifs[leNoCrit] = getMatchingTarif(leNoCrit);
	eval("if(document.getElementById('t" + leNoCrit + "')) document.getElementById('t" + leNoCrit + "').value = '" + tarif + "'");
//	eval("document.Criteres.t" + leNoCrit + ".value = '" + tarif + "'");
}

// was : getTarifMini in v1, now has a more appropriate name
function getMatchingTarif(leNoCrit)
{
	var	ligne;
	var tablo=[];
	tTarif.each(function(elm,i){
		tablo[i]=elm.min;
	});
	var matching_tarifs = [];
	ligne			= tLigne [leNoCrit];
	for (noCol = 0; noCol < nbCol; noCol++)
	{
		if (tEtat [noCol] == '1')
		{
			if (ligne.charAt(noCol) == '1')
			{
				//return tTarif [noCol];
				matching_tarifs.push(tTarif [noCol]);
			}
		}
	}
	var abs_min = 1000000;
    var abs_max = -1000000;
    var min_price = 1000000;
    var found = false;
	var matching_tarif = {min:abs_min, max: abs_max, price : min_price, abovelimit : true};
	
	matching_tarifs.each(function(elm) {
		found = true;
        if (elm.min != -1 && elm.min < matching_tarif.min) {
			matching_tarif.min = elm.min;
			matching_tarif.fmtmin = elm.fmtmin;
		}
		if (elm.max != -1 && elm.max > matching_tarif.max) {
			matching_tarif.max = elm.max;
			matching_tarif.fmtmax = elm.fmtmax;
		}
		if (elm.price != 0  && elm.price < matching_tarif.price) {
			matching_tarif.price = elm.price;
			matching_tarif.fmtprice = elm.fmtprice;
            matching_tarif.abovelimit = elm.abovelimit;
		}/*
		if (exchangeRateDef.enabled){
			matching_tarif.priceSec = elm.priceSec;
		}*/
		
	});
	if (matching_tarif.min == abs_min) {
        matching_tarif.min = -1;
        matching_tarif.abovelimit = true;
    }
	return found ? matching_tarif : "";
}

function getVarEtat(leNoCrit)
{
	return tVarEtat [leNoCrit] - 2;
}

function showVarEtat(leNoCrit)
{
	alert("Tarif : " + currTarifs[leNoCrit] + " / Etat : " + getVarEtat(leNoCrit));
//	alert("Etat du critère " + leNoCrit + " : " + getVarEtat(leNoCrit));
}


function getTVarEtat(leNoObjet)
{
	var	noCritDeb;
	var	noCritFin;
	var	tVarEtatObjet;
		noCritDeb	= tIndCrit [leNoObjet];
	noCritFin	= tIndCrit [leNoObjet + 1];
	tVarEtatObjet	= new Array(noCritFin - noCritDeb);
	for (noCrit = noCritDeb; noCrit < noCritFin; noCrit++)
	{
		tVarEtatObjet [noCrit - noCritDeb]= tVarEtat [noCrit] - 2;
	}
	return tVarEtatObjet;
}

function showTVarEtat(leNoObjet)
{
	alert("Etat des critères de l'objet " + leNoObjet + " : " + getTVarEtat(leNoObjet));
}
function getImageShortName(leNoCrit)
{
	var	src;
	var	nbCar;
	var	noCarSlash;
	var	nomImage;

	eval("src	= document.Criteres.i" + leNoCrit + ".src;");
	nbCar		= src.length;
	for (noCar = 0; noCar < nbCar; noCar++)
	{
		if (src.charAt(noCar) == "/")
		{
			noCarSlash	= noCar;
		}
	}
	return src.substring(noCarSlash + 1, nbCar - 4);
}

