/**
 *Correzione bug/mancanza dello schifosissimo IE
 */
if (!Array.prototype.indexOf) {
	Array.prototype.indexOf = function(obj, start) {
		 for (var i = (start || 0), j = this.length; i < j; i++) {
			 if (this[i] == obj) {return i;}
		 }
		 return -1;
	}
}


/**
 * Inserisce una determinata quantità di prodotto nel carrello, stampa il messaggio di ritorno in blocchi diversi,
 * ossia se il messaggio è positivo stampa in idOutput, se invece si è verificato un errore stampa in
 * idOutputError. Affinchè ciò possa avvenire il messaggio di output di errore deve presentare la stringa
 * "ko".
 * param Identificativo univoco del prodotto
 * param id del tag input type da cui tale funzione andrà a leggere la quantità da inserire nel carrello
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di successo
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 * param id del tag dove andare a ricaricare il carrello, se vuoto stampa solo la quantità aggiornata.
 * Più precisamente va settato nell'aggiunta dei prodotti al carrello dall'elenco prodotti in modo da ricaricare
 * il carrello. Se questo parametro è vuoto cambia solo la quantità del carrello, quindi non va settato nell'aggiunta
 * di prodotti dal carrello stesso.
 * di quel determinato prodotto presente nel carrello.
 */
function addToCart(idProdotto, idInput, idOutput, idOutputError, msgOutOk) {
    //leggo il valore inserito in input per quanto concerne la quantità da aggiungere
    var qtaAddValue = $('#'+idInput).val();   
    var pos = 0;

    $.ajax({
		type: "POST",
		url: "include/addToCart.aj.jsp",
		data: 	"idProdotto="+idProdotto+"&qtaAddValue="+qtaAddValue+"&msgOutOk="+msgOutOk,
		error: function(){
			cartPanel.showError("Errore di comunicazione.<br />Se il problema persiste contattare il supporto tecnico.");
		},
		success: function(html){
			//reimposto le quantità di default nella scheda prodotto
			var tmp=document.getElementById("formSchedaProdotti");
			if(tmp) tmp.reset();

			//Verifico la presenza di un ko nel messaggio di ritorno del file ajax
			pos = html.indexOf("ko", 0);

			//Se c'è un ko, becco la substring tagliando il ko e stampo ul messaggio di ritorno nel blocco
			if(pos!=-1){
				html = html.replace("ko", "", "gi");
				cartPanel.showError(html);
			} else {
				cartPanel.refresh();
			}
		}
	});
}

/**
 * Elimina un determinata quantità di prodotto dal carrello, stampa il messaggio di ritorno in blocchi diversi,
 * ossia se il messaggio è positivo stampa in idOutput, se invece si è verificato un errore stampa in
 * idOutputError, se invece la quantità da togliere è >= alla quantità presente elimina il record in
 * visualizzazione. Affinchè ciò possa avvenire il messaggio di output di errore deve presentare la stringa
 * "ko", mentre quello per cancellare il record dal carrello la stringa "hide".
 * param Identificativo univoco del prodotto
 * param id del tag input type da cui tale funzione andrà a leggere la quantità da inserire nel carrello
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di successo
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 * param id del tag da nascondere in caso sia stato cancellato il record da db.
 */
function removeFromCart(idProdotto, idInput, idOutput, idOutputError, idOutputRecord) {
     //leggo il valore inserito in input per quanto concerne la quantità da aggiungere
    var qtaAddValue = $('#'+idInput).val();
    var pos = 0;

    $.ajax({
            type: "POST",
            url: "include/removeFromCart.aj.jsp",
            data: 	"idProdotto="+idProdotto+"&qtaDelValue="+qtaAddValue,
            error: function(){
				cartPanel.showError("Errore di comunicazione.<br />Se il problema persiste contattare il supporto tecnico.");
			},
            success: function(html){
				//reimposto le quantità di default nella scheda prodotto
				var tmp=document.getElementById("formSchedaProdotti");
				if(tmp) tmp.reset();

                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo ul messaggio di ritorno nel blocco
                if(pos!=-1){
                    html = html.replace("ko", "", "gi");
					cartPanel.showError(html);
                } else {
					cartPanel.refresh();
                }
            }
        });
}

/**
 * Svuota il carrello
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di successo, in questo caso
 * il file ajax emptyCart.aj.jsp fa un include del file mycart.jsp, in modo tale che per la grafica
 * basta modificare solo quest'ultimo.
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 */
function emptyCart(){
    var pos = 0;

    $.ajax({
            type: "POST",
            data:"",
            url: "include/emptyCart.aj.jsp",
            error: function(){
				cartPanel.showError("Errore di comunicazione.<br />Se il problema persiste contattare il supporto tecnico.");
			},
            success: function(html){
                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo un messaggio di ritorno nel blocco
				if(pos!=-1){
                    html = html.replace("ko", "", "gi");
					cartPanel.showError(html);
                } else {
					cartPanel.refresh();
                }
            }
        });
}

/**
 * Conferma il carrello
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di successo, in questo caso
 * il file ajax confirmCart.aj.jsp fa un include del file myOrder.jsp, in modo tale che per la grafica
 * basta modificare solo quest'ultimo.
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 */
function confirmCart(){
    var pos = 0;

	cartPanel.showSendingOrderMessage();
	
    $.ajax({
            type: "POST",
            data:"",
            url: "include/confirmCart.aj.jsp",
            error: function(){
				cartPanel.showError("Errore di comunicazione.<br />Se il problema persiste contattare il supporto tecnico.");
			},
            success: function(html){
                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo un messaggio di ritorno nel blocco
                if(pos!=-1){
                    html = html.replace("ko", "", "gi");
                    html = html.replace("ERROR:", "", "gi");
					cartPanel.showError(html);
					cartPanel.loadContent();
                }else{
					contentPanel.loadHtmlContent(html);
					cartPanel.loadContent();
					cartPanel.handleClick();
                }
            }
        });
}

/**
 * Si occupa di chiamare in ajax lo script per l'invio e la modifica di un messaggio.
 * param idInputTitolo id del input text per il titolo
 * param idInputTesto id del input text per il testo
 * param  idOutput id del blocco dove ricaricare la lista aggiornata dei messaggi
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 * param serve per la paginazione, in test bacheca è il valore contenuto nella variabile "inizio"
 */
function sendMsg(idInputTitolo, idInputTesto, idOutput, idOutputError, start){
      //leggo il valore inserito in input per quanto concerne la quantità da aggiungere
    var titolo = $('#'+idInputTitolo).val();
    var testo = $('#'+idInputTesto).val();
    var pos = 0;
    var data;
    var idMsg = $('#idmsgvalue').val();

    if(idMsg!=0){
        data = "idmsg="+idMsg+"&titolo="+titolo+"&testo="+testo;
        $('#idmsgvalue').val('0');
    }else{
       data = "titolo="+titolo+"&testo="+testo;
    }

    $.ajax({
            type: "POST",
            data: data,
            url: "include/sendMessage.aj.jsp",
            timeout: 2000,
            error: function(){$('#'+idOutputError).html("<span style=\"color: red;\">Si &egrave; verificato un errore nel caricamento dei dati.</span>");},
            success: function(html){
                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo un messaggio di ritorno nel blocco
                if(pos!=-1){
                    html = html.replace("ko", "", "gi");
                    html = html.replace("ERROR:", "", "gi");
                    $('#'+idOutputError).html(html);
                }else{
                    $('#'+idOutput).html(html);
                    $('#'+idOutputError).html('');
                    $('#'+idInputTitolo).val('');
                    $('#'+idInputTesto).val('');
                    reloadMessages(start, idOutput, idOutputError, idInputTitolo, idInputTesto);
                }
            }
        });
}

/**
 * Si occupa di caricare in ajax la lista dei messaggi attraverso lo script bacheca.jsp
 * param serve per la paginazione
 * param  idOutput id del blocco dove ricaricare la lista aggiornata dei messaggi
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 * param idInputTitolo id del input text per il titolo, serve per pulire l'input
 * param idInputTesto id del input text per il testo, serve per pulire l'input
 */
function reloadMessages(start, idOutput, idOutputError, idInputTitolo, idInputTesto){
    var pos;
    
    $.ajax({
            type: "POST",
            data:"start="+start,
            url: "include/bacheca.aj.jsp",
            error: function(){$('#'+idOutputError).html("<span style=\"color: red;\">Si &egrave; verificato un errore nel caricamento dei dati.</span>");},
            success: function(html){
                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo un messaggio di ritorno nel blocco
                if(pos!=-1){
                    html = html.replace("ko", "", "gi");
                    $('#'+idOutputError).html(html);
                }else{
                    $('#'+idOutput).html(html);
                    $('#'+idOutputError).html('');
                    $('#idmsgvalue').val('0');
                    if(idInputTitolo!='') $('#'+idInputTitolo).val('');
                    if(idInputTesto!='') $('#'+idInputTesto).val('');
                }
            }
        });
}

/**
 * Si occupa della cancellazione di un messaggio
 * param  idOutput id del blocco dove ricaricare la lista aggiornata dei messaggi
 * param id del tag in cui stampare l'eventuale messaggio di output in caso di insuccesso
 */
function deleteMessage(idOutput, idOutputError){
    var pos;

    $.ajax({
            type: "POST",
            data:"idmsg="+idOutput,
            url: "include/deleteMessage.aj.jsp",
            error: function(){$('#'+idOutputError).html("<span style=\"color: red;\">Si &egrave; verificato un errore nel caricamento dei dati.</span>");},
            success: function(html){
                //Verifico la presenza di un ko nel messaggio di ritorno del file ajax
                pos = html.indexOf("ko", 0);

                //Se c'è un ko, becco la substring tagliando il ko e stampo un messaggio di ritorno nel blocco
                if(pos!=-1){
                    html = html.replace("ko", "", "gi");
                    $('#'+idOutputError).html(html);
                }else{
                    $('#'+idOutput).css('display', 'none');
                    $('#'+idOutputError).html('');
                }
            }
        });
}


$(function() {
	$("div.navigator a.prodotti").live("click", function (event) {
		event.preventDefault();
		contentPanel.loadContent("include/schedaprodotto.aj.jsp?id="+($(this).attr("id")).slice(4));
	});
	$("div.navigator a.categorie").live("click", function (event) {
		event.preventDefault();
		contentPanel.loadContent("include/schedacategoria.aj.jsp?id="+($(this).attr("id")).slice(4));
	});
});
