var jQ = jQuery;
function attr_update(e, ui, update_vals){
	
	
	var names = e.attr("fields");
	var min = parseFloat(ui.values[0]);
	var max = parseFloat(ui.values[1]);
	jQ("#" + names + "i_text").html(convert_to_display(min, e, 1));
	jQ("#" + names + "a_text").html(convert_to_display(max, e, 2));
	
	if(update_vals){
		var vmin = (parseFloat(e.attr("min")));
		var vmax = (parseFloat(e.attr("max")));
		
		if (!(max == convert_to_inner(vmax, e))) {
			jQ("#" + names + "a").val(convert_to_display(max, e, 2));
		} else {
			jQ("#" + names + "a").val("");
		}

		if (!(min == convert_to_inner(vmin, e))) {
			jQ("#" + names + "i").val(convert_to_display(min, e, 1));
		} else {
			jQ("#" + names + "i").val("");
		}
	}
}

function log_to_outer(value, elem) {
	var vmin = (parseFloat(elem.attr("min")));
	if(vmin==0){
		vmin = 1;
	}
	var vmax = (parseFloat(elem.attr("max")));
	  // value will be between 0 and 100
	  var min = 0;
	  var max = 100000;
	  // The result should be between 100 an 10000000
	  var minv = Math.log(vmin);
	  var maxv = Math.log(vmax);
	  // calculate adjustment factor
	  var scale = (maxv-minv) / (max-min);
	  var res =  Math.round(Math.exp(minv + scale*(value-min))*100)/100;
	  return res;
}

function log_to_inner(value, elem) {
	if(value == 0){
		value = 1;
	}
	value = Math.log(value);
	var vmin = (parseFloat(elem.attr("min")));
	if(vmin==0){
		vmin = 1;
	}
	var vmax = (parseFloat(elem.attr("max")));
	  // value will be between 0 and 100
	var min = 0;
	var max = 100000;
	// The result should be between 100 an 10000000
	var minv = Math.log(vmin);
	var maxv = Math.log(vmax);
	  
	  
	var scale = (max-min) / (maxv-minv);
	var res =  min + scale*(value-minv);
	return res;
}


//konwersja wartości wyświetlanej na wartośc niezbędną do poprawnego działania slidera
function convert_to_inner(val, elem){
	var multip = parseFloat(elem.attr("multiplier"));
	if(isNaN(multip) || multip==0){
		multip = 1;
		jQ(this).attr("multiplier", 1);
	}
	var res;
	var logs = parseFloat(elem.attr("logscale"));
	if(!(isNaN(logs) || logs==0)){
		res = log_to_inner(val*multip, elem);
	} else {
		res = val * multip;
	}
	
	
	return res;
	
}

//funkcja konwertująca wartość zapisaną wewnętrznie na wartość odpowiednią do wyświetlania lub obliczeń
function convert_to_display(val, elem, round){
	var multip = parseFloat(elem.attr("multiplier"));
	if(isNaN(multip) || multip==0){
		multip = 1;
		jQ(this).attr("multiplier", 1);
	}
	var logs = parseFloat(elem.attr("logscale"));
	var res;
	if(!(isNaN(logs) || logs==0)){
		res = log_to_outer(val, elem);
		if(round==0){
			res = Math.round(res)/multip;
		} else if(round == 1){
			res = Math.floor(res)/multip;
		} else if(round == 2){
			res = Math.ceil(res)/multip;
		}
	} else {
		res = val/multip;
	}

	return res;
}

jQ(document).ready(function() {
	
	jQ('#filterform').submit(function(){
		pageTracker._trackEvent('Filtrowanie', 'Filtr');
	});
	
	jQ('.attrform_val_cb').next().css('cursor', 'pointer').click(function(){
		jQ(this).parent().find('.attrform_val_cb').attr('checked', false);
		jQ(this).prev().attr('checked', true);
	});
	jQ('#attrform_reset').click(function() {
			jQ('.attrform_val_input').val('');
			jQ('.attrform_val_cb').attr('checked', false);
			
			jQ(".sliders").each(function() {
				var vmin = (parseFloat(jQ(this).attr("min")));
				var vmax = (parseFloat(jQ(this).attr("max")));
				var sliderobj = jQ(this);

				sliderobj.slider("values", 1, convert_to_inner(vmax, sliderobj));
				sliderobj.slider("values", 0, convert_to_inner(vmin, sliderobj));
			});
			return false;
		});
	jQ('.aftext').css('cursor', 'pointer').click(function(){
		var t = prompt("Wprowadź wartość:", jQ(this).html());
		if(t!=null){
			
			if(jQ(this).hasClass('afmin')){
				var sliderobj = jQ('#'+jQ(this).attr('id').replace('i_text', '').replace('f', 's'));
				var val=parseFloat(t);
				if(isNaN(val)){
					alert("Wprowadzono nieprawidłową wartość");
					return;
				}
				var maxval = parseFloat(jQ('#'+jQ(this).attr('id').replace('i_text', 'a')).val());
				var maxmax = parseFloat(sliderobj.attr('max'));
				if(val > maxval || val > maxmax){
					alert("Wprowadzono za dużą wartość");
					return;
				}
				
				sliderobj.slider("values", 0, convert_to_inner(val, sliderobj));				
			}
			
			if(jQ(this).hasClass('afmax')){
				var sliderobj = jQ('#'+jQ(this).attr('id').replace('a_text', '').replace('f', 's'));
				var multiplier = parseFloat(sliderobj.attr("multiplier"));
				var val=parseFloat(t);
				if(isNaN(val)){
					alert("Wprowadzono nieprawidłową wartość");
					return;
				}
				var maxval = parseFloat(jQ('#'+jQ(this).attr('id').replace('a_text', 'i')).val());
				var maxmax = parseFloat(sliderobj.attr('min'));
				if(val < maxval || val < maxmax){
					alert("Wprowadzono za niską wartość");
					return;
				}
				sliderobj.slider("values", 1, convert_to_inner(val, sliderobj));				
			}
		}
	});
	jQ(".sliders").each(function() {
		var vmin = (parseFloat(jQ(this).attr("min")));
		var vmax = (parseFloat(jQ(this).attr("max")));
		var sliderobj = jQ(this);

		
		
		var names = jQ(this).attr("fields");

		jQ(this).slider( {
			range : true,
			max : convert_to_inner(vmax, sliderobj),
			min : convert_to_inner(vmin, sliderobj),
			slide : function(e, ui){ attr_update(jQ(this), ui, false); },
			change: function(e, ui){ attr_update(jQ(this), ui, true); }
		});
		
		var min = parseFloat(jQ("#" + names + "i").val());
		var max = parseFloat(jQ("#" + names + "a").val());

		if (!isNaN(max)) {
			jQ(this).slider("values", 1, convert_to_inner(max, sliderobj));
		} else {
			jQ(this).slider("values", 1, convert_to_inner(vmax, sliderobj));
		}

		if (!isNaN(min)) {
			jQ(this).slider("values", 0, convert_to_inner(min, sliderobj));
		} else {
			jQ(this).slider("values", 0, convert_to_inner(vmin, sliderobj));
		}

		jQ(this).children(".ui-slider-handle:first").html('<img src="/images/strzalka_w_prawo.png"/>');
		jQ(this).children(".ui-slider-handle:last").html('<img src="/images/strzalka_w_lewo.png"/>');
	});

});