function filter_change(element)
{
    var themes = $('#themes').val();
    var area = $('#area').val();
    var date = $('#date').val();
    var dateMargin = $('#dateMargin').val();
    var operator = $('#operator').val();
    var ship = $('#ship').val();
    var depport = $('#departureport').val();
    var arrport = $('#arrivalport').val();
    var routeport = $('#portsenroute').val();
    var pricemin = parseInt($('#pricemin').val());
    var pricemax = parseInt($('#pricemax').val());

    if( (pricemin > pricemax && pricemax != 0) || (pricemin == pricemax && pricemin != 0 && pricemax != 0))
    {
		if($(element).attr('id') == 'pricemin')
		{
			if(pricemin == 10000)
				$('#pricemax').val(0);
			else
				$('#pricemax').attr('selectedIndex', $('#pricemin').attr('selectedIndex') + 1);

		}
		else if($(element).attr('id') == 'pricemax')
		{
			$('#pricemin').attr('selectedIndex', $('#pricemax').attr('selectedIndex') - 1);
		}

		pricemax = parseInt($('#pricemax').val());
		pricemin = parseInt($('#pricemin').val());
    }

    /* new dateselection */
    if ( date.match(/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$/) && dateMargin < 7 ) {
        var origDate = date;
        var baseDate = $.date(date, 'dd-MM-yyyy');
        date = baseDate.adjust('D', -dateMargin).format() + ' t/m ' + baseDate.adjust('D', +(dateMargin*2)).format();
    }
    else if (date.match(/^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$/) && dateMargin == 7){
        var origDate = date;
        var dateSplit = date.split('-');
        var dateArray=[dateSplit];

        var month = dateArray[0][1];
        var year = dateArray[0][2];

        var dim = daysInMonth(month, year);
        var baseDate = $.date('01-'+month+'-'+year, 'dd-MM-yyyy');
        var endDate = $.date(dim+'-'+month+'-'+year, 'dd-MM-yyyy');
        date = baseDate.format() + ' t/m ' + endDate.format();
    }
    else{
        date = '';
        var origDate = '';
    }

    $('#num_results_link').toggle();
    $('#loader').css({opacity:0,display:"block"});
    $('#loader').animate({
        opacity:0.6
    },500);
	$.getJSON(
		"/ajax/searchsailings/filter/fullfilterchanged",
		"themes="+themes+
		"&area="+area+
		"&date="+date+
        "&origdate="+origDate+
        "&datemargin="+dateMargin+
		"&operator="+operator+
		"&departureport="+depport+
		"&arrivalport="+arrport+
		"&portsenroute="+routeport+
		"&ship="+ship+
		"&pricemin="+pricemin+
		"&pricemax="+pricemax,
		function(data){

			$('.button.redbig').unbind();
			if(data.num_results[0] == 0)
			{
    			$('#loader').fadeOut(300);
    			$('#num_results_link').toggle();
				$('.button.redbig #num_results').html(data.num_results[0]);
				alert('Uw filteropdracht gaf geen resultaten terug. Verwijder een filter');
				$('.button.redbig').click(function(event){
					event.preventDefault();
					alert('Uw filteropdracht gaf geen resultaten terug. Verwijder een filter');
				});
				return;
			}

		    $('#area').empty();
		    $('#themes').empty();
		    $('#operator').empty();
		    $('#ship').empty();
		    $('#departureport').empty();
		    $('#arrivalport').empty();
		    $('#portsenroute').empty();
		    $('#date').empty();

			$.each(data.area, function(id,name){
				$('#area').append($('<option></option>').val(id).html(name));
			});
			$.each(data.themes, function(id,name){
				$('#themes').append($('<option></option>').val(id).html(name));
			});
			$.each(data.operator, function(id,name){
				$('#operator').append($('<option></option>').val(id).html(name));
			});
			$.each(data.ship, function(id,name){
				$('#ship').append($('<option></option>').val(id).html(name));
			});
			$.each(data.departureport, function(id,name){
				$('#departureport').append($('<option></option>').val(id).html(name));
			});
			$.each(data.arrivalport, function(id,name){
				$('#arrivalport').append($('<option></option>').val(id).html(name));
			});
			$.each(data.portsenroute, function(id,name){
				$('#portsenroute').append($('<option></option>').val(id).html(name));
			});

			$('#area').val(area);
			$('#date').val(origDate);
			$('#themes').val(themes);
			$('#operator').val(operator);
			$('#ship').val(ship);
		    $('#departureport').val(depport);
		    $('#arrivalport').val(arrport);
		    $('#portsenroute').val(routeport);
    		$('#pricemin').val(pricemin);
    		$('#pricemax').val(pricemax);
			$('.button.redbig #num_results').html(data.num_results[0]);
			$('.button.redbig #num_results_bottom').html(data.num_results[0]);
			if(data.displayMode != null)
				$('.button.redbig.target').attr("href", "/Cruises/" + data.displayMode);

			$.each(data.duration, function(id,value){
				$('#num_duration_'+id).html(value);
			});

			$.each(data.zoover, function(id,value){
				$('#num_zoover_'+id).html(value.count);
			});

			$.each(data.stars, function(id,value){
				$('#num_stars_'+id).html(value.count);
			});

			$.each(data.shipfac, function(id,value){
				if(value.count == 0)
					$('#opt_shipfac_'+id).addClass('invalid');
				else
					$('#opt_shipfac_'+id).removeClass('invalid');

				$('#num_shipfac_'+id).html(value.count);
			});

			$.each(data.shipent, function(id,value){
				if(value.count == 0)
					$('#opt_shipent_'+id).addClass('invalid');
				else
					$('#opt_shipent_'+id).removeClass('invalid');

				$('#num_shipent_'+id).html(value.count);
			});

			$.each(data.shipsuitable, function(id,value){
				if(value.count == 0)
					$('#opt_shipsuitable_'+id).addClass('invalid');
				else
					$('#opt_shipsuitable_'+id).removeClass('invalid');

				$('#num_shipsuitable_'+id).html(value.count);
			});

			$.each(data.type, function(id,value){
				if(value.count == 0)
					$('#opt_type_'+id).addClass('invalid');
				else
					$('#opt_type_'+id).removeClass('invalid');

				$('#num_type_'+id).html(value.count);
			});

			$.each(data.size, function(id,value){
				if(value.count == 0)
					$('#opt_size_'+id).addClass('invalid');
				else
					$('#opt_size_'+id).removeClass('invalid');

				$('#num_size_'+id).html(value.count);
			});

			$.each(data.offer, function(id,value){
				if(value.count == 0)
					$('#opt_offer_'+id).addClass('invalid');
				else
					$('#opt_offer_'+id).removeClass('invalid');

				$('#num_offer_'+id).html(value.count);
			});

    		$('#loader').fadeOut(300);
    		$('#num_results_link').toggle();
            update_results();
    		return;
		}
	);
}

function filter_add(filter, value)
{
	var filter = filter;
	var value = value;
	if($('#opt_'+filter+'_'+value).hasClass("invalid"))
		return;

	if($('#opt_'+filter+'_'+value).hasClass("on"))
	{
		filter_remove(filter, value);
		return;
	}

	$.get(
		"/ajax/searchsailings/filter/addfilter",
		{filter : filter, value : value},
		function(){
			filter_change();
			return;
		}
	);

	$('#opt_'+filter+'_'+value).attr('class', 'on');
}

function filter_remove(filter, value)
{
	if($('#opt_'+filter+'_'+value).hasClass('invalid'))
		return;

	$.get(
		"/ajax/searchsailings/filter/removefilter",
		{filter : filter, value : value},
		function(){
			filter_change();
			return;
		}
	);

	$('#opt_'+filter+'_'+value).attr('class', '');
}

function sort_add()
{
	var sort = $('#sorton').val();

	$.get(
		"/ajax/searchsailings/result/addsort",
		{'sort' : sort},
		function(){
			window.location = $('#filter_div a.button').attr('href');
			return;
		}
	);
}

function sort_remove(sortname)
{
	$.get(
		"/ajax/searchsailings/result/removesort",
		{'sort' : sortname},
		function(){
			window.location = $('#filter_div a.button').attr('href');
			return;
		}
	);
}

function reverse_sort(sortname)
{
	$.get(
		"/ajax/searchsailings/result/reverse-sort",
		{'sort' : sortname},
		function(){
			window.location.reload();
			return;
		}
	);
}

function update_results(url, options)
{
    if ( null == url ) {
        url = "/ajax/searchsailings/result/index/";
    }

    $.prettyPhoto.openText('image','Loading','Bezig met het ophalen van de resultaten.<br /><br /><div style="width:248px; text-align:center;"><img src="http://media3.cruisetravel.nl/images/loader.gif" alt="Bezig met laden" /></div>',270,90);

    $.get(
		url,
        null,
		function(data, status){
            $('.ab1_right .searchresults').remove();
            $('.ab1_right').append(data);
            $.prettyPhoto.close();
            if (undefined != options && undefined != options.scrollTo) {
                $.scrollTo(options.scrollTo,0);
            }
            return;
		}
    );
}

function offerButtonClicked()
{
	valArray = $('input:checked');
	shipArray = new Array();
	routeArray = new Array();
	dateCountArray = new Array();
	selectedLowestPrice = $('#pricemin').val();
	selectedHighestPrice = $('#priceMax').val();
	selectedDate = $('#date').val();
	selectedOffset = $('#dateMargin').val();
	
//	console.log(selectedDate);
//	console.log(selectedLowestPrice);
//	console.log(selectedHighestPrice);

	i=0;
	$.each(valArray, function(key, element){
		array = element.value.split("_");

		shipArray[i] = array[0];
		routeArray[i] = array[1];
		dateCountArray[i] = array[2];

		i++;
	});
	
//	console.log(shipArray);
//	console.log(routeArray);
//	console.log(dateCountArray);
	
	if(dateCountArray.length < 1)
	{
		alert("U moet tenminste een afvaart met één afvaart datum selecteren.");
		return false;
	}
	
	sum = 0;
	for(i = 0; i < dateCountArray.length; i++)
	{
//		console.log(dateCountArray[i]);
//		console.log(sum);
		
		sum += parseInt(dateCountArray[i]);
		
		if(sum > 3)
		{
			alert("Het aantal data waarop de door u geselecteerde afvaarten vertrekken is groter dan 3. Pas uw selectie aan door bijvoorbeeld in het filter een vertrekdatum of een prijsklasse te kiezen.");
			return false;
		}
	}
	
	shipQs = shipArray.join(",");
	routeQs = routeArray.join(",");
	
	$('#shipQsOffer').val(shipQs);
	$('#routeQsOffer').val(routeQs);
	$('#selectedLowestPrice').val(selectedLowestPrice);
	$('#selectedHighestPrice').val(selectedHighestPrice);
	$('#selectedDate').val(selectedDate);
	$('#selectedOffset').val(selectedOffset);
	
//	console.log($('#shipQsOffer'));;
//	console.log($('#offerForm'));

	$('#offerform').submit();
	return false;
}


$(document).ready(function(){

    /* Datepicker*/
    $('#date').datepicker();

	/* Link compare button click event */
	$('#compareButton').click(function(event)
	{
		event.preventDefault();
		var valArray = $('input:checked');
		var shipArray = new Array();
		var routeArray = new Array();

		var i=0;
		$.each(valArray, function(key, element){
			array = element.value.split("_");

			shipArray[i] = array[0];
			routeArray[i] = array[1];

			i++;
		});

		if(shipArray.length < 2 || routeArray < 2)
		{
			alert('U moet tenminste twee afvaarten selecteren om te vergelijken.');
			return;
		}
		else if(shipArray.length > 3 || routeArray > 3)
		{
			alert('U kunt maximaal drie afvaarten selecteren om te vergelijken.');
			return;
		}

		var shipQs = shipArray.join(",");
		var routeQs = routeArray.join(",");

		$('#shipQs').val(shipQs);
		$('#routeQs').val(routeQs);

		$('#compareform').submit();
	});
});


function daysInMonth(month, year) {
    return new Date(year, month, 0).getDate();
}
