var selectedRegions = ''; // regiony zvolene v mapce, IDcka oddelene carkou

/**
 * jCarousel pre Rocne Vozy v pravom tabe
 */
function initCarousel()
{
	$('#carousel').jcarousel({
		auto: 8,
		vertical: true,
		scroll: 3,
		initCallback: carousel_initCallback
	});
}

function carousel_initCallback(carousel)
{
    // Disable autoscrolling if the user clicks the prev or next button.
    carousel.buttonNext.bind('click', function() {
        carousel.startAuto(0);
    });

    carousel.buttonPrev.bind('click', function() {
        carousel.startAuto(0);
    });

    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function() {
        carousel.stopAuto();
    }, function() {
        carousel.startAuto();
    });
}

/**
 * initBodies registruje handleri na obrazky karoserii
 */
function initBodies()
{
	$('.box-karoseria').mouseover(function() {
		$(this).css('background', 'transparent url(/i/img/4/karoserie/karoserie_bg.png) no-repeat 0 0');
	});
	
	$('.box-karoseria').mouseout(function() {
		var img = $(this).children('.img-karoseria').html();
		if (!img) {
			$(this).css('background', 'none');
		}
	});
	
	$('.box-karoseria').toggle(function() {
		$(this).children('.img-karoseria').html('<div class="karoserie-tick" />');
		updateMatchingCarsCount();
	}, function() {
		$(this).children('.img-karoseria').html('');
		updateMatchingCarsCount();
	});
}

/**
 * Inicializacia flashovej mapy regionov
 */
function initFlashMap()
{
	var config = {
		sensitivity: 2,
		interval: 100,
		over: function () {
			var embed = $(this).children('*:first');
			embed.attr('width', '272');
			embed.attr('height', '189');
			$('#karoserie').css('visibility', 'hidden');
		},
		timeout: 300,
		out: function () {
			var embed = $(this).children(':first-child');
			embed.attr('width', '143');
			embed.attr('height', '84');
			$('#karoserie').css('visibility', 'visible');
		}
	};
	
	$('#flashcontent').hoverIntent(config);
}

/**
 * Inicializacia sliderov na homepage
 * vola sa z pageHeader document ready funkcie
 */
function initSliders()
{
	$('#slider_cena').slider({ 
		step: 2,
		range: true,
		min: 0,
		max: 100,
		values: [0, 100],
		slide: priceRangeChanged,
		stop: updateMatchingCarsCount
	});
	$('#slider_doprovozu').slider({ 
		step: 9, 
		range: true,
		min: 0,
		max: 100,
		values: [0, 100],
		slide: inOperationRangeChanged,
		stop: updateMatchingCarsCount
	});
	$('#slider_najeto').slider({
		range: true,
		min: 0,
		max: 100,
		values: [0, 100],
		slide: speedometerRangeChanged,
		stop: updateMatchingCarsCount
	});
}

function change_region(regionIds)
{
	selectedRegions = regionIds;
	updateMatchingCarsCount();
}

/**
 * Vola se pri zmene pozice nektereho z posuvniku na cenove ose.
 * @param e event
 * @param ui user interface
 */
function priceRangeChanged(e, ui)
{
	var values = $('#slider_cena').slider('option', 'values');
	
	lowerPrice = convertPriceSliderValueToPrice(values[0]);
	upperPrice = convertPriceSliderValueToPrice(values[1]);

	updatePriceRangeHeader();
}

/**
 * Vola se pri zmene pozice nektereho z posuvniku na ose "do provozu".
 * @param e event
 * @param ui user interface
 */
function inOperationRangeChanged(e, ui)
{
	var values = $('#slider_doprovozu').slider('option', 'values');

	lowerInOperation = convertInOperationSliderValueToDate(values[0]);
	upperInOperation = convertInOperationSliderValueToDate(values[1]);

	updateInOperationRangeHeader();
}

/**
 * Vola se pri zmene pozice nektereho z posuvniku na ose "najeto".
 * @param e event
 * @param ui user interface
 */
function speedometerRangeChanged(e, ui)
{
	var values = $('#slider_najeto').slider('option', 'values');

	lowerSpeedometer = convertSpeedometerSliderValueToKm(values[0]);
	upperSpeedometer = convertSpeedometerSliderValueToKm(values[1]);

	updateSpeedometerRangeHeader();
}

function updateDealersList()
{
	//prazdne, na uvodni strance neni zadny seznam prodejcu
}

/**
 * Aktualizuje pocet vyhovujicich vozu na tlacitku pro zobrazeni vysledku.
 */
function updateDisplayOffersButton(carsCount)
{
	document.getElementById('displayOffersButton').value = JSLang['Show'] + ' '
			+ carsCount + ' ' + JSLang['offers'];
}

/**
 * Aktualizuje zahlavi cenoveho slideru podle aktualne zvolene ceny.
 */
function updatePriceRangeHeader()
{
	var priceRangeHeader = document.getElementById('priceRangeHeader');

	if (upperPrice == null) {
		if (lowerPrice == 0) {
			priceRangeHeader.innerHTML = JSLang['any'];
		} else {
			priceRangeHeader.innerHTML = lowerPrice + ' ' + JSLang['czk'] + ' - ' + JSLang['unlimited'];
		}
	} else {
		priceRangeHeader.innerHTML = lowerPrice + ' ' + JSLang['czk'] + ' - ' + upperPrice + ' ' + JSLang['czk'];
	}
}

/**
 * Aktualizuje zahlavi slideru "do provozu" podle aktualne zvoleneho data.
 */
function updateInOperationRangeHeader()
{
	var inOperationRangeHeader = document.getElementById('inOperationRangeHeader');

	if (lowerInOperation == null) {
		var today = new Date();

		if (upperInOperation == today.getFullYear()) {
			inOperationRangeHeader.innerHTML = JSLang['any'];
		} else {
			inOperationRangeHeader.innerHTML = JSLang['to'] + ' ' + upperInOperation;
		}
	} else {
		inOperationRangeHeader.innerHTML = lowerInOperation + ' - ' + upperInOperation;
	}
}

/**
 * Aktualizuje zahlavi slideru "najeto" podle aktualne zvoleneho poctu km.
 */
function updateSpeedometerRangeHeader()
{
	var speedometerRangeHeader = document.getElementById('speedometerRangeHeader');

	if (upperSpeedometer == null) {
		if (lowerSpeedometer == 0) {
			speedometerRangeHeader.innerHTML = JSLang['any'];
		} else {
			speedometerRangeHeader.innerHTML = JSLang['from'] + ' ' + lowerSpeedometer + ' km';
		}
	} else {
		speedometerRangeHeader.innerHTML = lowerSpeedometer + ' km - '
				+ upperSpeedometer + ' km';
	}
}

/**
 * Volana odkazom Rozsirene hledani z HP
 * Preda parametre z hp do vyhledavani
 */
function displayAdvancedSearch()
{
	loadPage(urlPrefix + '/Search');
	
	var url = buildQuery();
	
	// Karoserie z HP sa neprenasaju do Vyhladavania z dovodu multiselectu na HP a obycajneho selectu na stranke Vyhladavania
	var reg = new RegExp("&?bodyMix=.*[0-9](&?.*$)", "g");
	url = url.replace(reg, "$1");

	var reg = new RegExp("&?body.*=[0-9]*", "g");
	url = url.replace(reg, "");

	document.location = urlPrefix + '/Search' + '?' + url;
}

/**
 * Vytvari query z navolenych hodnot filtru.
 * @return string
 */
function buildQuery()
{
	var queryParameters = new Object();
	var i;

	var selectParameters = {
		'znacka': 'mark',
		'model': 'model'
	}

	for (selectId in selectParameters) {
		var selectValue = document.getElementById(selectId).value;

		// Je-li "nespecifikovano", neuvadi se do query
		if (selectValue != 0) {
			var queryParameterName = selectParameters[selectId];

			queryParameters[queryParameterName] = selectValue;
		}
	}

	var checkBoxParameters = {
		'benzin': 'fuelList[1]',
		'diesel': 'fuelList[2]',
		'plyn': 'fuelList[3]',
		'exVat': 'exVat',
		// 'leasing': 'noLeasingWithout',
		'oneYear': 'isRocnivuz'
	};

	for (checkBoxId in checkBoxParameters) {
		var el = document.getElementById(checkBoxId);
		if (el.checked) {
			queryParameters[checkBoxParameters[checkBoxId]] = el.value;
		}
	}

	if (selectedRegions != '' && selectedRegions != '0') {
		var selRegArr = selectedRegions.split(",");
		for (i = 0; i < selRegArr.length; i++) {
			if (selRegArr[i] == 0)
				continue;
			queryParameters['regionList[' + selRegArr[i] + ']'] = selRegArr[i];
		}
	}

	var query = '';

	query += '&priceFrom=' + lowerPrice;

	if (upperPrice != null) {
		query += '&priceTo=' + upperPrice;
	}

	if (lowerInOperation != null) {
		query += '&inOperationFrom=' + lowerInOperation;
	}

	query += '&inOperationTo=' + upperInOperation;

	query += '&speedometerFrom=' + lowerSpeedometer;

	if (upperSpeedometer != null) {
		query += '&speedometerTo=' + upperSpeedometer;
	}

	for (parameterName in queryParameters) {
		query += '&' + parameterName + '=' + queryParameters[parameterName];
	}
	
	// Karoserie + jQuery
	var bodyBoxes = $('.box-karoseria');
	var bodyName;
	var bodyValues = new Array();
	var bodyMix = '';
	var bodyMixCnt = 0;
	
	var i = 0;
	$.each(bodyBoxes, function() {
		var isTicked = $(this).children('.img-karoseria').html();
		
		if ( isTicked ) {
			bodyName = $(this).children('.img-karoseria').attr('id');
			
			switch (bodyName) {
				case 'karoseria-sedan': 
					bodyValues[i++] = 1;
					bodyValues[i++] = 6;
					bodyValues[i++] = 7;
					bodyValues[i++] = 13;
					bodyMix = '1_6_7_13';
					bodyMixCnt++;
					break;
				case 'karoseria-kupe':
					bodyValues[i++] = 2;
					bodyValues[i++] = 3;
					bodyMix = '2_3';
					bodyMixCnt++;
					break;
				case 'karoseria-kombi': 
					bodyValues[i++] = 4;
					bodyValues[i++] = 8;
					bodyMix = '4_8';
					bodyMixCnt++;
					break;
				case 'karoseria-van':
					bodyValues[i++] = 5;
					bodyValues[i++] = 9;
					bodyValues[i++] = 15;
					bodyMix = '5_9_15';
					bodyMixCnt++;
					break;
				case 'karoseria-suv':
					bodyValues[i++] = 10;
					bodyValues[i++] = 11;
					bodyValues[i++] = 16;
					bodyMix = '10_11_16';
					bodyMixCnt++;
					break;
				case 'karoseria-other':
					bodyValues[i++] = 14;
					bodyValues[i++] = 17;
					bodyValues[i++] = 18;
					bodyValues[i++] = 19;
					bodyMix = '14_17_18_19';
					bodyMixCnt++;
					break;
				default: break;
			}
		}
	});

	if (bodyValues[0]) {
		var i = 0;
		$.each(bodyValues, function() {
			query += '&body['+i+']=';
			query += bodyValues[i];
			i++;
		});
	}

	if (bodyMixCnt == 1) {
		query += '&bodyMix='+bodyMix;
	}

	// idecka vozu
	var carId = $('#carId').val();
	if (carId != undefined && carId != '')
		query += '&carId='+carId;

	var evidence = $('#evidence').val();
	if (evidence != undefined && evidence != '')
		query += '&evidence='+evidence;
	
	return query;
}

