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

/**
 * Stylesheets nachladen
 *
 * @clerk       Tobias Kivelip <live@kleink.de>
 * @author      Tobias Kivelip <tobi@kivelip.net>
 * @copyright   Copyright (c) 2007 - 2008, Tobias Kivelip
 */
function addStylesheet(url) {
    var element = document.createElement('link');
    element.setAttribute('rel', 'stylesheet');
    element.setAttribute('type', 'text/css');
    element.setAttribute('href', url);
    document.getElementsByTagName('head')[0].appendChild(element);
}

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

(function() {
	$(document).ready(init);
	
	function init()
	{
		// setup ajax
		$.ajaxSetup({
			url: ajaxUrl,
			type: 'GET'
		});
		
		// init search form if existent
		if ( $('#gwpool_search_overview').size() > 0 ) {
			initSearchFormOverview();
		} else
		if ( $('#gwpool_searchbox').size() > 0 ) {
			initSearchForm();
			initResultList();
		}
		
		$('dl.login_reminder .login_toggle').click(function()
		{
			$('#reminder').toggle();
		});
	}
	
	function initSearchFormOverview()
	{
		var searchForm = $('#gwpool_search_overview');
		
		$('select', searchForm).change({form:searchForm}, getUpdatedFormData);
		$('input[type="radio"]', searchForm).click({form:searchForm}, getUpdatedFormData);
		
		$('.navi_form li a.form_find, .navi_form li a.form_direct', searchForm).click(switchForm);
	}
	
	function initSearchForm()
	{
		var searchForm = $('#gwpool_searchbox');
		$('select', searchForm).change({form:searchForm}, getUpdatedFormData);
	}
	
	function initResultList()
	{
		// car detail toggle
		$('.car_detail_toggle').click(toggleCarDetails);
		
		// image gallery
		$('.tKGalerie_scroll_left a').click(browseGallery);
		$('.tKGalerie_scroll_right a').click(browseGallery);
		
		// car comparison
		$('a.car_comparison').click(compareCars);
		$('input.compare_item').change(checkComparison);
		
		// car park
		$('.car_park_link').click(parkCar);
		
		$('img.customcondition_info').hover(showTooltip, hideTooltip);
	}
	
	function showTooltip()
	{
		var infoId = $(this).attr('id');
		var id = infoId.substr(infoId.lastIndexOf('_') + 1);
		
		jQuery("#customcondition_"+id).fadeIn();
	}

	function hideTooltip()
	{
		var infoId = $(this).attr('id');
		var id = infoId.substr(infoId.lastIndexOf('_') + 1);
		
		jQuery("#customcondition_"+id).fadeOut();
	}
	
	function checkComparison()
	{
		if ( $('input.compare_item:checked').size() > 3 ) {
			$(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 = $('input.compare_item:checked');
		
    	if ( checkedBoxes.size() >= 2  && checkedBoxes.size() <= 3 ) {
			var url = $('#gwpf_form').attr('action');
			url = url.split('module=suchergebnisse').join('module=compare');
			
			checkedBoxes.each(function()
			{
				var boxId = $(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 ( $(this).parent().hasClass('tKGalerie_scroll_left') ) {
			var delta = -1;
		} else
		if ( $(this).parent().hasClass('tKGalerie_scroll_right') ) {
			var delta = 1;
		} else {
			return false;
		}
		
		var thumbsContainer = $('.tKGalerie_thumbs', $(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 = $(this);
		
		while ( tag.hasClass('result') === false ) {
			tag = tag.parent();
		}
		tag.toggleClass('open');
		
		return false;
	}
	
	function getUpdatedFormData(event)
	{
		var formData = $(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;
		
		$.ajax({
			data: ajaxData,
			success: refreshForm
		});
	}
	
	function refreshForm(data)
	{
		try {
			var result = $.parseJSON(data);
		} catch(e) {
			return false;
		}
		
		// set counter
		if ( typeof(result.count) != 'undefined' ) {
			$('form.gwpool_ajax_form input.btn').attr('value', result.count+' Treffer anzeigen');
		}
		
		// set options
		for ( var i in result.options ) {
			$('form.gwpool_ajax_form #'+prefix+i).html(result.options[i]);
		}
	}
	
	function switchForm()
	{
		// hide all forms and remove active classes
		$('form div[id^="form_"]').hide();
		$('form ul.navi_form li').removeClass('active');
		
		// show selected form and add active class to parent li
		$('form #'+$(this).attr('class')).show();
		$(this).parent().addClass('active');
		
		return false;
	}
	
	function parkCar()
	{
		var tagId = $(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});
		
		$.ajax({
			data: ajaxData,
			success: updateParkStatus
		});
		
		return false;
	}
	
	function updateParkStatus(data)
	{
		try {
			var result = $.parseJSON(data);
		} catch(e) {
			return false;
		}
		
		if ( result.success === true ) {
			$('#car_park_link_'+result.cid).replaceWith('Geparkt!');
			
			$('#carpark').show();
		}
	}
})();
