/**
 * BonySearch is an object that encapsulate the logon, register ...
 * transaction requests & callback
 */ 
var BonyVNSearch = {
	 _aSelected:null,
	/**
	 * complete callback
	 */
	completeInit : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vn_marque').length = 0 ;
		result.marques.each( function(item)
		{
			BonyVNSearch.addOption($('vn_marque'), item['value'], item['id_attribute_list'], item['selected']) ; 
		} ) ;
		//$('loading-vo').removeClassName('ajax-loading') ;
		BonyVNSearch.changeMarque() ;
	},
	initSearch: function(aSelected){
		//$('loading-vo').addClassName('ajax-loading') ;
		this._aSelected = aSelected ;
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vn/getMarques', 
		{
			method: 'post',
			parameters: 'marque=' + BonyVNSearch.getUrlValue('vn_marque'),
			onComplete: BonyVNSearch.completeInit
		});
	}, 
	completeMarque : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vn_gamme').length = 0 ;
		BonyVNSearch.addOption($('vn_gamme'), 'Indifférent', 0, false) ; 
		result.gammes.each( function(item)
		{
			BonyVNSearch.addOption($('vn_gamme'), item['value'], item['id_attribute_list'], item['selected']) ; 
		} ) ;
		BonyVNSearch.changeGamme() ;
	},
	changeMarque: function(){
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vn/getGammes', 
		{
			method: 'post', 
			parameters: 'marque=' + $('vn_marque').value + '&gamme=' + BonyVNSearch.getUrlValue('vn_gamme'),
			onComplete: BonyVNSearch.completeMarque
		});
	},
	completeGamme : function(request){
		var result = eval('(' + request.responseText + ')');
		$('vn_modele').length = 0 ;
		if(BonyVNSearch.getUrlValue('vn_modele') == 0)
			BonyVNSearch.addOption($('vn_modele'), 'Indifférent', 0, false) ; 
			
		result.modeles.each( function(item)
		{
			BonyVNSearch.addOption($('vn_modele'), item['value'], item['value'], item['selected']) ; 
		} ) ;
		BonyVNSearch.getAttributes() ;
	},
	changeGamme: function(){
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vn/getModeles', 
		{
			method: 'post', 
			parameters: 'marque=' + $('vn_marque').value + '&gamme=' + $('vn_gamme').value + '&modele=' + BonyVNSearch.getUrlValue('vn_modele'),
			onComplete: BonyVNSearch.completeGamme
		});
	},	
	completeAttributes : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vn_mot').length = 0 ;
		BonyVNSearch.addOption($('vn_mot'), 'Indifférent', 0, false) ; 
		result.mot.each( function(item)
		{
			BonyVNSearch.addOption($('vn_mot'), item['value'], item['id'], item['selected']) ; 
		} ) ;
		
		$('vn_teinte').length = 0 ;
		BonyVNSearch.addOption($('vn_teinte'), 'Indifférent', 0, false) ; 
		result.teintes.each( function(item)
		{
			BonyVNSearch.addOption($('vn_teinte'), item['value'], item['id'], item['selected']) ; 
		} ) ;
		
		
		$('vn_site').length = 0 ;
		BonyVNSearch.addOption($('vn_site'), 'Indifférent', 0, false) ; 
		result.sites.each( function(item)
		{
		    if(item['value'] != 'Renault Moulins' && item['value'] != 'Nissan Moulins')
			     BonyVNSearch.addOption($('vn_site'), item['value'], item['id'], item['selected']) ; 
		} ) ;
		
	
		
		BonyVNSearch.search() ;
		//$('loading-vo').removeClassName('ajax-loading') ;
	},
	getAttributes: function(){
		//$('loading-vo').addClassName('ajax-loading') ;
		
		var params = BonyVNSearch.getParams() ;
		params = params + '&get_teinte=' + BonyVNSearch.getUrlValue('vn_teinte') ;
		params = params + '&get_site=' + BonyVNSearch.getUrlValue('vn_site') ;
		params = params + '&get_mot=' + BonyVNSearch.getUrlValue('vn_mot') ;
		params = params + '&get_km=' + BonyVNSearch.getUrlValue('vn_km') ;
		
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vn/getAttributes', 
		{
			method: 'post', 
			parameters: params,
			onComplete: BonyVNSearch.completeAttributes
		});
	},
	getParams:function()
	{
		var url = 'marque=' + $('vn_marque').value + '&gamme=' + $('vn_gamme').value + '&modele=' + $('vn_modele').value ;
		if($('vn_mot')) url = url + '&mot=' + $('vn_mot').value ;
		if($('vn_prix')) url = url + '&prix=' + $('vn_prix').value ;
		if($('vn_teinte')) url = url + '&teinte=' + $('vn_teinte').value ;
		if($('vn_km'))     url = url + '&km=' + $('vn_km').value ;
		if($('vn_site'))   url = url + '&site=' + $('vn_site').value ;
		
		return url ;
	},
	completeSearch : function(request){
		var result = eval('(' + request.responseText + ')');
		
		if($('vn_results'))
		{
			$('vn_results').style.display = 'block' ;
			$('vn_results').innerHTML = '<b>' + result.vehicules + '</b> véhicule' + (result.vehicules > 1 ? 's' : '') + ' trouvé' + (result.vehicules > 1 ? 's' : '');
		}
		//$('loading-vo').removeClassName('ajax-loading') ;
	},
	search: function(){
		//$('loading-vo').addClassName('ajax-loading') ;
		
		var params = BonyVNSearch.getParams() ;
		
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vn/getVehicules', 
		{
			method: 'post', 
			parameters: params,
			onComplete: BonyVNSearch.completeSearch
		});
	},
	getUrlValue: function(name)
	{
		if(this._aSelected)
		{
			var s = "BonyVNSearch._aSelected." + name ;
			var res = eval(s) ;
			if(res) return res ;
			else res ;
		}
		return 0 ;
	},
	addOption: function(select, name, value, selected){
		var elOptNew = document.createElement('option');
		elOptNew.text = name ;
		elOptNew.value = value ;
		
		try {
		  select.add(elOptNew, null); // standards compliant; doesn't work in IE
		}
		catch(ex) {
		  select.add(elOptNew); // IE only
		}
		if(selected) elOptNew.selected = true ;
	}
};
