(function($){
	$.fn.extend({
		catAjax: function(options) {
		debug('hilight selection count: ' + this.size())
		var defaults = {
			selec_subcategory: '<select class="subcategory_ajax"></select>',
			select_marca: '<select class="marca_ajax"></select>',
			token: '',
			useselectjs: false
		};
            var options = $.extend(defaults, options);

	return this.each(function() {
		//Creating a reference to the object
		var obj_form = $('form.categories_ajax', this);
		var obj_sub = $('input.submit', this);

		if (options.useselectjs) {
			var obj_sec = $('div.category_ajax', this);
			var obj_fam = $('div.subcategory_ajax', this);
			var obj_mar = $('div.marca_ajax', this);

		} else {
			var obj_sec = $('select.category_ajax', this);
			var obj_fam = $('select.subcategory_ajax', this);
			var obj_mar = $('select.marca_ajax', this);
		}
		obj_sec.data('width', obj_sec.css('width'));
		obj_fam.data('width', obj_fam.css('width'));
		obj_mar.data('width', obj_mar.css('width'));
		
		obj_sec.change(function () {
			obj_sec.focusout();
			cargar_familias(obj_sec,obj_fam,obj_mar);
			if ( $.browser.msie ) obj_sec.css('width',obj_sec.data('width'));
		});
		obj_fam.change(function () {
			obj_fam.focusout();
		    cargar_marcas(obj_fam.val(),obj_mar);
			if ( $.browser.msie ) obj_fam.css('width',obj_fam.data('width'));
		});
		obj_sub.click(function(event) {
			obj_sub.focusout();
			buscar(obj_form,obj_sec,obj_fam,obj_mar);
		});

// 		if ( $.browser.msie ) {
// 			obj_mar.change(function () {
// 				obj_mar.css('width',obj_mar.data('width'));
// 			});
// 			$('select', this).bind('mouseenter',function () {
// 				//$(this).data('width', $(this).css('width'));
// 				//clearTimeout($(this).data('timer'));
// 				//$(this).data('timer',setTimeout('poner_ancho($(this))',2000))
// 				//$(this).css('min-width',$(this).data('width'));
// 				$(this).css('width','auto');
// 			});
// 
// 			//$('select option', this).bind('mouseleave',function () {
// 				//$(this).parent().css('width',$(this).parent().data('width'));
// 				//clearTimeout($(this).data('timer'));
// 				//$(this).data('timer',setTimeout('poner_ancho($(this))',2000));
// 				//debug('mouseleave ');
// 				//debug(this);
// 				//debug($(':hover',$(this).parent()));
// 			//});
// 			$('select', this).bind('focusout',function () {
// 				 $(this).css('width',$(this).data('width'));
// 			});
// 		}
	  });

	    //
	    // private function for debugging
	    //
	    function debug(msg) {
	      if (window.console && window.console.log)
		window.console.log(msg);
	    }
	      function poner_ancho(obj) {
			$(obj).css('width',$(obj).data('width'));
	      }

	   function cargar_familias(obj_sec,obj_fam,obj_mar) {
		debug('en cargar familias');
		if (options.useselectjs) {
			var obj_sec_val = obj_sec.data('val');
		} else {
			var obj_sec_val = obj_sec.val();
		}
		if (obj_sec_val == 0) {
			if (options.useselectjs) {
				debug($('option > div', obj_fam));
				$('div.option > div', obj_fam).slice(1).remove();
				$('div.option > div', obj_mar).slice(1).remove();
			} else {
				$('option', obj_fam).slice(1).remove();
				$('option', obj_mar).slice(1).remove();
			}
			return;
		}
		$.ajax({
			type: "GET",
			dataType: "json",
			url: 'index.php',
			data: 'route=module/categories_ajax/getCategories&parent_id='+obj_sec_val,
			success: function(msg){
			if (options.useselectjs) {
				debug($('div.option > div', obj_fam));
				$('div.option > div', obj_fam).slice(1).remove();
				$('div.option > div', obj_mar).slice(1).remove();
			} else {
				$('option', obj_fam).slice(1).remove();
				$('option', obj_mar).slice(1).remove();
			}
			  if (msg.success) {
			    //alert("secciones recibidas");
			    //if ( $('option', obj_fam).length == 1 ) {
			      //obj_fam.append('<option value="" selected="selected">'+options.select_marca_text+'</option>');
			      $.each(msg.data, function(key, val) {
				if (options.useselectjs) {
					$('div.option',obj_fam).append('<div value="'+val.category_id+'" >'+val.name+'</div>');
				} else {
					obj_fam.append('<option value="'+val.category_id+'" >'+val.name+'</option>');
				}
			      });
			    //}
			  }
			  cargar_marcas(obj_sec_val,obj_mar);
			}
		});
	   }

	   function cargar_marcas(category,obj_mar) {
		$.ajax({
			type: "GET",
			dataType: "json",
			url: 'index.php',
			data: 'route=module/categories_ajax/GetMarcasPosibles&category='+category,
			success: function(msg){
			  $('option', obj_mar).slice(1).remove();
			  if (msg.success) {
			    //alert("secciones recibidas");
			    //if ( $('option', obj_fam).length == 1 ) {
			      //obj_fam.append('<option value="" selected="selected">'+options.select_marca_text+'</option>');
			      $.each(msg.data, function(key, val) {
				if (options.useselectjs) {
					$('div.option',obj_mar).append('<div value="'+val.category_id+'" >'+val.name+'</div>');
				} else {
					obj_mar.append('<option value="'+val.manufacturer_id+'" >'+val.name+' ('+val.numero+')</option>');
				}
			      });
			    //}
			  }

			}
		});
	   }

	function buscar(form,obj_sec,obj_fam,obj_mar) {

		if (obj_fam.val() == 0) {
			
			if (obj_sec.val() == 0) {
				var category = '';
			} else {
				var category = '&category_id='+obj_sec.val();
			}
		} else {
			var category = '&category_id='+obj_fam.val();
		}
		if (obj_mar.val() == 0) {
			var manufacturer = '';
		} else {
			var manufacturer = '&manufacturer_id='+obj_mar.val()
		}

		if (options.token != '') {
			var token='&token='+options.token;
		} else {
			var token = '';
		}
		var url = "?route=product/avsearch"+category+manufacturer+token;
		//alert(url);
		location = url;
	}




	   function poner_marcas_posibles(select_marcas,cod_sec,cod_fam) {
	    
		$.ajax({
			type: "POST",
			dataType: "json",
			data: 'accion=get_marcas_posibles&cod_sec='+cod_sec+'&cod_fam='+cod_fam,
			success: function(msg,textStatus){
			  if (msg.marcas) {
			    select_marcas.append('<option value="" selected="selected">'+options.select_marca_text+'</option>');
			    $.each(msg.marcas, function(marca, count) {
			      select_marcas.append('<option value="'+marca+'" >'+marca +'  ('+count+' articulos)</option>');
			    });
			  }

			}
		});
	   }


	}
  });


})(jQuery);
