/**
 * Javascript pour la sélection d'items dans le tableau de sélection
 * Ce script utilise la librairie prototype
 */

/**
 * Fonction qui met les bonnes cellules en surbrillance
 * @param {string} produit : Le code produit
 * @param {string} modele : Le numéro de modèle à trouver dans le tableau
 * @param {string} modFull : Le numéro de modèle complet pour la fenêtre
 * @param {string} modImg : Le numéro de modèle utilisé pour trouver l'image (peut différer de modFull)
 * @param {array} map : Un tableau qui donne la cellule ciblée pour le prix et celles des stats
 * @param {array} mapref : Un tableau qui donne le libellé de référence pour la donnée trouvée
 */
function Selection(produit, modele, modFull, modImg, map, mapref) {
    //alert('Selection\nProduit:'+produit + '\nMod:'+modele +'\nModFull:'+modFull +'\nMap:'+map +'\nMapref:'+mapref);
    // Annule les sélections
    ResetHighlight();

    // Flag de récupération
    var FOUND = false;

    // Récupère les éléments table dans le HTML
    var tables = $$("div#TableauSelect table");
    // Motif
    var motif = new RegExp("(>" + modele + "\\s*<|^" + modele + "\\s*<|^" + modele + "\\s*$)");

    // Conteneur de données
    var mfdata = new Array();

    // Dans chaque table, trouve la rangée qui correspond au produit
    tables.each(function(item){
        // Récupère les rangées de données
        var rows = item.select("tr");

        // Vérifie les cellules pour trouver le code
        rows.each(function(sub_item){
            // Récupère les cellules
            var cells = sub_item.select("td");

            // Vérifie leur contenu
            cells.each(function(cell){
                if (motif.test(cell.innerHTML)) {
                    // Un modèle a été trouvé
                    cell.addClassName("ts_highlight");
					cell.scrollTo();
                    FOUND = true;

                    // Surbrillance des cellules de statistiques et collecte des données
                    for(var i = 0; i < map.length; i++) {
                        // Modifie l'affichage
                        sub_item.childElements()[map[i]].addClassName("ts_highlight");

                        // Capture les données de la cellule pour construire la fenêtre
                        mfdata.push(mapref[i]+":"+sub_item.childElements()[map[i]].innerHTML);
                    }
                } else {
					/* TESTS POUR EXPRESSION RÉGULIÈRE
					if (cell.innerHTML.substring(0,3) == "SIL") {
						try {
							console.log("*"+cell.innerHTML + "* NE VALIDE PAS : " + motif.test(cell.innerHTML) + " POUR *" + modele + "*");
						} catch(e) {
							
						}
					}
					*/
				}
            });
        });
    });

    // Si un produit a été trouvé
    if (FOUND) {
		// Vérifie le type de traitement
		if ($('PHONE_VERSION') == null) {
			// Construit la fenêtre mini fiche
			var w = new cidrux.ui.MiniFicheAjax(produit, modFull, modImg, mfdata);
			new Draggable(w, {
				handle: "cux-window-title"
			});
		} else {
			// Version pour mobile
			
			// Appel AJAX pour le html de la minifiche
			new Ajax.Request('index.php?prod=' + produit + '&action=ajaxminifiche',{
				method:"post",
				parameters:{
					mod:modFull,
					img:modImg,
					'specs[]':mfdata
				},
				onSuccess:function(xhr) {
					// Affiche la version imprimable
					window.top.location = 'index.php?action=printminifiche&prod=' + $F('CODE_PRODUIT');
				}
			});
		}
    }
}

/**
 * Fonction qui retire la classe de surbrillance
 */
function ResetHighlight() {
    // Toutes les cellules sont vérifiées
    var cells = $$("div.select table td");
    cells.invoke("removeClassName", "ts_highlight");

    // Élimine les fenêtres cux-window
    $$("div.cux-window").invoke("remove");
}

/**
 * Fonction exécuté lorsque le DOM est prêt
 * @param {Object} event
 */
Event.observe(document, "dom:loaded", function(event) {
    /**
     * Fonction qui associe un événement spécial aux listes de choix
     */
    $$("select.x_ts_list").invoke("observe", "ts:hide", function(e) {
        // Cette fonction réagit à l'event ts:hide sur la liste
        var liste = e.element();

        // Force la sélection de l'item 0
        liste.options[0].selected = "selected";

        // Masque la liste
        liste.hide();
    });
});
