var tabMotorizzazioni;
var tabModelli;
var tabMarche;
var casaSelezionata;
var modelloSelezionato;
var tabRisultati;

function newSearch() {
	window.location.href="/catalog/main.jsp";
}

function searchByCode() {
	window.location.href="/catalog/searchByCodes.jsp";
}

function searchByParameters() {
	window.location.href="/catalog/searchByParameter.jsp";
}
function scegli(tipo, src) {
	switch(tipo) {
		case 1:
			var codiceCostruttore= src.getAttribute('codiceCostruttore');
			scegliCasaAutomobilistica(src, codiceCostruttore);
			break;
		case 2:
			scegliModello(src);
			break;
	}
}


function filtraAlimentazioni() {
	if(modelloSelezionato) {
			ajaxAggiornaMotorizzazione(modelloSelezionato, $F('filtroAlimentazione'));
	}
}



function ajaxAggiornaModelli(codiceCostruttore) {

	showMessage(getMessage('loadingMessage'));
	modelloSelezionato= null;
	
	new Ajax.Request(
				'/catalog/GetModelli', 
				{
				  method: 'post',
				  parameters: {codiceCostruttore: codiceCostruttore},
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r) {
						ridisegnaTabellaModelli(r);
					}
				  }
				}
	);
}

function ajaxAggiornaMotorizzazione(codiceModello, tipoAlimentazione) {
	showMessage(getMessage('loadingMessage'));
	new Ajax.Request(
				'/catalog/GetMotorizzazioni', 
				{
				  method: 'post',
				  parameters: {
					  		codiceModello: codiceModello, 
					  		tipoAlimentazione: tipoAlimentazione
				  		},
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r) {
						ridisegnaTabellaMotorizzazioni(r);
						tabMotorizzazioni.forceResize();
					}
				  }
				}
	);
}

function showMessage(msg) {
	var m=	$('messagesDiv');
	m.innerHTML= msg;;
	m.show();
	//$(divId).innerHTML= getMessage('loadingMessage');
}

function hideMessage(divId) {
	var m=	$('messagesDiv');
	if(m) {
		m.innerHTML= '';
		m.hide();
	}
	//$(divId).innerHTML= getMessage('loadingMessage');
}




var risultatoTemplate = new Template(
			'<tr id="motore_row_#{rowId}" class="" onclick="alert(\'cips\');" >'
				+'<td>#{marca}</td>'
				+'<td>#{modello}</td>'
				+'<td>#{motorizzazione}</td>'
				+'<td>#{cilindrata}</td>'
				+'<td>#{potenza}(HP)</td>'
				+'<td>#{siglaMotore}</td>'
				+'<td>#{clindri}</td>'
				+'<td>#{valvole}</td>'
				+'<td>#{annoInizio}</td>'
				+'<td>#{annoFine}</td>'
				+'<td>#{alimentazione}</td>'
				+'<td>#{codiceArticolo}</td>'
//				+'<td>#{note}</td>'
			+'</tr>'
);



//================================
var motorizzazioneColumns = [
		[getLabel('labelMotorizzazioni'), '70%', TYPE_STRING],
		[getLabel('kindOfFuel'), '30%', TYPE_STRING]
];

var modelloColumns = [
		[getLabel('labelModelli'), '80%', TYPE_STRING],
		[getLabel('labelValidita'), '20%', TYPE_STRING]
];

var marcaColumns = [
		[getLabel('labelCase'), '100%', TYPE_STRING]
];

function scegliMotorizzazione() {
	var selectedRows= tabMotorizzazioni.getSelectedRow();
	var o=tabMotorizzazioni.currentDataset[selectedRows];
	$('idApplicazioneField').value= o.idApplicazione;
	$('idModelloField').value= 	o.idModello;
	$('filtroMotorizzazione').value= o.descrizione;
	$('filtroAlimentazioneField').value= $F('filtroAlimentazione');
	$('searchForm').submit();
	
}




function cercaModelloSenzaMotorizzazione() {
 if(modelloSelezionato) {
  var selectedRows= tabMotorizzazioni.getSelectedRow();
  if('undefined'!=typeof(selectedRows) && selectedRows>=0) {
   var o=tabMotorizzazioni.currentDataset[selectedRows];
   $('idApplicazioneField').value= o.idApplicazione;
   $('idModelloField').value=  o.idModello;
   $('filtroMotorizzazione').value= o.descrizione;
   
  } else {
   $('idModelloField').value=  modelloSelezionato;
   $('filtroMotorizzazione').value= '';
   $('filtroAlimentazioneField').value= $F('filtroAlimentazione');
  }
  $('searchForm').submit();
 } else {
 	alert(messages["msgSelectModel"]);
 }
}


function scegliModello(selectedRow) {
	modelloSelezionato= tabModelli.currentDataset[selectedRow].idModello;
	$('filtroAlimentazione').selectedIndex= 0;
	ajaxAggiornaMotorizzazione(modelloSelezionato, $F('filtroAlimentazione'));
}


function scegliMarca(selectedRow) {
	casaSelezionata= tabMarche.currentDataset[selectedRow].codiceCostruttore;
	$('filtroAlimentazione').selectedIndex= 0;
	tabMotorizzazioni.clear();
	tabMotorizzazioni.forceResize();
	ajaxAggiornaModelli(casaSelezionata);
}


function creaTabella(divId, columnsDef, selectCallback) {
	var el = $(divId);
	var t= new WebFXColumnList();
	t.create(el, columnsDef);
	t.onselect= selectCallback;
	t.moveColumns= false;
	t.multiple= false;
	
	t.sort(0);
	
	var a= new Array();
	for(var i=0; i<columnsDef.length; ++i) {
		a.push(columnsDef[i][2]? columnsDef[i][2]: TYPE_STRING);
	}
	t.setSortTypes(a);
	return t;
}

function disableColumnSorting(tab)  {
		tab.columnSorting= false;
}

function creaTabelle() {
	tabMarche = creaTabella('divMarche',marcaColumns,scegliMarca);
	tabModelli = creaTabella('divModelli',modelloColumns,scegliModello);
	tabMotorizzazioni = creaTabella('divMotorizzazioni',motorizzazioneColumns,null);
}

function motorizzazioneToTableData(m) {
	var a= new Array(
		m.descrizione,
		m.alimentazione
	);		
	return a;	
}	

function modelloToTableData(m) {
	var dal= m.datada;
	var al= m.dataa;
	
	var a= new Array(
		m.descrizione,
		dal+'->'+al+''
	);		
	return a;	
}	

function marcaToTableData(m) {
	var a= new Array(
		m.descrizione
	);		
	return a;	
}	
	
function ridisegnaTabellaMotorizzazioni(modelli) {
	tabMotorizzazioni.clear();
	$A(modelli).each(
		function (e) {
			tabMotorizzazioni.addRow(motorizzazioneToTableData(e));
		}
	);
	
//	tabMotorizzazioni.forceResize();
	tabMotorizzazioni.currentDataset= modelli;
	tabMotorizzazioni._sizeBodyAccordingToHeader();
}


function ridisegnaTabellaModelli(modelli) {
	tabModelli.clear();
	$A(modelli).each(
		function (e) {
			tabModelli.addRow(modelloToTableData(e));
		}
	);
	//tabModelli.forceResize();
	tabModelli.currentDataset= modelli;
	tabModelli._sizeBodyAccordingToHeader();
}

function ridisegnaTabellaMarche(marche) {
	tabMarche.clear();
	$A(marche).each(
		function (e) {
			tabMarche.addRow(marcaToTableData(e));
		}
	);
	tabMarche.currentDataset= marche;
	// forza il disegno delle altre tabelle, in modo da far comparire gli header
	var x= [{descrizione:'..'}];
	ridisegnaTabellaModelli(x);
	ridisegnaTabellaMotorizzazioni(x);
	tabModelli.clear();
	tabMotorizzazioni.clear();
	tabMotorizzazioni._sizeBodyAccordingToHeader();
}


var risultatiColumns = [
		[getLabel('labelCase'), '10%', TYPE_STRING],
		[getLabel('labelModelli'), '17%', TYPE_STRING],
		[getLabel('labelMotorizzazioni'), '13%', TYPE_STRING],
		[getLabel('labelCilindrata'), '2%', TYPE_NUMBER, ALIGN_LEFT],
		[getLabel('labelPotenza'), '3%', TYPE_STRING, ALIGN_LEFT],
		[getLabel('labelSiglaMotore'), '8%', TYPE_STRING],
		[getLabel('labelCilindri'), '2%', TYPE_NUMBER, ALIGN_LEFT],
		[getLabel('labelValvole'), '2%', TYPE_NUMBER, ALIGN_LEFT],
		[getLabel('labelAnnoInizio'), '8%', TYPE_MONTHYEAR, ALIGN_CENTER],
		[getLabel('labelAnnoFine'), '8%', TYPE_MONTHYEAR, ALIGN_CENTER],
		[getLabel('kindOfFuel'), '5%', TYPE_STRING, ALIGN_CENTER],
		[getLabel('labelCodiceArticolo'), '6%', TYPE_STRING]
];

function risultatoToTableData(r) {
	var a= new Array(
		r.marca,
		r.modello,
		r.motorizzazione,
		r.cilindrata? parseInt(r.cilindrata,10): '',
		r.potenza? parseInt(r.potenza,10): '',
		r.siglaMotore,
		r.cilindri? parseInt(r.cilindri,10): '',
		r.valvole? parseInt(r.valvole,10): '',
		r.annoInizio,
		r.annoFine,
		r.alimentazione,
		r.codiceArticolo,
		(r.note.blank()? ' ': 'X')
	);		
	return a;	
}	


function creaTabellaRisultati() {
	tabRisultati = creaTabella('divRisultati',risultatiColumns,scegliRisultato);
}

var MAX_RIGHE_TAB_RISULTATI= 50;
var bloccoCorrenteTabRisultati;
var numBlocchiTabRisultati;
var risultati;

function setRisultati(r) {
	risultati= r;
	bloccoCorrenteTabRisultati= 0;
	numBlocchiTabRisultati= Math.ceil(risultati.length/MAX_RIGHE_TAB_RISULTATI);
}

function getBloccoRisultati(numBlocco) {
	if(numBlocco>= numBlocchiTabRisultati) {
		numBlocco= numBlocchiTabRisultati-1;
	} 
	if(numBlocco<0) {
		numBlocco= 0;
	}
	var f= numBlocco*MAX_RIGHE_TAB_RISULTATI;
	var t= Math.min(risultati.length, (numBlocco+1)*MAX_RIGHE_TAB_RISULTATI);
	var r= new Array();
	for(var i=0; i<(t-f); ++i) {
		r[i]= risultati[f+i];
	}
	return $A(r);
}


function aggiornaNavigatore() {

	if(numBlocchiTabRisultati>1) {
		var f= 1+bloccoCorrenteTabRisultati*MAX_RIGHE_TAB_RISULTATI;
		var t= Math.min(risultati.length, (bloccoCorrenteTabRisultati+1)*MAX_RIGHE_TAB_RISULTATI);
		$('currentPositionLabel').innerHTML= f+'-'+t;
		$('lastPositionLabel').innerHTML= risultati.length;
		$('divNavigatore').show();
	} else {
		$('divNavigatore').hide();
	}
}
			
function bloccoPrecedente() {
	--bloccoCorrenteTabRisultati;
	if(bloccoCorrenteTabRisultati<0) {
		bloccoCorrenteTabRisultati=0;
	}
	ridisegnaTabellaRisultati(bloccoCorrenteTabRisultati);
}
 
function bloccoSuccessivo() {
	++bloccoCorrenteTabRisultati;
	if(bloccoCorrenteTabRisultati>= numBlocchiTabRisultati) {
		bloccoCorrenteTabRisultati= numBlocchiTabRisultati-1;
	} 
	ridisegnaTabellaRisultati(bloccoCorrenteTabRisultati);
}


function ridisegnaTabellaRisultati(blocco) {
	tabRisultati.clear();
	
	var r= getBloccoRisultati(blocco)
	$A(r).each(
		function (e) {
			tabRisultati.addRow(risultatoToTableData(e));
		}
	);
	tabRisultati.forceResize();
	tabRisultati.currentDataset= r;
	
	aggiornaNavigatore();
tabRisultati._sizeBodyAccordingToHeader();
}

function avviaRicerca(codiceModello, tipoAlimentazione, motorizzazione) {
	showMessage(getMessage('loadingMessage'));
	new Ajax.Request(
				'/catalog/Ricerca', 
				{
				  method: 'post',
				  parameters: {
				  			tipoRicerca: 'marcaModelloMotore',
					  		codiceModello: codiceModello, 
					  		tipoAlimentazione: tipoAlimentazione,
					  		filtroMotorizzazione: motorizzazione
				  		},
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r && r.length>0) {
				    	setRisultati(r);
						ridisegnaTabellaRisultati(0);
						if(r.length>MAX_RIGHE_TAB_RISULTATI ) {
							disableColumnSorting(tabRisultati);
						}
					} else {
						showMessage(getMessage('msgNoRisultati'));
					}
				  }
				}
	);
}


function avviaRicercaPerCodiceLowLevel(params) {
	showMessage(getMessage('loadingMessage'));
	new Ajax.Request(
				'/catalog/Ricerca', 
				{
				  method: 'post',
				  parameters: params,
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r && r.length>0) {
				    	setRisultati(r);
						ridisegnaTabellaRisultati(0);
						if(r.length>MAX_RIGHE_TAB_RISULTATI ) {
							disableColumnSorting(tabRisultati);
						}
					} else {
						showMessage(getMessage('msgNoRisultati'));
					}

				  }
				}
	);
}


function avviaRicercaPerCodice(codiceArticolo, ricercaCodiciParziali) {
	var params= {
				  		codiceArticolo: codiceArticolo, 
				  		enablePartialCodes: ricercaCodiciParziali,
				  		tipoRicerca: 'codiceBugatti'
			  		};
	avviaRicercaPerCodiceLowLevel(params);
}

		
function avviaRicercaPerCodiceOriginale(codiceArticolo, ricercaCodiciParziali) {
	var params= {
				  		codiceArticolo: codiceArticolo, 
				  		enablePartialCodes: ricercaCodiciParziali,
				  		tipoRicerca: 'codiceCostruttore'
			  		};
	avviaRicercaPerCodiceLowLevel(params);
}

function avviaRicercaPerCodiceConcorrente(codiceArticolo, codiceConcorrente, ricercaCodiciParziali) {
	var params= {
				  		codiceArticolo: codiceArticolo, 
				  		codiceConcorrente: codiceConcorrente,
				  		enablePartialCodes: ricercaCodiciParziali,
				  		tipoRicerca: 'codiceConcorrente'
			  		};
	avviaRicercaPerCodiceLowLevel(params);
}

function avviaRicercaPerCodiceMotore(codiceMotore, ricercaCodiciParziali) {
	var params= {
				  		codiceMotore: codiceMotore, 
				  		enablePartialCodes: ricercaCodiciParziali,
				  		tipoRicerca: 'codiceMotore'
			  		};
	avviaRicercaPerCodiceLowLevel(params);
}

function avviaRicercaDatiTecnici(tipoRicerca, criteriRicerca, criteriGirante) {
	showMessage(getMessage('loadingMessage'));
	var params= { criteriSpecifici: Object.toJSON(criteriRicerca), 
				  criteriGirante: Object.toJSON(criteriGirante),
				  tipoRicerca: tipoRicerca
			  	};
	new Ajax.Request(
				'/catalog/Ricerca', 
				{
				  method: 'post',
				  parameters: params,
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r && r.length>0) {
				    	setRisultati(r);
						ridisegnaTabellaRisultati(0);
					} else {
						showMessage(getMessage('msgNoRisultati'));
					}
				  }
				}
	);

}
 
function getOrderHeaders(ownerId, callback) {
	showMessage(getMessage('loadingMessage'));
	var params= { ownerId: ownerId, 
				  status: 'new'
			  	};
	new Ajax.Request(
				'/orders/orderHeaders', 
				{
				  method: 'post',
				  parameters: params,
				  onSuccess: function(transport) {
				  	hideMessage();
				  	var r= eval(transport.responseText);
				    if(r) {
				    	callback(r);
					}
				  }
				}
	);

}


function dataToWeb(d) {
	if(!d) {
		return "";
	}
	try {
		return d.substring(4,6)+'-'+d.substring(0,4);
	} catch(e) {
		return d;
	}
}

function scegliRisultato(selectedRow) {
	var idx= tabRisultati.getRowId(selectedRow);
	if(idx>=0) {
		var r= tabRisultati.currentDataset[idx];
		var n= r.note;
		
		var imgUrl= "/catalog/imgarticoli/" + r.codiceArticolo.toUpperCase() + '.jpg';
		
		
		var imgTag= '<img src="'+imgUrl+'"  border="0"/>';
		$('immagineArticolo').innerHTML= imgTag;
		/*
		$('immagineArticolo').src= imgUrl;
		$('immagineArticolo').width= 200;
		$('immagineArticolo').height= 100;
		*/
		$('titoloImmagineArticolo').innerHTML= r.codiceArticolo;
		$('legenda').innerHTML= n;
	}
	
}

function printCompetitorCodesComparisonTable() {
	window.location.href="/catalog/codesComparison.jsp";
}




function buttonsHoverBehaviour() {
	var lis = $$('button.button');
	

	lis.each( 
			function (b) {
				b.onmouseover=function() {
				this.className='button_over';
			};
			b.onmouseout=function() {
				this.className='button';
			}
		}
	);
}

function setupIECSSBehaviours() {
	if (window.attachEvent) {
		window.attachEvent("onload", buttonsHoverBehaviour);
	}
}
