/**
 * Outil de sélection
 * @version DBS 2010-09-28
 * @author Cédric Talbot <c.talbot@stelpro.com>
 */
// Conteneur pour le suivi des choix
var modele, watts, volts;

// Gestion des listes dynamiques
Event.observe(document, "dom:loaded", function() {
	// Gère le choix du modèle
	$('Modele').observe("change", function(e){
		// Remise à zéro
		VoltageReset();
		WattsReset();
		ColorReset();
		
		// Choix de liste
		if ($F('Modele') != "") {
			modele = $F('Modele');
			if (modele == "60") {
				volts = "VoltsB";
			} else {
				volts = "VoltsA";	
			}
			
			// Affiche
			$(volts).show();
		}
	});
	
	// Gère le choix du voltage
    [$('VoltsA'), $('VoltsB')].invoke("observe", "change", function(e) {
		// Remise à zéro
		WattsReset();
		
		// Orientation
        if (e.element().getValue() == "") {
            ColorReset();
        } else {
			// Capture le choix
			var combo = modele + $F(volts);
			
			// Selon les choix de modèle/voltage, les wattages disponibles changent
			switch(combo) {
				case "601":
				case "608":
				case "602":
					watts = "WattsA";
				break;
				case "607":
				case "603":
					watts = "WattsB";
				break;
				case "901":
				case "908":
				case "902":
				case "907":
				case "903":
					watts = "WattsC";
				break;
				case "905":
				case "906":
					watts = "WattsD";
				break;
				case "121":
				case "128":
				case "122":
				case "127":
				case "123":
					watts = "WattsE";
				break;
				case "125":
				case "126":
					watts = "WattsF";
				break;
				case "151":
				case "158":
				case "152":
				case "157":
				case "153":
				case "155":
				case "156":
					watts = "WattsG";
				break;
				case "181":
				case "188":
				case "182":
				case "187":
				case "183":
				case "185":
				case "186":
					watts = "WattsH";
				break;
				case "211":
					watts = "WattsI";
				break;
				case "218":
				case "212":
				case "217":
				case "213":
				case "215":
				case "216":
					watts = "WattsJ";
				break;
				case "241":
					watts = "WattsK";
				break;
				case "248":
				case "242":
				case "247":
				case "243":
				case "245":
				case "246":
					watts = "WattsL";
				break;
				case "271":
					watts = "WattsM";
				break;
				default :
					watts = "WattsN";
			}
			
			// Affichage
			$(watts).show();
        }
    });
	
    // Gère le choix du wattage
    [$('WattsA'), $('WattsB'), $('WattsC'), $('WattsD'), $('WattsE'), $('WattsF'), $('WattsG'), $('WattsH'), $('WattsI'), $('WattsJ'), $('WattsK'), $('WattsL'), $('WattsM'), $('WattsN')].invoke("observe", "change", function(e) {
        // Reset des listes
        ColorReset();
        $('Color').show();
    });
	
	// Choix de couleur
	$('Color').observe("change", function(e){
		if ($F('Color') != "") {
			$('ts_search_trigger').show();
		} else {
			$('ts_search_trigger').hide();
		}
	});
});

// Fonction qui s'occupe de remettre les listes de voltage à leur état initial
function VoltageReset() {
    // Masque les listes
    $('VoltsA').fire("ts:hide");
    $('VoltsB').fire("ts:hide");
}

// Fonction qui s'occupe de remettre les listes de voltages à leur état initial
function WattsReset() {
	$('WattsA').fire("ts:hide");
	$('WattsB').fire("ts:hide");
	$('WattsC').fire("ts:hide");
	$('WattsD').fire("ts:hide");
	$('WattsE').fire("ts:hide");
	$('WattsF').fire("ts:hide");
	$('WattsG').fire("ts:hide");
	$('WattsH').fire("ts:hide");
	$('WattsI').fire("ts:hide");
	$('WattsJ').fire("ts:hide");
	$('WattsK').fire("ts:hide");
	$('WattsL').fire("ts:hide");
	$('WattsM').fire("ts:hide");
	$('WattsN').fire("ts:hide");
}

// Fonction qui s'occupe de remettre les listes de couleurs à leur état initial
function ColorReset() {
    // Masque les listes
    $('Color').fire("ts:hide");
	
	$('ts_search_trigger').hide();
}

/**
 * Fonction qui prepare le processus de sélection
 */
function PrepareSelection() {
    // Construit le nom de modèle à trouver
    var produit = $F("CODE_PRODUIT");

    // Construction
    var mod = produit + $F('Modele') + $F(watts) + $F(volts);

    // Code pour image
    var modImg = produit + $F('Color');

    // Numéro complet
    var modeleFull = mod + $F('Color');

    // Construit le mapping des autres cellules à afficher
    var map = new Array();

    // Détermine la colonne de wattage
    map.push(GetColoneWattage(watts));

    // Assigne les colonnes de stats à afficher
	if ($F('Color') != "CA") {
		$R(6, 11).each(function(e){
			map.push(e);
		});
	} else {
		$R(6, 10).each(function(e){
			map.push(e);
		});
		map.push(12);
	}

    // Construit le tableau de référence
    var mapref = new Array("pow", "volt", "longMM", "longPO", "poidsKG", "poidsLB", "prix");

    // Sélection
    Selection(produit, mod, modeleFull, modImg, map, mapref);
}

/**
 * Méthode qui détermine la colonne de wattage
 */
function GetColoneWattage(watts) {
	// Modèle (pour départager les wattages équivalents
	var modele = $F('Modele');
	
	// Trouve le vrai wattage
	var watts = parseInt($(watts).options[$(watts).selectedIndex].text, 10);
	
	switch(watts) {
		case 300:
		case 450:
		case 900:
		case 1050:
		case 1350:
			return 5;
		break;
		case 400:
		case 800:
		case 1400:
		case 1600:
		case 1800:
			return 3;
		break;
		case 500:
		case 1250:
		case 1750:
		case 2250:
		case 2500:
			return 1;
		break;
		case 600:
			if (modele == "90") {
				return 3;
			} else {
				return 5;
			}
		break;
		case 750:
			if (modele == "90") {
				return 1;
			} else {
				return 5;
			}
		break;
		case 1000:
			if (modele == "12") {
				return 1;
			} else {
				return 3;
			}
		break;
		case 1200:
			if (modele == "18") {
				return 3;
			} else {
				return 5;
			}
		break;
		case 1500:
			if (modele == "18") {
				return 1;
			} else {
				return 5;
			}
		break;
		case 2000:
			if (modele == "24") {
				return 1;
			} else {
				return 3;
			}
		break;
		default:
			return 1;
	}
}

