// Property of SolidCreativity
// If you choose to use part of this code or data, thank you to quote www.TRIZ40.com and www.SolidCreativity.com
// Propriété de SolidCreativity
// Si vous utilisez une partie de ce code ou des données associées, merci de citer www.TRIZ40.com et SolidCreativity.com

var tip; // le numéro, global, du commentaire
var chaine=""; // la chaine, globale, que l'on construit
function  getPtrPrincipes(_row,_col)
{
var v0=new Array(41,0); // on pointe sur ce tableau qd le cas n'est pas prévu dans la matrice
var v1=new Array(42,0); // quand on est sur une diagonale
var v2=new Array(43,0); // quand au moins un élément n'est pas sélectionné
var str = "";
var _v;
	_row = parseInt(_row);
	_col = parseInt(_col);
	// return transform(_xml,"extract.xsl",new Array(new Array("r",_row),new Array("c",_col)));
	if((_row==_col) &&_col!=0)
		_v=v1; // diagonale
	else if((_row>0) && (_col>0))
	{
		var _v = matrice_triz[_row-1][_col-1];
			if(_v[0]<0)
				_v = v0; // tableau 'pas de principe possible'
	}			
	else
		_v = v2; // mal sélectionné
/*  v pointe sur le principe 
	for(i=0;i<_v.length-1;i++)
	{
		str += " " + _v[i];
	}
*/
	return _v;
}

/* Affiche le principie pr dans un cadre, avec des bulles aide pour les exemples */
// mettre tip à 0 si appelé seul (hors boucle)
function addPrincipeCadre(_pr,_lan)
{
var i,l,j,ll,p1,p2,t;
	p1=principe_triz[_lan][_pr-1];
	l=p1.length-1;

	chaine+=('<table width="100%" border="1" cellspacing="0"><tr><td class="princip"><div><strong>');	
	chaine+=(p1[0]); // principe
	chaine+=('</strong></div>');

	for(i=0;i<l;i++)
	{
		p2=p2=principe_triz[_lan][_pr-1][i+1];
/* option 1
		chaine+=('<li><a href="#" onMouseOver="bullepop(');
		t="tip_"+(++tip);
		chaine+=("'"+t+"'");
		chaine+=(',event)"');
		chaine+=(' onMouseOut="couic()" onClick="return false">');
		chaine+=(p2[0]); //exemple
		chaine+=('</a></li>');
	 
		ll=p2.length;
		if(_lan==1)
			chaine+=('<div class="sbulle" id="tip_'+tip+'" style="width:300px; height:60px;">Exemple :');
		else if(_lan==2)
			chaine+=('<div class="sbulle" id="tip_'+tip+'" style="width:300px; height:60px;">Beispiel:');
		else
			chaine+=('<div class="sbulle" id="tip_'+tip+'" style="width:300px; height:60px;">E.g.');

		for(j=1;j<ll;j++)
		{
			chaine+=('<br>'+p2[j]); // applications
		}
		chaine+=('</div>');
 fin option 1 */
 		
// Option 2
		chaine+=("<li><a href='#' onMouseOver='montre(");
		chaine+='"';
		ll=p2.length;
		if(_lan==1)
			chaine+='Exemple :';
		else if(_lan==2)
			chaine+='Beispiel:';
		else
			chaine+='E.g.';
		for(jj=1;jj<ll;jj++)

		{
			chaine+='<br>';
			chaine+=p2[jj]; // applications
		}
		chaine+='")';
		chaine+=("' onMouseOut='cache()' onClick='return false'>");
		
		// test de remplacement
		//chaine+=("<li><a href='#' onMouseOver='montre(");
		//chaine+='"test")';
		//chaine+=("' onMouseOut='cache()' onClick='return false'>");		
		
		
		chaine+=(p2[0]); //exemple
		chaine+=('</a></li>');
		
// fin option 2		
	}
	chaine+=('</tr></table>');
// alert(chaine);
}

var tableUsePrincipe=new Array();
function initUsePrincipe()
{
var col,lig,l,i,pr,v,val;
	for (i=0;i<40;i++)
	{
		tableUsePrincipe[i]=new Array();
	}
	for (col=0;col<39;col++)
	{
		for(lig=0;lig<39;lig++)
		{

			v = matrice_triz[col][lig];
			l=v.length-1;
			for(i=0;i<l;i++)
			{
				val=v[i];
				if(val!=(-1))
				{
					tableUsePrincipe[val-1].push(col+1,lig+1);
				}
			}
		}
	}
}

function bp(_a,evt)
{
	bullepop(_a,evt);
}

function affUsePrincipe(_pr,_lan)
{
var v,i,j,l,col,lig,t,c;
var chaine="";
	if(_lan==1)
		document.write('<table class="princip3" width="100%" border="0" cellspacing="0"><tr><td  colspan="30"><strong><font size="-1">Ce principe est suggéré pour résoudre ces contradictions :</font></strong><br></td></tr><tr>');
	else if(_lan==2)
		document.write('<table class="princip3" width="100%" border="0" cellspacing="0"><tr><td  colspan="30"><strong><font size="-1">Dieser Grundsatz wird vorgeschlagen, um diese Widersprüche:</font></strong><br></td></tr><tr>');
	else
		document.write('<table class="princip3" width="100%" border="0" cellspacing="0"><tr><td  colspan="30"><strong><font size="-1">This principle is proposed to solve the following contradictions:</font></strong><br></td></tr><tr>');		
/*	for (col=0;col<39;col++)
	{
		for(lig=0;lig<39;lig++)
		{
			v = matrice_triz[col][lig];
			l=v.length-1;
			for(i=0;i<l;i++)
			{
				if(v[i]==_pr)
				{
					t="tip_"+(1+col);
					chaine+='<a href="#" onMouseOver="bullepop(';
					chaine+="'"+t+"'";
					chaine+=(',event)" onMouseOut="couic()" onClick="return false">'+(1+col)+'</a>/<a href="#" onMouseOver="bullepop(');
					t="tip_"+(1+lig);
					chaine+="'"+t+"'";
					chaine+=(',event)" onMouseOut="couic()" onClick="return false">'+(1+lig)+'</a> - ');
				}
			}
		}
		document.write(chaine);
		chaine="";
	}
*/
			c=0;
			v = tableUsePrincipe[_pr-1];
			l=v.length;
			for(i=0;i<l;i+=2)
			{
					col=v[i];
					lig=v[i+1];
					t="tip_"+(col);
					chaine+='<td><a href="#" onMouseOver="bp(';
					chaine+="'"+t+"'";
					chaine+=',event)"  >'+(col)+'</a>/<a href="#" onMouseOver="bp(';
					t="tip_"+(lig);
					chaine+="'"+t+"'";
					chaine+=',event)"  ><font color="#bb0000">'+(lig)+'</font></a></td>';
					if(++c==30){
						chaine+="</tr><tr>";
						c=0;
					}
		document.write(chaine);
		chaine="";
		}
	document.write('</tr></table><br>');
}
document.onmouseout=couic; // pourquoi là???

function cc()
{
	couic();
}
/* Affiche le principie pr en développé */
// mettre tip à 0 si appelé seul (hors boucle)
function affPrincipePage(_pr,_lan)
{
var i,l,j,ll,p1,p2;
	p1=principe_triz[_lan][_pr-1];
	l=p1.length-1;
	document.write('<div><strong><font size="+1">');	
	document.write(p1[0]); // principe
	document.write('</font></strong>');

	for(i=0;i<l;i++)
	{
		p2=p2=principe_triz[_lan][_pr-1][i+1];

		document.write('<br><strong>');
		document.write(p2[0]); //exemple
		document.write('</strong>');
	
		ll=p2.length;
		for(j=1;j<ll;j++)
		{
			document.write('<font size="-1">');	
			document.write('<br>- '+p2[j]); // applications
			document.write('</font>');	
		}
	}
	document.write('</div>');
	affUsePrincipe(_pr,_lan);
}
/* Affiche les principes pointés par _ptr sous forme de cadre */
function addPrincipesCadre(_pt,_lan)
{
var i,l;
	l=_pt.length-1;
	for(i=0;i<l;i++)
	{
		addPrincipeCadre(_pt[i],_lan);
	}
}

/* Affiche la matrice */
function affMatri(_lan)
{
var str,t;
document.write('<tr align=center><td>&nbsp;</td>');
	for (i=0;i<39;i++)
		document.write('<td>'+(i+1)+'</td>');
	document.write('</tr>');
	for (col=0;col<39;col++)
	{
	if (_lan==2)
		document.write('<tr><td width="120">'+tableFeatures[2][col]+'</td>');
	else
		document.write('<tr><td>'+tableFeatures[_lan][col]+'</td>');
		for(lig=0;lig<39;lig++)
		{
			document.write('<td align=center>');
			v = matrice_triz[col][lig];
			if (col==lig)
				str="*";
			else if (v[0]==-1)
				str="-";
			else
			{
				str = "";
				for(i=0;i<v.length-1;i++)
				{
					str += ' <a href="#" onMouseOver="bullepop(';
					t= "tip_"+v[i];
					str += "'"+t+"'";
					str += (',event)" onMouseOut="couic()" onClick="return false">'+ v[i]+'</a>');
					if(i==1)
						str += "<br>";
				}
			}
			document.write(str);
			document.write("<br></td>");
		}	
	document.write('</tr>');
	}
	document.write('</table></td></tr>  </table></font>');
}

function affMatrix()
{
	prepPassOverPrinciples();
	document.write('<table  border="1" ><tr><td></td><td><div align="center">- W o r s e n i n g <font color="#FFFFFF">-</font> F e a t u r e -</div></td></tr><tr><td><div align="center">I<br> m<br> p<br> r<br> o<br> v<br> i<br> n<br> g<br> <br> F<br> e<br> a<br> t<br> u<br> r<br> e<br> </div></td> <td><table class="principes40" width="1200" border="1" align="left" cellspacing="0">');	
	affMatri(0);
}

function affMatrice()
{
	prepPassOverPrincipes();
	document.write('<table  border="1" ><tr><td></td><td><div align="center">C a r a c t é r i s t i q u e  <font color="#FFFFFF">-</font>  à  <font color="#FFFFFF">-</font>  P r é s e r v e r</div></td></tr><tr><td><div align="center">C<br> a<br> r<br> a<br> c<br> t<br> é<br> r<br> i<br> s<br> t<br> i<br> q<br> u<br> e<br> <br> à<br>  <br> A<br> m<br> é<br> l<br> i<br> o<br> r<br> e<br> r<br></div></td> <td><table class="principes40" width="1200" border="1" align="left" cellspacing="0">');	
	affMatri(1);
}

function affTabelle()
{
	prepPassOverPrinzipien();
	document.write('<table  border="1" ><tr><td></td><td><div align="center">V e r b e s s e r b a r e <font color="#FFFFFF">-</font> P a r a m e t e r</div></td></tr><tr><td><div align="center">Z<br>u<br><br> v<br>e<br>r<br>b<br>e<br>s<br>s<br>e<br>r<br>n<br>d<br>e<br><br> P<br>a<br>r<br>a<br>m<br>e<br>t<br>e<br>r<br></div></td> <td><table class="principes40" width="1200" border="1" align="left" cellspacing="0">');	
	affMatri(2);
}
// pour écrire ds iframe
function divWrite(_id,_text)
{
	obj = document.getElementById(_id);
	obj.innerHTML=_text; // Attention, cela ne fonctionne pas avec tous les browsers! A peaufiner.
}

function solveContradiction(_row,_col,_lan)
{
var pt;
tip=0; //Variable globale init
	pt=getPtrPrincipes(_row,_col);
	if(_lan==1)
	{
		chaine=('<br><strong>La Matrice TRIZ propose les Principes suivants pour résoudre cette Contradiction :</strong><br>Améliorer <b>'); // initialise la var globale
		chaine += tableFeatures[_lan][_row-1];
		chaine += '</b> sans détériorer <b>';
		chaine += tableFeatures[_lan][_col-1];
		chaine += '</b :>';
	}
	else if(_lan==2)
		chaine=('<br><strong>In der TRIZ Tabelle nachsehen:</strong>'); // initialise la var globale
	else 
{
		chaine=('<br><strong>The TRIZ Matrix proposes the following Principles to solve this contradiction:</strong><br>Improving <b>'); // initialise la var globale
		chaine += tableFeatures[_lan][_row-1];
		chaine += '</b> without damaging <b>';
		chaine += tableFeatures[_lan][_col-1];
		chaine += '</b :>';
	}
	
	addPrincipesCadre(pt,_lan);
	if(_lan==1)
		chaine+='<div align="right"> <font size="-2">Info : Passez la souris sur les résultats pour voir des exemples concrets.</font> </div>';
	else if(_lan==2)
		chaine+='<div align="right"> <font size="-2">Tip : Mit der Maus über die Ergebnisse gehen, um durch konkrete Beispiele zu gehen.</font> </div>';
	else
		chaine+='<div align="right"> <font size="-2">Tip: Pass the mouse over the results to see real world applications.</font> </div>';		
	divWrite('fr_result',chaine);
}

function prepPassOverFeaturesFr()
{
var i;
	initUsePrincipe();
	for (i=0;i<39;i++)
	{
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">Caractéristique :<br>'+tableFeatures[1][i]+'</div>');
	}
}

function prepPassOverFeaturesDe()
{
var i;
	initUsePrincipe();
	for (i=0;i<39;i++)
	{
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">Parameter:<br>'+tableFeatures[2][i]+'</div>');
	}
}

function prepPassOverFeaturesGb()
{
var i;
	initUsePrincipe();
	for (i=0;i<39;i++)
	{
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">Feature:<br>'+tableFeatures[0][i]+'</div>');
	}
}

function prepPassOverPrinciples()
{
var i;
	for (i=0;i<40;i++)
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">TRIZ Principle:<br>'+principe_triz[0][i][0]+'</div>');
}

function prepPassOverPrincipes()
{
var i;
	for (i=0;i<40;i++)
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">Principe TRIZ :<br>'+principe_triz[1][i][0]+'</div>');
}

function prepPassOverPrinzipien()
{
var i;
	for (i=0;i<40;i++)
		document.write('<div class="sbulle" id="tip_'+(i+1)+'" style="width:200px; height:40px;">Prinzipe:<br>'+principe_triz[2][i][0]+'</div>');
}

function addfeatures(_lan,_class)
{
var i;
	for(i=0;i<39;i++)
		document.write('<option class="'+_class+'" value="'+(i+1)+'">'+tableFeatures[_lan][i]+'</option>');	
}

//--> 
