(function($) {

  $.fn.bbvaslider = function(options) {

    var opts = $.extend({}, $.fn.bbvaslider.defaults, options);

    return this.each(function() {

      $this = $(this);

      var o = $.meta ? $.extend({}, opts, $this.data()) : opts;

			$this.slider({
    			value:$.fn.bbvaslider.getDefaultValue(o),
    			min:o.meses[0],
    			max:o.meses[o.meses.length-1],
    			range:"min",
					step: 1,
					slide: function(event, ui) {
								var meses = $.fn.bbvaslider.getMesesValue(ui.value,o);
								var interes = $.fn.bbvaslider.getInteresValue(meses,o);
								var cuota = $.fn.bbvaslider.getCuota(interes,meses,o);
								$("#"+o.mesesId).val(meses);
								$("#"+o.interesId).val(interes);
								$("#"+o.cuotaId).val(cuota.replace('.',','));//+'\u20AC/mes');
					}
			});
			
   		
   		$.fn.bbvaslider.buildScale(o);

   		$("#"+o.cuotaId+",#"+o.importeId+",#"+o.mesesId+",#"+o.interesId).attr("readOnly", true);
		var mes = $.fn.bbvaslider.getMesesValue($this.slider("value"),o);
		var inter = $.fn.bbvaslider.getInteresValue(mes,o);
		var cuota = $.fn.bbvaslider.getCuota(inter,mes,o);
				
	
	    $("#"+o.mesesId).val(mes);
		$("#"+o.interesId).val(inter);
	    $("#"+o.cuotaId).val(cuota.replace('.',','));//+'\u20AC/mes');

    });

  };

  $.fn.bbvaslider.getDefaultValue = function(options) {
    var rango_total = options.meses[options.meses.length-1]-options.meses[0];
		var valor = options.meses[0];
		var valor_ant = 0;
		var incremento = rango_total/options.meses.length;
		for (i = 0;i<options.meses.length+1;i++){
				if (i!=0){
					valor += incremento;
				}
				if (i!=0 && options.defaultValue==options.meses[i-1] && i<options.meses.length+1){
							valor_xscale = (((valor-valor_ant)/2)+valor_ant);
							return valor_xscale;
				}
				valor_ant = valor;
		}
		
		return options.meses[0];

  };


  $.fn.bbvaslider.getMesesValue = function(value,options) {
   	var rango_total = options.meses[options.meses.length-1]-options.meses[0];
		var longi  = options.meses.length;
		var inc =(rango_total/longi);
		for (i = 0;i<longi-1;i++){
			if (value >=((i*inc)+options.meses[0]) && value < (((i+1)*inc)+options.meses[0])){
						return options.meses[i];	
			}
		}
		return options.meses[options.meses.length-1];
  };

  $.fn.bbvaslider.getInteresValue = function(value,options) {
		var rango_total = options.meses[options.meses.length-1]-options.meses[0];
		var longi  = options.meses.length;
		var inc =(rango_total/longi);
		for (i = 0;i<longi-1;i++){
			if (value >=((i*inc)+options.meses[0]) && value < (((i+1)*inc)+options.meses[0])){
						return options.intereses[i];	
			}
		}
		return options.intereses[options.intereses.length-1];
  };
  
  $.fn.bbvaslider.getCuota = function(interes,meses,o) {
		var importe = $("#"+o.importeId).attr("value");
		return((parseFloat(interes*importe)+parseFloat(importe))/meses).toFixed(2);
  };  


  $.fn.bbvaslider.buildScale = function(options) {
   	var rango_total = options.meses[options.meses.length-1]-options.meses[0];
		var valor = 0;
		var valor_ant = 0;
		var incremento = options.width/(options.meses.length);
		for (i = 0;i<options.meses.length+1;i++){
				if (i!=0){
					valor += incremento;	
				}
				$("#"+options.legendScaleId).append('<span style="left:'+valor+'px"/>');
				if (i>0 && i<options.meses.length+1){
							valor_xscale = ((valor-valor_ant)/2)+valor_ant;
							$("#"+options.legendXScaleId).append('<li style="left:'+valor_xscale+'px"><span>'+options.meses[i-1]+'</span></li>');				
				}
				valor_ant = valor;
		}
  }  

  // plugin defaults
  $.fn.bbvaslider.defaults = {
    meses: [3,6,12,18,27,36],
    intereses: [0,0,0,0,0,0.10],
    defaultValue: 18,
  	importeId:"importe",
  	mesesId:"meses",
  	interesId:"interes",
  	cuotaId:"cuota",
  	legendScaleId:"legend_scale",
  	legendXScaleId:"legend_xscale",
  	width:165
  };

})(jQuery);


