jQuery.fn.preset = function(options) {
	options = jQuery.extend({
		value: 'Default value',
		className: 'default'
	}, options);

	return this.each(function() {

		var target = this;
		var $target = $(target);

		if  ( $target.val()!='' ) return; // skip if prefilled
			
		target.defaultValue = options.value;
		if (!$target.val() || $target.val() == options.value) $target.addClass(options.className);
		if ($target.hasClass(options.className)) $target.val(options.value);

		var hideDefault = function() {
			if ($target.val() == target.defaultValue) $target.val('').removeClass(options.className);
		}

		var showDefault = function() {
			if (!$target.val()) $target.addClass(options.className).val(target.defaultValue);
		}

		$target.unbind('focus', target.hideDefault).unbind('blur', target.showDefault).focus(hideDefault).blur(showDefault).closest('form').submit(hideDefault);
	});
}

function initProductFilters() {	   
	$('.jQuery_PageFilter').change(function(){											
		setFilterAjaxBusy(true);
		onFilterChange();
	});
	$('.jQuery_PageSorter').change(function(){
		setFilterAjaxBusy(true);																
		$('#filter_sorting').val($(this).val());										
		onFilterChange();
	});
	$('.jQuery_PageResultsPerPage').change(function(){
		setFilterAjaxBusy(true);												
		$('#filter_rpp').val($(this).val());
		document.location='#pagetop';
		onFilterChange();
	});		
	$('.jQuery_PageNr').click(function(){
		setFilterAjaxBusy(true);												
		$('#filter_page').val($(this).text());
		onFilterChange();
		document.location='#pagetop';
		return false;
	});				
	$('.slider').each(function(){
			var slider = $(this);		
			slider.slider({
				range: true,			
				values: [parseFloat(slider.attr('data_current_min'),10), parseFloat(slider.attr('data_current_max'),10)],			
				min: parseFloat(slider.attr('data_limit_min'),10),
				max: parseFloat(slider.attr('data_limit_max'),10),
				animate: 200,
				slide: function(event, ui) {	
					slideSlider($(this),ui);
				},
				change: function(event, ui) {		
					slideSlider($(this),null);				
				},
				start: function(event, ui) {
					abortFilterAjax();
				},
				stop: function(event, ui) {
					slideSlider($(this),null);
					setFilterAjaxBusy(true);													
					onFilterChange();
				},
				step: parseFloat(slider.attr('data_limit_step'),10)
			});				
		});		
	$('.slider').each(function(){slideSlider($(this));});		
}	

function slideSlider(slider,ui)
{				
	var name = slider.attr('data_name');
	var min_val = ui ? ui.values[0] : parseFloat(slider.slider('values', 0));
	var max_val = ui ? ui.values[1] : parseFloat(slider.slider('values', 1));	

	if ( min_val==max_val ) return false;

	$('#'+name+'_min').val(min_val);
	$('#'+name+'_max').val(max_val);
		
	var slider_min = $('#slider_min_'+name);
	var slider_max = $('#slider_max_'+name);			
	
	slider_min.html(slider.attr('data_prefix')+(min_val.toString(10).replace('.',','))+slider.attr('data_postfix'));
	slider_max.html(slider.attr('data_prefix')+(max_val.toString(10).replace('.',','))+slider.attr('data_postfix'));										
					
	var slider_width = slider.width()+4;				
	var min_width = slider_min.width();
	var max_width = slider_max.width();
	var min_minval = slider.slider('option','min');
	var max_maxval = slider.slider('option','max');
	var delta_val = max_maxval-min_minval;
	var min_pct = (min_val-min_minval)/delta_val;
	var max_pct = (max_val-min_minval)/delta_val;
	var min_pos = Math.round( min_pct*slider_width - min_width/2 );
	if ( min_pos<0 ) min_pos=0;
	if ( (min_pos+min_width)>slider_width ) min_pos=slider_width-min_width;
	var max_pos;		
	if ( min_val==max_val ) {			
		max_pos = min_pos;			
	} else {
		max_pos = Math.round( max_pct*slider_width - max_width/2 );	
		if ( max_pos<0 ) max_pos=0;
		if ( (max_pos+max_width)>slider_width ) max_pos=slider_width-max_width;
		var spacing = max_pos-(min_pos+min_width)-4; // 4px space between labels
		if ( spacing<0 ) {
			min_pos += (spacing/2);
			max_pos -= (spacing/2);
			if ( min_pos<0 ) { max_pos-=min_pos; min_pos=0;	}	
			if ( max_pos>(slider_width-max_width) ) { max_pos=(slider_width-max_width); min_pos=max_pos-4-min_width; }	
		} 
	}									
	slider_min.css({'left': min_pos + 'px'});
	slider_max.css({'left': max_pos + 'px'});				
}

function setFilterAjaxBusy(setting)
{			
	if ( setting ) {
		$('#products .item').css({'visibility':'hidden'});
		$('#products .ajax-loader').css({'display':'block'});
	} else {
		$('#products .item').css({'visibility':'visible'});
		$('#products .ajax-loader').css({'display':'none'});
	}
}

var ajax_filtering_request = null;

function abortFilterAjax()
{
	if ( ajax_filtering_request ) ajax_filtering_request.abort();
	ajax_filtering_request = null;
}

function onFilterChange() {		
	$('#productfilter').submit();
	/*
	var q = '?';
	$('#productfilter input').each(function(){
		if ($(this).attr('type')!='checkbox' || $(this).attr('checked') )
		q += $(this).attr('name')+'='+$(this).val()+'&';
	});
	q += 'ajax=1';								
	abortFilterAjax();				
	ajax_filtering_request = $.ajax({
		url: q,
		success: function(data) {				
			if ( data ) {							
				$('#jQuery_ProductDetail').html(data);
				ajax_filtering_request = null;
				setFilterAjaxBusy(false);
			}
		}
	});	
	*/
}

function handleDateInputDdmmyyyy(input)
{
	var val = $(input).val();
	var clean = '';
	for ( var i=0; i<val.length; i++ ) { var c=val.substr(i,1); if ( c>='0' && c<='9' ) clean += c; }
	$(input).val(clean);
	clean = clean+'00000000';
	clean = clean.substr(4,4)+'-'+clean.substr(2,2)+'-'+clean.substr(0,2);
	$('#'+$(input).attr('data-hiddenfield')).val(clean);	
}

$(function(){  
	$('input[name=cdg_basket_betaalmethode_id]').change(function(){
		$('#ideal_issuers').css({'display':$('.option_BETAALMETHODE_IDEAL input[type=radio]').attr('checked') ? 'block' : 'none'});
	});
});	   

$(function(){   
	$('.date select.dag').change(function(){
		var field = $('#'+$(this).attr('data-hiddenfield'));		
		var datum = field.val().substr(0,8) + $('option[selected]',this).val();
		field.val(datum);
	});
	$('.date select.maand').change(function(){
		var field = $('#'+$(this).attr('data-hiddenfield'));		
		var datum = field.val().substr(0,5) + $('option[selected]',this).val() + field.val().substr(7,3);
		field.val(datum);
	});				
	$('.date select.jaar').change(function(){
		var field = $('#'+$(this).attr('data-hiddenfield'));		
		var datum = $('option[selected]',this).val() + field.val().substr(4,6);
		field.val(datum);
	});	
	$('.numbersonly').keyup(function(){ this.value = this.value.replace(/[^0-9]/gi,''); });
	$('.numbersonly').change(function(){ this.value = this.value.replace(/[^0-9]/gi,''); });
});


