/**
 * BonySearch is an object that encapsulate the logon, register ...
 * transaction requests & callback
 */ 
var BonyVOSearch = {
	 _aSelected:null,
	 _pro:0,
	/**
	 * complete callback
	 */
	 completeInit : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vo_marque').length = 0 ;
		BonyVOSearch.addOption($('vo_marque'), 'Indifférent', 0, false) ; 
		result.marques.each( function(item)
		{
			BonyVOSearch.addOption($('vo_marque'), item['value'], item['id'], item['selected']) ; 
		} ) ;
		//$('loading-vo').removeClassName('ajax-loading') ;
		BonyVOSearch.changeMarque() ;
	},
	initSearch: function(pro, aSelected){
		//$('loading-vo').addClassName('ajax-loading') ;
		this._aSelected = aSelected ;
		this._pro= pro ;
		
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vo/getMarques', 
		{
			method: 'post',
			parameters: 'marque=' + BonyVOSearch.getUrlValue('marque') + '&pro=' + this._pro,
			onComplete: BonyVOSearch.completeInit
		});
	},
	completeMarque : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vo_gamme').length = 0 ;
		BonyVOSearch.addOption($('vo_gamme'), 'Indifférent', 0, false) ; 
		result.gammes.each( function(item)
		{
			BonyVOSearch.addOption($('vo_gamme'), item['value'], item['id_attribute_list'], item['selected']) ; 
		} ) ;
		//$('loading-vo').removeClassName('ajax-loading') ;
		BonyVOSearch.changeGamme() ;
	},
	changeMarque: function(){
		//$('loading-vo').addClassName('ajax-loading') ;
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vo/getGammes', 
		{
			method: 'post', 
			parameters: 'marque=' + $('vo_marque').value + '&gamme=' + BonyVOSearch.getUrlValue('gamme') + '&pro=' + this._pro,
			onComplete: BonyVOSearch.completeMarque
		});
	},
	completeGamme : function(request){
		var result = eval('(' + request.responseText + ')');
		
		$('vo_mot').length = 0 ;
		BonyVOSearch.addOption($('vo_mot'), 'Indifférent', 0, false) ; 
		result.mot.each( function(item)
		{
			BonyVOSearch.addOption($('vo_mot'), item['value'], item['id'], item['selected']) ; 
		} ) ;
		//$('loading-vo').removeClassName('ajax-loading') ;
		BonyVOSearch.changeMot() ;
	},
	changeGamme: function(){
		//$('loading-vo').addClassName('ajax-loading') ;
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vo/getMot', 
		{
			method: 'post', 
			parameters: 'marque=' + $('vo_marque').value  + '&gamme=' + $('vo_gamme').value + '&mot=' + BonyVOSearch.getUrlValue('mot') + '&pro=' + this._pro,
			onComplete: BonyVOSearch.completeGamme
		});
	},
	changeMot: function(){
		/*if($('vo_teinte'))
			BonyVOSearch.getAttributes() ;
		else
			BonyVOSearch.search() ;*/
		BonyVOSearch.getAttributes() ;
	},	
	completeAttributes : function(request){
		var result = eval('(' + request.responseText + ')');
		
		if($('vo_carrosserie'))
		{
			$('vo_carrosserie').length = 0 ;
			BonyVOSearch.addOption($('vo_carrosserie'), 'Indifférent', 0, false) ; 
			result.carrosseries.each( function(item)
			{
				BonyVOSearch.addOption($('vo_carrosserie'), item['value'], item['id'], item['selected']) ; 
			} ) ;
		}
		
		if($('vo_site'))
		{
			$('vo_site').length = 0 ;
			BonyVOSearch.addOption($('vo_site'), 'Indifférent', 0, false) ; 
			result.sites.each( function(item)
			{
			    if(item['value'] != 'Moulins')
				    BonyVOSearch.addOption($('vo_site'), item['value'], item['id'], item['selected']) ; 
			} ) ;
		}
		
		if($('vo_boite'))
		{
			$('vo_boite').length = 0 ;
			BonyVOSearch.addOption($('vo_boite'), 'Indifférent', -1, false) ; 
			result.boite.each( function(item)
			{
				BonyVOSearch.addOption($('vo_boite'), item['value'], item['id'], item['selected']) ; 
			} ) ;
		}
		
		if($('vo_km'))
		{
			var min = result.km_min ;
			var max = result.km_max ;
			var bMin = BonyVOSearch.getUrlValue('min_km') && BonyVOSearch.getUrlValue('min_km') != '0' ?  BonyVOSearch.getUrlValue('min_km')  : min ;
			var bMax = BonyVOSearch.getUrlValue('max_km') && BonyVOSearch.getUrlValue('max_km') != '0' ?  BonyVOSearch.getUrlValue('max_km')  : max ;
			$('vo_km').innerHTML = '' ;
			var so = new SWFObject("public/swf/reglette_v3.swf", "flash_price", "171", "81", "8", "#FFFFFF");
		    so.addParam('wmode', 'transparent');
		    so.addParam('menu', 'false');
		    so.addVariable('fv_min', min);
		    so.addVariable('fv_max', max);
		    so.addVariable('fv_borneMin', bMin);
		    so.addVariable('fv_borneMax', bMax);
		    so.write("vo_km");
		}
		
		if($('vo_price') || $('vo2_price'))
		{
			BonyVOSearch.setPrice(result.prix_min, result.prix_max) ; 
		}
		
		if($('pro_pdf'))
		{
			$('pro_pdf').innerHTML = '<a href="bony/pdf/generate?' + BonyVOSearch.getParams() + '" target="_blank">Télécharger les résultats de votre recherche</a>'
		}
		
		BonyVOSearch.search() ;
		//$('loading-vo').removeClassName('ajax-loading') ;
	},
	getAttributes: function(){
		//$('loading-vo').addClassName('ajax-loading') ;
		
		var params = BonyVOSearch.getParams() ;
		params = params + '&get_carrosserie=' + BonyVOSearch.getUrlValue('carrosserie') ;
		params = params + '&get_site=' + BonyVOSearch.getUrlValue('site') ;
		params = params + '&get_boite=' + BonyVOSearch.getUrlValue2('boite') ;
		params = params + '&pro=' + this._pro ;
		
		var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vo/getAttributes', 
		{
			method: 'post', 
			parameters: params,
			onComplete: BonyVOSearch.completeAttributes
		});
	},
	completeSearch : function(request){
		var result = eval('(' + request.responseText + ')');
		
		if($('vo_results'))
		{
			$('vo_results').style.display = 'block' ;
			$('vo_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') ;
		
		if($('vo_results'))
		{
			var params = BonyVOSearch.getParams() ;
						
			var ajax = new Ajax.Request(PmsUrl.getBaseUrl() + 'bony/vo/getVehicules', 
			{
				method: 'post', 
				parameters: params,
				onComplete: BonyVOSearch.completeSearch
			});
		}
	},
	getParams:function()
	{
		var url = 'marque=' + $('vo_marque').value + '&gamme=' + $('vo_gamme').value + '&mot=' + $('vo_mot').value ;
		if($('vo_min_price')) url = url + '&min_price=' + $('vo_min_price').value ;
		if($('vo_max_price')) url = url + '&max_price=' + $('vo_max_price').value ;
		if($('vo_min_km')) url = url + '&min_km=' + $('vo_min_km').value ;
		if($('vo_max_km')) url = url + '&max_km=' + $('vo_max_km').value ;
		if($('vo_boite'))  url = url + '&boite=' + $('vo_boite').value ;
		if($('vo_carrosserie')) url = url + '&carrosserie=' + $('vo_carrosserie').value ;
		if($('vo_site'))   url = url + '&site=' + $('vo_site').value ;
		if($('vo_promo'))
		{
		  if($('vo_promo').checked) url = url + '&promotions=true' ;
		}
		
		return url ;
	},
	getUrlValue: function(name)
	{
		if(this._aSelected)
		{
			var s = "BonyVOSearch._aSelected." + name ;
			var res = eval(s) ;
			if(res) return res ;
			else res ;
		}
		return 0 ;
	},
	getUrlValue2: function(name)
	{
		if(this._aSelected)
		{
			var s = "BonyVOSearch._aSelected." + name ;
			var res = eval(s) ;
			if(res) return res ;
			else res ;
		}
		return -1 ;
	},
	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 ;
	},
	setPrice: function(min, max){
		if($('vo_price'))
		{
			$('vo_price').innerHTML = '' ;
			var url = 'achat-voiture-occasion.html?marque=' + $('vo_marque').value + '&gamme=' + $('vo_gamme').value + '&mot=' + $('vo_mot').value ;
			var so = new SWFObject("public/swf/reglette.swf", "flash_price", "173", "93", "8", "#FFFFFF");
		    so.addParam('wmode', 'transparent');
		    so.addParam('menu', 'false');
		    so.addVariable('fv_min', min);
		    so.addVariable('fv_max', max);
		    so.addVariable('fv_url', url);
		    so.write("vo_price");
			return ;
		}
		if(	$('vo2_price'))
		{
			var bMin = BonyVOSearch.getUrlValue('min_price') ?  BonyVOSearch.getUrlValue('min_price')  : min ;
			var bMax = BonyVOSearch.getUrlValue('max_price') ?  BonyVOSearch.getUrlValue('max_price')  : max ;
			$('vo2_price').innerHTML = '' ;
			var so = new SWFObject("public/swf/reglette_v2.swf", "flash_price", "171", "81", "8", "#FFFFFF");
		    so.addParam('wmode', 'transparent');
		    so.addParam('menu', 'false');
		    so.addVariable('fv_min', min);
		    so.addVariable('fv_max', max);
		    so.addVariable('fv_borneMin', bMin);
		    so.addVariable('fv_borneMax', bMax);
		    so.write("vo2_price");
		}
	}
};
