/*
Concession JS pour Moto85
Copyright(c) 2009, Skalpel.

Author : Thanh Tri
thanh-tri@skalpel.fr

Note : 
	-
ToDo :
	- 
*/
SKjs.CoteMoto = new Class ({
	Implements: [Events, Options],
	options: {
		marque:			'searchBrand',
		cylindree:		'searchDisplacement',
		modele:			'searchModel',
		millesime:		'searchYear',

        suffixDefault:  'defaut',
		
		form:			'rechercheCote'
	},
	
	/*
	Property :
		Initialisation de la Class
	*/
	initialize: function(options) {
		this.setOptions(options);
		
		this.dom = {};
		
		this.initDom();
		this.initEvents();
		this.resetMillesime();
		
		// Selects marque/cylindree/modele
		this.selects = new SKjs.Selects(this.options.marque, this.options.cylindree, this.options.modele);
	},
	
	initDom: function() {
		this.dom.marque			= $(this.options.marque);
		this.dom.cylindree		= $(this.options.cylindree);
		this.dom.modele			= $(this.options.modele);
		this.dom.millesime		= $(this.options.millesime);

		if ($chk($(this.options.suffixDefault+this.options.marque))) {
            this.dom.defautMarque 		= $(this.options.suffixDefault+this.options.marque).value;
        }

		if ($chk($(this.options.suffixDefault+this.options.cylindree))) {
            this.dom.defautCylindree 	= $(this.options.suffixDefault+this.options.cylindree).value;
        }

		if ($chk($(this.options.suffixDefault+this.options.modele))) {
            this.dom.defautModele 		= $(this.options.suffixDefault+this.options.modele).value;
        }

		if ($chk($(this.options.suffixDefault+this.options.millesime))) {
            this.dom.defautMillesime 	= $(this.options.suffixDefault+this.options.millesime).value;
        }

		this.dom.form			= $(this.options.form);
	},
	
	initEvents: function() {
		this.dom.marque.addEvent('change', this.resetMillesime.bind(this));
		this.dom.cylindree.addEvent('change', this.resetMillesime.bind(this));
		this.dom.modele.addEvent('change', this.loadMillesime.bind(this));
	},
	
	loadMillesime: function() {

        var marque;
        var modele;
        var cylindree;

        if (this.dom.marque.value != '0' && this.dom.marque.value != '') {
            marque  = this.dom.marque.value;
        } else {
            marque  = this.dom.defautMarque;
        }

        if (this.dom.modele.value != '') {
            modele  = this.dom.modele.value;
        } else {
            modele  = this.dom.defautModele;
        }

        if (this.dom.cylindree.value != '') {
            cylindree   = this.dom.cylindree.value;
        } else {
            cylindree   = this.dom.defautCylindree;
        }

		this.resetMillesime();
        
        new Request.JSON({
                url:        SKjs.loaderJSON,
                encoding:   SKjs.encoding,
                onComplete: this.onLoadMillesime.bind(this)

        }).post({ requestId: SKjs.requestId(), method: 'Ads~Bike:loadYear', brand: marque, model: modele, displacement: cylindree});
	},
	
	onLoadMillesime: function(result) {
        
		if (result !== null) {

            var defautMillesime = this.dom.defautMillesime != '' ? this.dom.defautMillesime : null;

			this.selects.fillSelect(this.dom.millesime, 'Millésime', result.result, defautMillesime);
		} else {
			this.dom.millesime.empty();
			// Adds default element
			this.dom.millesime.adopt(new Element('option', {
	            value: '',
	            html: 'Aucun millésime'
	        }));
		}
	},
	
	resetMillesime: function() {
		this.dom.millesime.set("disabled", true);
		
		this.dom.millesime.empty();
		// Adds default element
		this.dom.millesime.adopt(new Element('option', {
            value: '',
            html: 'Millésime'
        }));
	}
});
