jQuery(document).ready(function(){
  
	var flash_message_timer = 5000;
  
	if (jQuery('.tx-yagswebautocarsearch-pi1-browseview-selector').length > 0) {
		jQuery('.tx-yagswebautocarsearch-pi1-browseview-selector').bind({
			change: function() {
				jQuery('.tx-yagswebautocarsearch-pi1-browseview-selector').submit();
			}
		});
	}
	if (jQuery('#tx-yagswebautocarsearch-pi2').length > 0) {
		jQuery('.tx-yagswebautocarsearch-pi2-reset').click(function() {
			var item = this;	  	  
			unsetItemCount(jQuery(this).parents('form'));
		});
	}
	if (jQuery('#tx-yagswebautocarsearch-pi2').length > 0) {
		jQuery('.tx-yagswebautocarsearch-pi2').ready(function() {
			var item = this;	  	  
			getItemCount(jQuery(this).parents('form'));
		});
	}  
	if (jQuery('#tx-yagswebautocarsearch-pi2 select').length > 0) {
		jQuery('#tx-yagswebautocarsearch-pi2 select').change(function() {
			if (!jQuery(this).hasClass('tx-yagswebautocarsearch-pi2-language-selector')) {
				var item = this;
				getItemCount(jQuery(this).parents('form'));
			}
		});
	}
	if (jQuery('#tx-yagswebautocarsearch-pi2 input[type=checkbox]').length > 0) {
		jQuery('#tx-yagswebautocarsearch-pi2 input[type=checkbox]').change(function() {
			var item = this;
			getItemCount(jQuery(this).parents('form'));
		});
	}
	if (jQuery('#tx-yagswebautocarsearch-pi2 input[type=text]').length > 0) {
		jQuery('#tx-yagswebautocarsearch-pi2 input[type=text]').change(function() {
			var item = this;
			getItemCount(jQuery(this).parents('form'));
		});
	}
	if (jQuery('#tx-yagswebautocarsearch-pi2-form input[value=empty]').length > 0 || jQuery('#tx-yagswebautocarsearch-pi2-form option[value=empty]').length > 0) {
		jQuery('#tx-yagswebautocarsearch-pi2-form input[value=empty]').val('');
		jQuery('#tx-yagswebautocarsearch-pi2-form option[value=empty]').val('');
	}
  
  
	if (jQuery('.tx-yagswebautocarsearch-pi2-language-selector').length > 0) {
		jQuery('.tx-yagswebautocarsearch-pi2-language-selector').change(function() {
			jQuery('#tx-yagswebautocarsearch-pi2-language-form').submit();
		});
	}
  
	function getItemCount(form) {
		if(jQuery('.tx-yagswebautocarsearch-pi2-result span').length > 0) {
			jQuery('.tx-yagswebautocarsearch-pi2-result span').html('<img src="typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/ajax-loader.gif" width="15" height="15" />');
		}
		if (jQuery('#tx-yagswebautocarsearch-pi2-form input[type=submit]').length > 0) {
			jQuery('#tx-yagswebautocarsearch-pi2-form input[type=submit]').val(submit_label);
		}
		jQuery.ajax({
			url: "index.php",
			type: "POST",
			data: {
				eID: "yagswebautocarsearch_eID",
				action: "get_count",
				data: jQuery.base64.encode(form.serialize())
			//data: form.serialize(),
			},
			dataType: "json",
			success: function(response) {
				showItemCount(response);
			}
		});
	}
	
	function unsetItemCount(form) {
		jQuery.ajax({
			url: "index.php",
			type: "POST",
			data: {
				eID: "yagswebautocarsearch_eID",
				action: "unset_count",
				data: jQuery.base64.encode(form.serialize())
			//data: form.serialize(),
			},
			dataType: "json",
			success: function(response) {
				showItemCount(response);
			}
		});
	}	
	
	function showItemCount(item_count) {
		var count = (item_count != '') ? item_count : 0;
		if (jQuery('.tx-yagswebautocarsearch-pi2-result span').length > 0) {
			jQuery('.tx-yagswebautocarsearch-pi2-result span').text(count);
		}
		if (jQuery('#tx-yagswebautocarsearch-pi2-form input[type=submit]').length > 0) {
			jQuery('#tx-yagswebautocarsearch-pi2-form input[type=submit]').val(submit_label+' '+count+'');
		}
	}
	
	if (jQuery(".tx-yagswebautocarsearch-flash-message").length > 0){
		jQuery(".tx-yagswebautocarsearch-flash-message").wait(flash_message_timer).fadeOut();
		console.log('852irgendwas');
	}
  
	if (jQuery('a.preview').length) {
		jQuery('a.preview').imgPreview({
			containerID: 'imgPreviewWithStyles',
			/* Change srcAttr to rel: */
			srcAttr: 'rel',
			imgCSS: {
			// Limit preview size:
			//width: 300
			},
			// When container is shown:
			onShow: function(link){
				// Animate link:
				jQuery(link).stop().animate({
					opacity:0.4
				});
				// Reset image:
				jQuery('img', this).stop().css({
					opacity:0
				});
			},
			// When image has loaded:
			onLoad: function(){
				// Animate image
				jQuery(this).animate({
					opacity:1
				}, 300);
			},
			// When container hides: 
			onHide: function(link){
				// Animate link:
				jQuery(link).stop().animate({
					opacity:1
				});
			}

		});
	}


	/***************************************************************************************
     * pi5 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi5() {

		// Höhenkorrektur
		txYagsWebautoCarsearchPi5_ImageSetHeight();

		// Lighbox initialisieren
		txYagsWebautoCarsearchPi5_setLightBox();

		// carousel setup
		jQuery('#tx-yagswebautocarsearch-pi5-carousel').jcarousel({
			wrap: 'circular',
			scroll: show_scroll_at_once
		});

		// Bilder aus jCarousel bei Click in den div für das große Bild laden und das vorherige Bild löschen
		jQuery("li.jcarousel-item a").live("click mouseover",function(e) {
			var img_pan = "";
    	  
			var img = jQuery(this).attr("rel");
			var thumb = jQuery(this).children().attr("src");
			var alt = jQuery(this).attr("alt");
			var imgclass = 'tx-yagswebautocarsearch-pi5-image';
			// die Bezeichnung "thumb" gegen "pan" tauschen für korrekten Link für Lightbox
			var img_normal = img.replace(/thumb/g, "");
			if (jQuery(this).attr("pan") != '') {
				img_pan = jQuery(this).attr("pan");
			}else{
				img_pan = img_normal;
			}
    		
			/* IE6 crap try
    		var linkTag = $(document.createElement('a'));
    		linkTag.attr('href', img_pan);
    		linkTag.addClass('tx-yagswebautocarsearch-pi5-lightbox');
    		
    		var imgTag = $(document.createElement('img'));
    		imgTag.attr('src', img);
    		imgTag.addClass(imgclass);
    		
    		linkTag.append(imgTag);
    		
    		jQuery('.tx-yagswebautocarsearch-pi5-image-container').append(linkTag.fadeIn("slow",function() {
    			jQuery('.tx-yagswebautocarsearch-pi5-image-container a:first').remove();
    			txYagsWebautoCarsearchPi5_ImageSetHeight();

    			// Lighbox reinitialisieren
    			txYagsWebautoCarsearchPi5_setLightBox();
    		}));
    		*/
    		
			jQuery('.tx-yagswebautocarsearch-pi5-image-container').append(
				jQuery('<a class="tx-yagswebautocarsearch-pi5-lightbox" href="'+img_pan+'"><img src="'+img+'" width="'+imageWidth+'" class="'+imgclass+'" /></a>').fadeIn("slow",function() {
					jQuery('.tx-yagswebautocarsearch-pi5-image-container a:first').remove();
					txYagsWebautoCarsearchPi5_ImageSetHeight();

					// Lighbox reinitialisieren
					txYagsWebautoCarsearchPi5_setLightBox();

				})  
				);

			// Event abbrechen
			e.preventDefault();

		});

		// jQuery Validate für Formulare

		// Validierung für Felder mit beschreibenden default-Werten
		jQuery.validator.addMethod('notdefaultval', function(value, element) {
			return (
				value != '' &&
				value != form_phone_default &&
				value != form_name_default
				) ? true : false;
		}, form_message_default );

		jQuery(".tx-yagswebautocarsearch-pi5-form").validate({
			rules: {
				"tx_yagswebautocarsearch_pi1[carrequestform][name]": {
					minlength: 3,
					required: true,
					notdefaultval: true
				},
				"tx_yagswebautocarsearch_pi1[carrequestform][phone]": {
					minlength: 3,
					required: true,
					notdefaultval: true
				},
				"tx_yagswebautocarsearch_pi1[carrequestform][email]": {
					email: true,
					required: true,
					minlength: 7
				}
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				if (errors) {
					var message = errors == 1
					? form_validation_fields_one
					: form_validation_fields_more_part_one + errors + form_validation_fields_more_part_two;
					$("div.error span").html(message);
					$("div.error").show();
				} else {
					$("div.error").hide();
				}
			},
			errorPlacement: function(error, element) {
				error.insertAfter(element);
			},
			messages: {
				"tx_yagswebautocarsearch_pi1[carrequestform][email]": {
					minlength: jQuery.format(form_validation_email_minlength),
					required: form_validation_email_required,
					email: form_validation_email_email
				},
				"tx_yagswebautocarsearch_pi1[carrequestform][name]": {
					minlength: jQuery.format(form_validation_name_minlength),
					required: form_validation_name_required,
					notdefaultval: form_validation_name_notdefaultval
				},
				"tx_yagswebautocarsearch_pi1[carrequestform][phone]": {
					minlength: jQuery.format(form_validation_phone_minlength),
					required: form_validation_phone_required,
					notdefaultval: form_validation_phone_notdefaultval
				}
			}
		});

		// pi5 Funktionen

		// jQuery LightBox
		function txYagsWebautoCarsearchPi5_setLightBox() {

			jQuery('a.tx-yagswebautocarsearch-pi5-lightbox').lightBox({
				imageBtnClose: 'typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/lightbox-btn-close.gif',
				imageLoading: 'typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/lightbox-ico-loading.gif',
				imageBtnPrev: 'typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/lightbox-btn-prev.gif',
				imageBtnNext: 'typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/lightbox-btn-next.gif',
				imageBlank: 'typo3conf/ext/yags_webauto_carsearch/Resources/Public/Icons/lightbox-blank.gif'
			});

		}

		function txYagsWebautoCarsearchPi5_ImageSetHeight() {
			// Höhe des umgebenden Divs am Bild ausrichten
			var imgheight = jQuery('img.tx-yagswebautocarsearch-pi5-image').height();
			jQuery('#tx-yagswebautocarsearch-pi5-imageview').height(imgheight);
		}

		// jQuery für den Link "Weiterempfehlen" 
		jQuery('.tx-yagswebautocarsearch-pi5-speech').click(function(){
			// the following expression must be all on one line...
			mail_message = tip_a_friend_subject;
			window.location = "mailto:?subject="+mail_message+"&body="+document.title+" "+window.location;
			return false;
		});

	}



	/***************************************************************************************
     * pi6 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi6() {

		// jCarousel
		var slider_config = {
			wrap: 'circular',
			scroll: (slider_scroll_at_once) ? slider_scroll_at_once : 1
		}
      
		if (slider_show_at_once > 0) {
			slider_config.visible = slider_show_at_once;
		}
      
		jQuery('#tx-yagswebautocarsearch-pi6-carousel').jcarousel(slider_config);

	}

	/***************************************************************************************
     * pi1 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi1() {}

	/***************************************************************************************
     * pi2 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi2() {

	// jQuery Validate für Formulare
	/*jQuery(".tx-yagswebautocarsearch-pi2-form").validate({
         rules: {
           "tx_yagswebautocarsearch_pi2[plz]": {
             minlength: 4,
             digits: true,
             required: function(element) {
               return jQuery("tx_yagswebautocarsearch_pi2[perimeter]").val() != '';
             }
           }
         },
       	invalidHandler: function(e, validator) {
       			var errors = validator.numberOfInvalids();
       			if (errors) {
       				var message = errors == 1
       					? 'Du hast 1 Feld nicht ausgefüllt.'
       					: 'Du hast ' + errors + ' Felder nicht ausgefüllt.';
       				$("div.error span").html(message);
       				$("div.error").show();
       			} else {
       				$("div.error").hide();
       			}
       		},
           errorPlacement: function(error, element) {
                error.insertAfter(element);
           },
       		messages: {
       			"tx_yagswebautocarsearch_pi2[plz]": {
       			  digits: "Bitte nur Zahlen eingeben.",
       			  minlength: jQuery.format("Mindestens {0} Zeichen sind benötigt!"),
       				required: "Das Feld Postleitzahl darf bei Umkreissuche nicht leer sein."
       			}
       		}
       	});*/
	}

	/***************************************************************************************
     * pi3 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi3() {}

	/***************************************************************************************
     * pi4 Bezogenes
    ***************************************************************************************/
	function txYagsWebautoCarsearchPi4() {}


	// clear and restore inputfields
	jQuery.fn.clearAndRestore = function() {
		var obj = jQuery(this);
		var currVal = obj.val();

		obj.bind("focus", function() {
			if (obj.val() == currVal) {
				obj.css('color','black');
				obj.val("");
			}
		});
		obj.bind("blur", function() {
			if (obj.val() == "") {
				obj.css('color','#999');
				obj.val(currVal);
			}
		});
	};


	/***************************************************************************************
     * Globale Initialisierung
    ***************************************************************************************/
	function txYagsWebautoCarsearchInit() {

		// Clear and Restore für Beschreibungen in Formularfeldern - müssen die Klasse clearAndRestore haben
		jQuery('input, textarea').filter('.clearAndRestore').each( function(i,e) {
			jQuery(e).clearAndRestore();
		});

		// pi1 nur initialisieren wenn auch vorhanden
		if (jQuery('.tx-yagswebautocarsearch-pi1').length) {
			txYagsWebautoCarsearchPi1();
		}

		// pi2 nur initialisieren wenn auch vorhanden
		if (jQuery('#tx-yagswebautocarsearch-pi2').length) {
			txYagsWebautoCarsearchPi2();
		}

		// pi3 nur initialisieren wenn auch vorhanden
		if (jQuery('#tx-yagswebautocarsearch-pi3').length) {
			txYagsWebautoCarsearchPi3();
		}

		// pi4 nur initialisieren wenn auch vorhanden
		if (jQuery('#tx-yagswebautocarsearch-pi4').length) {
			txYagsWebautoCarsearchPi4();
		}

		// pi5 nur initialisieren wenn auch vorhanden
		if (jQuery('#tx-yagswebautocarsearch-pi5').length) {
			txYagsWebautoCarsearchPi5();
		}

		// pi6 nur initialisieren wenn auch vorhanden
		if (jQuery('.tx-yagswebautocarsearch-pi6').length) {
			txYagsWebautoCarsearchPi6();
		}

	}

	/***************************************************************************************
     * Globales Init anstossen
    ***************************************************************************************/
	txYagsWebautoCarsearchInit();



/*  

  */  

/*
        $.validator.addMethod("chiffre", function(value, element) {
              return this.optional(element) || /^[a-z0-9]+$/i.test(value);
      	    }, "Die Chiffre darf nur aus Zahlen und Buchstaben bestehen.");
  */

/* 

  */  

});

// Little extended setTimeout function to use in jQuery function chain like .foo().wait(500).bar()
(function (jQuery) {
	jQuery.fn.wait = function (option, options) {
		milli = 1000;
		if (option && (typeof option == 'function' || isNaN(option))) {
			options = option;
		} else if (option) {
			milli = option;
		}
		// set defaults
		var defaults = {
			msec: milli,
			onEnd: options
		},
		settings = jQuery.extend({}, defaults, options);

		if (typeof settings.onEnd == 'function') {
			this.each(function () {
				//setTimeout(settings.onEnd, settings.msec);
			});
			return this;
		} else {
			return this.queue('fx', function () {
				var self = this;
				//setTimeout(function () {
				//	jQuery.dequeue(self);
				//}, settings.msec);
			});
		}

	}
})(jQuery);
