
//$(document).ready(function() {
//	loadXml();
//	creaTabella();	
//	scrollbar();
//});


// --- VAR ---

var _xml;
var oTable;
var giCount = 2;

var materiaArray_SMS;
var materiaArray_SSPG;

// --- XML ---

function loadXml() {
	_loadXml(xmlLoaded);

}
function loadXmlAndSearchByUrlParameter() {
	_loadXml(xmlLoaded_searchByUrlParameter);
}

function _loadXml(xmlLoadedFunction) {
	var dataType = ($.browser.msie) ? "text" : "xml";

	$.ajax({
		url: "resource/dati/dati.xml",
		dataType: dataType,
		success: xmlLoadedFunction,
		error: xmlLoadError
	});
}
 
function xmlLoadError(err) {
	alert('Errore durante la lettura del file XML dei dati. \n' + err);
}

// msie workaround for LOCAL xml file
function setXML(data) {
	if (typeof data == "string") {
		_xml = new ActiveXObject("Microsoft.XMLDOM");
		_xml.async = false;
		_xml.loadXML(data);
	}
	else {
		_xml = data;
	}
}

function xmlLoaded(data) {
	setXML(data)

	caricaMaterie();
	setScuolaSelected("SSPG");
}

function xmlLoaded_searchByUrlParameter(data) {
	setXML(data);
	caricaMaterie();
	
	var scuola = getQueryVariable("scuola");
	var materia = getQueryVariable("materia");
	impostaScuolaMateriaForm(scuola, materia);

	cerca(scuola, decodeString(materia) );
}

function caricaMaterie() {
	try {
		// SSPG: array delle materie (la prima vuota per cercare tutto)
		materiaArray_SSPG = new Array();
		$(_xml)
			.find("opera")
			.filter(function(index) {
				return ( 
					( $(this).find("livelloScuola").text().toUpperCase() == "SSPG" )
				);
			})
			.each(function() {
				// trovo i tag opera/materia
				var materiaCorrente = $(this).find("materia").text();

				// aggiungo solo una volta la materia corrente
				if(jQuery.inArray(materiaCorrente, materiaArray_SSPG)==-1) {
					materiaArray_SSPG.push(materiaCorrente);
				}
			});
		
		materiaArray_SSPG.sort();

		// array delle materie (la prima vuota per cercare tutto)
		materiaArray_SMS = new Array();
		$(_xml)
			.find("opera")
			.filter(function(index) {
				return ( 
					( $(this).find("livelloScuola").text().toUpperCase() == "SMS" )
				);
			})
			.each(function() {
				// trovo i tag opera/materia
				var materiaCorrente = $(this).find("materia").text();

				// aggiungo solo una volta la materia corrente
				if(jQuery.inArray(materiaCorrente, materiaArray_SMS)==-1) {
					materiaArray_SMS.push(materiaCorrente);
				}
			});
		
		// ordino l'array
		materiaArray_SMS.sort();
	}
	catch(err){
		alert("ERRORE in caricaMaterie: " + err);
	}
}

function impostaContenutoSelectMateria_SMS() {
	impostaContenutoSelecetMateria(materiaArray_SMS);
}

function impostaContenutoSelectMateria_SSPG() {
	impostaContenutoSelecetMateria(materiaArray_SSPG);
}

function impostaContenutoSelecetMateria(materiaArray) {
	// aggiungo le options alla select
	var selectElement = $("#materiaSelect");
	$( selectElement ).children().remove()
	$( materiaArray ).each( function( intIndex ){
		selectElement.append(
			$("<option value='" + encodeString(this) + "'>" + this + "</option>")
		);
	});
}


function cerca(livelloScuola, materia) {
	//oTable.fnClearTable();

	// var livelloScuola = $('#livelloScuolaSelect :selected').text();
	// var materia = $('#materiaSelect :selected').text();

	var res = $(_xml)
		.find("opera")
		.filter(function(index) {
			return ( 
				( materia==" Tutte" || $(this).find("materia").text().toUpperCase()==materia.toUpperCase() )  
				&& 
				( livelloScuola=="" || $(this).find("livelloScuola").text().toUpperCase() == livelloScuola.toUpperCase() )
			);
		});

	res.each(function() {
		aggiungiRiga( $(this) );
	});

	scrollbar();
	aggiustaHeaderWidth();

	$("#numeroRisultati").append(res.length);

}

// --- TABELLA ---

function creaTabella() {

	oTable = $('#risultato').dataTable( {
		// features abilitate
		"bPaginate": false,
		"bLengthChange": false,
		"bFilter": false,
		"bSort": false,
		"bInfo": false,
		"bAutoWidth": false,
		// file testi
		"oLanguage": { "sUrl": "resource/language/lang.txt" },
		// ordinamento iniziale
		//"aaSorting": [[ 0, "asc" ]],
		"aoColumns" : [
			{ sClass: 'cellaRicercaSpecial' },
			{ sClass: 'cellaRicerca' },
			{ sClass: 'cellaRicerca' },
			{ sClass: 'cellaRicerca' },
			{ sClass: 'cellaRicerca' },
			{ sClass: 'cellaRicerca' },
			{ sClass: 'cellaRicerca' }
		] 
		
	} );

}


// ----------
// ---------- Per visualizzare anche le immagini di copertina
// ---------- scommentare la riga: "<table width='100%' ...
// ---------- e commentare la seguente:  $(xmlRecord).find("autore")....
// ----------

function aggiungiRiga(xmlRecord) {
	oTable.fnAddData( [
//		"<table width='100%' border='0' cellspacing='0' cellpadding='2'><tr><td width='53'><img src='img/copertine/" + $(xmlRecord).find("isbn").text() +".jpg' /></td><td align='left'>" + $(xmlRecord).find("autore").text() +"<br /><strong>"+$(xmlRecord).find("titolo").text()+"</strong><br />"+$(xmlRecord).find("annoPubblicazione").text()+"<br />"+$(xmlRecord).find("marca").text()+"</td></tr></table>",
		$(xmlRecord).find("autore").text() +"<br /><strong>"+$(xmlRecord).find("titolo").text()+"</strong><br />"+$(xmlRecord).find("annoPubblicazione").text()+"<br />"+$(xmlRecord).find("marca").text(),
		getImage( $(xmlRecord).find("servizi").find("libroPiuDigitale").text(), "Libro + Digitale" ),
		getImage( $(xmlRecord).find("servizi").find("aggiornamenti").text(), "Aggiornamenti" ),
		getImage( $(xmlRecord).find("servizi").find("accessibilita").text(), "Accessibilit&agrave;" ),
		getImage( $(xmlRecord).find("servizi").find("assistenza").text(), "Assistenza" ),
		getImage( $(xmlRecord).find("servizi").find("dialogo").text(), "Dialogo" ),
		getImage( $(xmlRecord).find("servizi").find("formazione").text(), "Formazione" )
	] );
	giCount++;
}

function getImage(dato, tooltip) {
	if(dato.toUpperCase()=="SI") {
		return "<img src='img/spunta.png' width='25' height='20' title='"+tooltip+"' />";
	}
	return "&nbsp;";
}


// --- SCROLLBAR ---

function scrollbar() {
	$('#scrollableDiv').jScrollPane({
//		scrollbarOnLeft:true, scrollbarWidth:7, scrollbarMargin:10
//		scrollbarWidth:13, scrollbarMargin:280
		scrollbarWidth:13, scrollbarMargin:10
	});

	$(".jScrollPaneDrag").corner("cc:#EBEBEB");
}


// --- UTIL ---

function decodeString(s) {
	return s.replace(/_/g, " ").replace(/:/g, "'");
}

function encodeString(s) {
	return s.replace(/ /g, "_").replace(/'/g, ":");
}

function cercaButtonClick() {
	if(getScuolaSelected()=="") {
		alert("Prima di effettuare la ricerca e' necessario scegliere il grado della scuola.");
	}
	else {
		window.location.href='ricerca.html?scuola=' + getScuolaSelected() + "&materia=" + getMateriaSelected();
	}
}

function getScuolaSelected() {
	if(document.getElementById('scuolaRadio1').checked) {
		return "SSPG";
	} 
	if(document.getElementById('scuolaRadio2').checked) {
		return "SMS";
	} 
	return "";
}

function getMateriaSelected() {
	return document.getElementById('materiaSelect').options[ document.getElementById('materiaSelect').selectedIndex ].value;
}

function setScuolaSelected(scuola) {
	if(scuola=="SMS") {
		document.getElementById('scuolaRadio2').checked = true;
		if($("#testoRicerca_scuola").length > 0) {
			$("#testoRicerca_scuola").append("Secondaria di II° grado,&nbsp;");
		}
		impostaContenutoSelectMateria_SMS();
	} 
	if(scuola=="SSPG") {
		document.getElementById('scuolaRadio1').checked = true;
		if($("#testoRicerca_scuola").length > 0) {
			$("#testoRicerca_scuola").append("Secondaria di I° grado,&nbsp;");
		}
		impostaContenutoSelectMateria_SSPG();
	}
	
}

function setMateriaSelected(materia) {
	var sel = document.getElementById('materiaSelect')
	for (i=0; i<sel.options.length; i++) {
		if (sel.options[i].value == materia) {
			sel.selectedIndex = i;
		}
	}
	$("#testoRicerca_materia").append( decodeString(materia) );
}

function impostaScuolaMateriaForm(scuola, materia) {
	setScuolaSelected(scuola);
	setMateriaSelected(materia);
}

function getQueryVariable(variable) {
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == variable) {
			return pair[1];
		}
	} 
}



function aggiustaHeaderWidth() {
	// per impostare la dim dell'header con e senza scrollbar
	document.getElementById("headerFisso").style.width = document.getElementById("scrollableDiv").style.width;
}


