if( typeof(ajaxUrl) == 'undefined' ) {
	var ajaxUrl = '/gwpool/ajax.php';
}
if( typeof(prefix) == 'undefined' ) {
	var prefix = 'gwpool_';
}

function tKGalerieChange(thumbnailUrl, fullsizeUrl, carId)
{
	$('#tkGalerie_stage_'+carId+' a').attr('href', fullsizeUrl);
	$('#tkGalerie_stage_'+carId+' img').attr('src', thumbnailUrl);
}

(function() {
	jQuery(document).ready(init);
	
	function init()
	{
		// setup ajax
		jQuery.ajaxSetup({
			url: ajaxUrl,
			type: 'GET'
		});
		
		// init search form if existent
		if ( jQuery('#gwpool_search_overview').size() > 0 ) {
			initSearchFormOverview();
		} else
		if ( jQuery('#gwpool_searchbox').size() > 0 ) {
			initSearchForm();
			initResultList();
		}
	}
	
	function initSearchFormOverview()
	{
		var searchForm = jQuery('#gwpool_search_overview');
		
		jQuery('select', searchForm).change({form:searchForm}, getUpdatedFormData);
		jQuery('input[type="radio"]', searchForm).click({form:searchForm}, getUpdatedFormData);
		
		jQuery('.navi_form li a.form_find, .navi_form li a.form_direct', searchForm).click(switchForm);
	}
	
	function initSearchForm()
	{
		var searchForm = jQuery('#gwpool_searchbox');
		jQuery('select', searchForm).change({form:searchForm}, getUpdatedFormData);
	}
	
	function initResultList()
	{
		// car detail toggle
		jQuery('.car_detail_toggle').click(toggleCarDetails);
		
		// image gallery
		jQuery('.tKGalerie_scroll_left a').click(browseGallery);
		jQuery('.tKGalerie_scroll_right a').click(browseGallery);
		
		// car comparison
		jQuery('a.car_comparison').click(compareCars);
		jQuery('input.compare_item').change(checkComparison);
		
		// car park
		jQuery('.car_park_link').click(parkCar);
	}
	
	function checkComparison()
	{
		if ( jQuery('input.compare_item:checked').size() > 3 ) {
			jQuery(this).attr('checked', false);
			alert("Bitte wählen Sie maximal 3 Fahrzeuge für den Vergleich aus!");
			return false;
		}
		
		return true;
	}
	
	function compareCars() {
		var checkedBoxes = jQuery('input.compare_item:checked');
		
    	if ( checkedBoxes.size() >= 2  && checkedBoxes.size() <= 3 ) {
			var url = jQuery('#gwpf_form').attr('action');
			url = url.split('module=suchergebnisse').join('module=compare');
			
			checkedBoxes.each(function()
			{
				var boxId = jQuery(this).attr('id');
				boxId = boxId.substr(boxId.indexOf('_') + 1);
				url += '&compare[]='+boxId;
			});
			
			window.location.href = url;
	    } else {
	        alert("Bitte wählen Sie zwei oder drei Fahrzeuge aus!");
	    }

	    return false;
	}

	function browseGallery()
	{
		if ( jQuery(this).parent().hasClass('tKGalerie_scroll_left') ) {
			var delta = -1;
		} else
		if ( jQuery(this).parent().hasClass('tKGalerie_scroll_right') ) {
			var delta = 1;
		} else {
			return false;
		}
		
		var thumbsContainer = jQuery('.tKGalerie_thumbs', jQuery(this).parent().parent());
	    var thumbs = thumbsContainer.children();

		if ( thumbs.length > 4 ) {
			if ( delta == -1 ) {
				var newChild = thumbs.last().clone();
				thumbs.last().remove();
				thumbs.first().before(newChild);
			} else {
				var newChild = thumbs.first().clone();
				thumbs.first().remove();
				thumbs.last().after(newChild);
			}
			// stole the click handler from thickbox
			newChild.click(function(){
				var t = this.title || this.name || null;
				var a = this.href || this.alt;
				var g = this.rel || false;
				tb_show(t,a,g);
				this.blur();
				return false;
			});
		}
		
		return false;
	}
	
	function toggleCarDetails()
	{
		// find corresponding dl.result
		var tag = jQuery(this);
		
		while ( tag.hasClass('result') === false ) {
			tag = tag.parent();
		}
		tag.toggleClass('open');
		
		return false;
	}
	
	function getUpdatedFormData(event)
	{
		var formData = jQuery(event.data.form).serializeArray();
		var ajaxData = [{name: 'ajax_module', value: 'getFormData'}];
		
		for ( var i in formData ) {
			if ( formData[i].name != 'module' && formData[i].name != 'angebotsnr' ) {
				ajaxData.push(formData[i]);
			}
		}
		
		delete formData;
		
		jQuery.ajax({
			data: ajaxData,
			success: refreshForm
		});
	}
	
	function refreshForm(data)
	{
		try {
			var result = jQuery.parseJSON(data);
		} catch(e) {
			return false;
		}
		
		// set counter
		if ( typeof(result.count) != 'undefined' ) {
			jQuery('form.gwpool_ajax_form input.btn').attr('value', result.count+' Treffer anzeigen');
		}
		
		// set options
		for ( var i in result.options ) {
			jQuery('form.gwpool_ajax_form #'+prefix+i).html(result.options[i]);
		}
	}
	
	function switchForm()
	{
		// hide all forms and remove active classes
		jQuery('form div[id^="form_"]').hide();
		jQuery('form ul.navi_form li').removeClass('active');
		
		// show selected form and add active class to parent li
		jQuery('form #'+jQuery(this).attr('class')).show();
		jQuery(this).parent().addClass('active');
		
		return false;
	}
	
	function parkCar()
	{
		var tagId = jQuery(this).attr('id');
		var carId = tagId.substr(tagId.lastIndexOf('_') + 1);
		
		var ajaxData = [];
		ajaxData.push({name:'ajax_module', value:'GWPParkCar'});
		ajaxData.push({name:'cid', value:carId});
		
		jQuery.ajax({
			data: ajaxData,
			success: updateParkStatus
		});
		
		return false;
	}
	
	function updateParkStatus(data)
	{
		try {
			var result = jQuery.parseJSON(data);
		} catch(e) {
			return false;
		}

		if ( result.success === true ) {
			jQuery('#car_park_link_'+result.cid).replaceWith('Geparkt!');
			
			jQuery('#carpark').show();
		}
	}
})();

