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();
  
  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);
