// library funcions

    function stripAnchorFromUri(uri){
    	if((pos = uri.lastIndexOf("#")) >= 0){
    		uri = uri.substring(0, pos);
		}
		return uri;
    }


// tegut specific functions

jQuery.fn.center = function (absolute) {
    return this.each(function () {
        var t = jQuery(this);

        t.css({
            position:    absolute ? 'absolute' : 'fixed',
            left:        '50%',
            top:        '50%',
            zIndex:        '99'
        }).css({
            marginLeft:    '-' + (t.outerWidth() / 2) + 'px',
            marginTop:    '-' + (t.outerHeight() / 2) + 'px'
        });

        if (absolute) {
            t.css({
                marginTop:    parseInt(t.css('marginTop'), 10) + jQuery(window).scrollTop(),
                marginLeft:    parseInt(t.css('marginLeft'), 10) + jQuery(window).scrollLeft()
            });
        }
    });
};

$(document).ready(function(){
	/* facts (rechte box) letzte Linie mit class last versehen */
	jQuery('section.facts p:last-child').addClass('last');

    /* rezepte suche js */
    jQuery('#recipeCategorySearchForm input').checkBox({
    	addVisualElement: false,
    	'change': function(e, ui){
    		//alert('a change occured');
    		//checked or unchecked || $(this).is(':checked') === ui.checked
    		if(ui.checked){
    			jQuery(this).parent().addClass('active');
    		}else{
    			jQuery(this).parent().removeClass('active');
    		}
	}
    });
    /* checkBox funktionalitaet auch auf die suchergebnis header zeile legen (zur optik) */
    jQuery('#recipeSearchForm input').checkBox({addVisualElement: false});

	jQuery('#recipeCategorySearchForm .categories label.ui-radio').click(function(){
		theInput = jQuery(this).closest('li').children('input');
		theLi = jQuery(this).closest('li');
		theLabel = jQuery(this);
    	if (jQuery(theInput).attr("checked") == true) {
        	setTimeout('jQuery(theLi).removeClass("active");', 100);
        	setTimeout('jQuery(theInput).removeAttr("checked");', 200);
        	setTimeout('jQuery(theLabel).removeClass("ui-radio-checked").removeClass("ui-radio-state-checked");', 200);
		}else {
			setTimeout('jQuery(theLi).addClass("active");', 100);
        	setTimeout('jQuery(theInput).attr("checked", true);', 200);
        	setTimeout('jQuery(theLabel).addClass("ui-radio-checked").addClass("ui-radio-state-checked");', 200);
		}
	});
	jQuery('#recipeCategorySearchForm .categories label.ui-checkbox').click(function(){
		theInput = jQuery(this).closest('li').children('input');
		theLi = jQuery(this).closest('li');
		theLabel = jQuery(this);
    	if (jQuery(theInput).attr("checked") == true) {
        	setTimeout('jQuery(theLi).removeClass("active");', 100);
        	setTimeout('jQuery(theInput).removeAttr("checked");', 200);
        	setTimeout('jQuery(theLabel).removeClass("ui-checkbox-checked").removeClass("ui-checkbox-state-checked");', 200);
		}else {
			setTimeout('jQuery(theLi).addClass("active");', 100);
        	setTimeout('jQuery(theInput).attr("checked", true);', 200);
        	setTimeout('jQuery(theLabel).addClass("ui-checkbox-checked").addClass("ui-checkbox-state-checked");', 200);
		}
	});
    /* kategorie entfernen */
    jQuery('.deleteCategory').click(function(){
	//form abschicken, aber ohne die geklickte Kategorie
	//theInput = jQuery(this).next();
	//theInput.remove();

	if(jQuery(this).children('label').attr('id') == 'deleteMyWords'){
	    jQuery('#mywords').val(''); //input feld fuer volltextsuche leer machen, sonst wird dieses wieder abgeschickt
	}
	jQuery(this).remove();
	jQuery('#recipeSearchForm').submit();
    });

    /* kategorie hinzufuegen */
    jQuery('#addCategory').click(function(){
	jQuery('#saveMyWords').val(jQuery('#mywords').val()); //meine stichworte in hidden input speichern
	jQuery('#filterMyWords').val(jQuery('#mywords').val()); //meine stichworte in overlay categories box anzeigen
    });

    jQuery('#categorySubmit').click(function(event){
	event.preventDefault();
	jQuery('#recipeCategorySearchForm').submit();
    });

    /**/

    /* infinite scroll fuer rezepte und marktnews*/
	var ie = (function(){

		var undef,
	        v = 3,
	        div = document.createElement('div'),
	        all = div.getElementsByTagName('i');

	    while (
	        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
	        all[0]
	    );

	    return v > 4 ? v : undef;

	}());
	function getURLParam(str,ParamName){
		var strReturn = "";
		var strHref = str;
		if ( strHref.indexOf("?") > -1 ){
			var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
			var aQueryString = strQueryString.split("&");
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				if (aQueryString[iParam].indexOf(ParamName + "=") > -1 ){
					var aParam = aQueryString[iParam].split("=");
					strReturn = aParam[1];
					break;
				}
			}
		}
		return strReturn;
		}
	if(!(ie < 9)){

	    if ($('#content').length > 0){
		    $('#content').infinitescroll(
			{
			  navSelector  : "div.pagebrowser", // selector for the paged navigation (it will be hidden)
			  nextSelector : "div.pagebrowser a.pagination:first", // selector for the NEXT link (to page 2)
			  itemSelector : "#content article",  // selector for all items you'll retrieve
			  loadingText: 'Lade weitere Ergebnisse',
			  loadingMsgRevealSpeed: 0,
			  donetext : "<em>Keine weiteren Ergebnisse.</em>",
			  bufferPx: 80,
			  extraScrollPx: 0,
			  animate: false,
			  loadingImg: 'fileadmin/templates/images/ajax-loader.gif',
			  pathParse : function( pathStr, nextPage ){
			      
				  /* Bugfix: Die Anzahl der Seiten muss mit übergeben werden, 
				   * da sonst keine Möglichkeit besteht zu entscheiden, ob das Ende erreicht ist.
				   * Abfrage bei erreichen der letzten Seite verhindert Neubildung einer URL.
				   */ 
				  if (stop==1)
					  return '';
			      // replacement für mit und ohne urlencoded url
			      pathStr = pathStr.replace('[pb-pb-pointer]=1', '[pb-pb-pointer]='+(nextPage-1) );
			      pathStr = pathStr.replace('%5Bpb-pb-pointer%5D=1', '%5Bpb-pb-pointer%5D='+(nextPage-1) );
			      pathStr = pathStr.replace('[pb-mknews-pointer]=1', '[pb-mknews-pointer]='+(nextPage-1) );
			      pathStr = pathStr.replace('%5Bpb-mknews-pointer%5D=1', '%5Bpb-mknews-pointer%5D='+(nextPage-1) );
			      //URL der letzten Seite auslesen und bearbeiten
			      endPath = $('.pagination:last').attr('href');
			      endPath = endPath.replace('%5Bpb-pb-pointer%5D', '[pb-pb-pointer]');
			      endPath = endPath.replace('%5Bpb-mknews-pointer%5D', '[pb-mknews-pointer]');
			      params = getURLParam(endPath,'mktegut[pb-mknews-pointer]');
			      //Prüfen ob der Pointer des nächsten Aufrufs identisch ist mit der letzten Seite des Pagebrowsers, Stopflag setzen
			      if ((getURLParam(endPath,'mktegut[pb-pb-pointer]') == (nextPage-1)) || (getURLParam(endPath,'mktegut[pb-mknews-pointer]') == (nextPage-1))) 
					  stop = 1;
			      //Wenn nächste Seite gleich letzte Seite ist: Vermeiden, das Pointer weiterzählt
			      if ((getURLParam(endPath,'mkproduct[pb-pb-pointer]') != '') && (getURLParam(endPath,'mkproduct[pb-pb-pointer]') < (nextPage-1)))
			    	  return '';
			      if ((getURLParam(endPath,'mkproduct[pb-mknews-pointer]') != '') && (getURLParam(endPath,'mkproduct[pb-mknews-pointer]') < (nextPage-1)))
			    	  return '';

			      return pathStr;
		          }
			},
			function(){
			  window.callbackcontext = this;
			  window.console && console.log('callbackcontext',this,$(this).find('p'))
			}
		    );
	    }
	}
    /* infinite scroll fuer produkte*/
    if ($('ul.housebrands').length > 0){
	    $('ul.housebrands').infinitescroll(
		{
		  navSelector  : "div.pagebrowser", // selector for the paged navigation (it will be hidden)
		  nextSelector : "div.pagebrowser a.pagination:last", // selector for the NEXT link (to page 2)
		  itemSelector : "ul.housebrands li",  // selector for all items you'll retrieve
		  loadMsgSelector : "#main", // selector for appending load message
		  loadingText: 'Lade weitere Ergebnisse',
		  loadingMsgRevealSpeed: 0,
		  donetext : "<em>Keine weiteren Ergebnisse.</em>",
		  bufferPx: 80,
		  extraScrollPx: 0,
		  animate: false,
		  loadingImg: 'fileadmin/templates/images/ajax-loader.gif',
		  pathParse : function( pathStr, nextPage ){
			  /* Bugfix: Die Anzahl der Seiten muss mit übergeben werden, 
			   * da sonst keine Möglichkeit besteht zu entscheiden, ob das Ende erreicht ist.
			   * Abfrage bei erreichen der letzten Seite verhindert Neubildung einer URL.
			   */ 
			  if (stop==1)
				  return '';
		       // replacement für mit und ohne urlencoded url
		      pathStr = pathStr.replace('[pb-pb-pointer]=1', '[pb-pb-pointer]='+(nextPage-1) );
		      pathStr = pathStr.replace('%5Bpb-pb-pointer%5D=1', '%5Bpb-pb-pointer%5D='+(nextPage-1) );

		      endPath = $('.pagination:last').attr('href');
		      endPath = endPath.replace('%5Bpb-pb-pointer%5D', '[pb-pb-pointer]');
		      endPath = endPath.replace('%5Bpb-mknews-pointer%5D', '[pb-mknews-pointer]');
		      params = getURLParam(endPath,'mkproduct[pb-mknews-pointer]');
		      //Prüfen ob der Pointer des nächsten Aufrufs identisch ist mit der letzten Seite des Pagebrowsers, Stopflag setzen
		      if (getURLParam(endPath,'mkproduct[pb-pb-pointer]') == (nextPage-1)) 
				  stop = 1;
		      if (getURLParam(endPath,'mkproduct[pb-pb-pointer]') < (nextPage-1))
		    	  return '';
		      return pathStr;
	          }
		},
		function(){
		  window.callbackcontext = this;
		  window.console && console.log('callbackcontext',this,$(this).find('p'))
		}
	    );
    }
    /* infinite scroll fuer produkte*/
    if ($('.tx-cal-controller').length > 0){
	    $('.tx-cal-controller').infinitescroll(
		{
		  navSelector  : "div.tx-cal-controller-browsebox", // selector for the paged navigation (it will be hidden)
		  nextSelector : "div.tx-cal-controller-browsebox a:last", // selector for the NEXT link (to page 2)
		  itemSelector : ".tx-cal-controller article",  // selector for all items you'll retrieve
		  loadMsgSelector : "#main", // selector for appending load message
		  loadingText: 'Lade weitere Ergebnisse',
		  loadingMsgRevealSpeed: 0,
		  donetext : "<em>Keine weiteren Ergebnisse.</em>",
		  bufferPx: 80,
		  extraScrollPx: 0,
		  animate: false,
		  loadingImg: 'fileadmin/templates/images/ajax-loader.gif',
		  pathParse : function( pathStr, nextPage ){
			  /* Bugfix: Die Anzahl der Seiten muss mit übergeben werden, 
			   * da sonst keine Möglichkeit besteht zu entscheiden, ob das Ende erreicht ist.
			   * Abfrage bei erreichen der letzten Seite verhindert Neubildung einer URL.
			   */ 
			  if (stop==1)
				  return '';
		       // replacement für mit und ohne urlencoded url
		      pathStr = pathStr.replace('[offset]=1', '[offset]='+(nextPage-1) );
		      pathStr = pathStr.replace('%5Boffset%5D=1', '%5Boffset%5D='+(nextPage-1) );

		      endPath = $('div.tx-cal-controller-browsebox a:last').attr('href');
		      endPath = endPath.replace('%5Boffset%5D', '[offset]');
		      params = getURLParam(endPath,'tx_cal_controller[offset]');
		      //Prüfen ob der Pointer des nächsten Aufrufs identisch ist mit der letzten Seite des Pagebrowsers, Stopflag setzen
		      if (getURLParam(endPath,'tx_cal_controller[offset]') == (nextPage-1)) 
				  stop = 1;
		      if (getURLParam(endPath,'tx_cal_controller[offset]') < (nextPage-1))
		    	  return '';
		      return pathStr;
	          }
		},
		function(){
		  window.callbackcontext = this;
		  window.console && console.log('callbackcontext',this,$(this).find('p'))
		}
	    );
    }    
    /* infinite scroll für die suche */
    if ($('#search-result-list').length > 0){
		//erstmal verstecken wir noch den normalen Pagebrowser. Aber per JS
		//damit die Suche bei deaktiviertem JS trotzdem funktioniert
		jQuery('.search-pagebrowser').hide();
		
	    $('#search-result-list').infinitescroll(
		{
		  navSelector  : ".last_page a", // selector for the paged navigation (it will be hidden)
		  nextSelector : ".next_page a", // selector for the NEXT link (to page 2)
		  itemSelector : "#search-result-list article",  // selector for all items you'll retrieve
		  loadingText: 'Lade weitere Ergebnisse',
		  loadingMsgRevealSpeed: 0,
		  donetext : "<em>Keine weiteren Ergebnisse.</em>",
		  bufferPx: 80,
		  extraScrollPx: 0,
		  animate: false,
		  loadingImg: 'fileadmin/templates/images/ajax-loader.gif',
		  pathParse : function( pathStr, nextPage ){
		       // replacement für mit und ohne urlencoded url
		      pathStr = pathStr.replace('[pb-search-pointer]=1', '[pb-search-pointer]='+(nextPage-1) );
		      pathStr = pathStr.replace('%5Bpb-search-pointer%5D=1', '%5Bpb-search-pointer%5D='+(nextPage-1) );
	
		      return pathStr;
	          }
		},
		function(){
		  window.callbackcontext = this;
		  window.console && console.log('callbackcontext',this,$(this).find('p'))
		}
	    );
	}

	/* end infinite scroll */

    /* my favourites and my stores */

    jQuery('#showFavourites').click(function(event){
	event.preventDefault();
	showFavourites();
    });
    jQuery('#showComments').click(function(event){
	event.preventDefault();
	showComments();
    });

    jQuery('#showMoreStores').click(function(event){
	event.preventDefault();
	showMoreStores();
    });

    /* close button */
    jQuery('#favorites .close').click(function(){
	jQuery('#favorites').fadeOut();
    });
    jQuery('#storesList .close').click(function(){
	jQuery('#storesList').fadeOut();
    });
    jQuery('#comments .close').click(function(){
	jQuery('#comments').fadeOut();
    });

    /* --------- offers ---------- */
    jQuery('#offersSelect').change(function(){
	jQuery('#offerSearchForm').submit();
    });

    jQuery('#offersCategorySelect').change(function(){
	jQuery('#offerSearchForm').submit();
    });

    /* stellenangebote radio */
    jQuery('.field.radio').find('input[type="radio"]:lt(1)').addClass('first');

    /* registration und profil verwalten - mein tegut markt js funktionalitaeten */

    //nach validator auftreten wird das formular neu geladen, da muessen wir alle gefuellten autocompletes wieder einblenden
    handleShowFilledStoreAutoCompletes();

    /* remove */
    jQuery('div.mystores .col a.remove').click(function(){
	var formId = jQuery('form.memberForm').attr('id');

	//elements of this ac
	thisAcsElements = jQuery(this).prevUntil('a.remove');
	var inputTextToRemove = thisAcsElements.filter('input[type=text]');
	var inputHiddenToClear = thisAcsElements.filter('input[type=hidden]');
	//erster darf nicht entfernt werden
	if(inputTextToRemove.attr('id') != formId+'__tegutData__stores-mystore1'){
	    inputHiddenToClear.val('');
	    inputTextToRemove.val('');
	    inputTextToRemove.fadeOut('slow', handleSubmitEnable);

	    //zusaetzlich die vorschlagliste (autocomplete) ausblenden
	    var autoCompleteListToRemove = thisAcsElements.filter('div.mkforms-autocomplete-list');
	    autoCompleteListToRemove.fadeOut();

	    //remove button ausblenden
	    jQuery(this).fadeOut();
	    jQuery(this).parent().fadeOut();
	}

	//more button wieder einblenden
	jQuery('div.mystores .col a.more').fadeIn();
    });
    //weitere laeden (event auf more link legen)
    jQuery('div.mystores .col a.more').click(function(){
	var formId = jQuery('form.memberForm').attr('id');
	max = 10;
	for(var i = 1; i<=max; i++){
	    if(jQuery('#'+formId+'__tegutData__stores-mystore'+i).css('display') == 'none'){
	    	jQuery('#'+formId+'__tegutData__stores-mystore'+i).parent().show();
		jQuery('#'+formId+'__tegutData__stores-mystore'+i).fadeIn('slow');

		//(fast) alle html elemente dieses autocomplete
		thisAcsElements = jQuery('#'+formId+'__tegutData__stores-mystore'+i).nextUntil('a.remove');

		//zugehoerige vorschlagliste (autocomplete) einblenden
		thisAcsElements.filter('div.mkforms-autocomplete-list').fadeIn();

		//zugehoerigen remove-button einblenden
		thisAcsElements.next('a.remove').fadeIn();

		//max erreicht, more link ausblenden
		if(i == max){
		    jQuery(this).fadeOut();
		}

		break;
	    }
	}
	return;
    });

    //registrieren fuer meine karte - mein tegut markt angeben
    jQuery('#applyForGuteKarte__tegutData__stores-mystore1').blur(function(){
	if(jQuery(this).val() == ''){
	    //feld ist leer, der submit button kann also enabled werden (ist ev vorher disabled worden durch mein tegut markt - autocomplete)
	    jQuery('#applyForGuteKarte__buttonRow__registernow').attr('disabled', '');
	}
    });

    //pruefen ob gameform errors hat, wenn ja dann zur form scrollen
    if(jQuery('#gameForm').length){
	inputs = jQuery('#gameForm :input');
	if(inputs.filter('.hasError').length > 0){
	    //es traten Validaton errors in der gameform auf
	    //also scrolle zum formular, damit man es gleich sieht
	    scrollToElement(jQuery('#gameForm').get(0));
	}
    }

    //registrieren bei tegut - mein tegut markt darf submit button nicht disablen
    jQuery('#memberRegistration__tegutData__stores-mystore1').blur(function(){
	if(jQuery(this).val() == ''){
	    //feld ist leer, der submit button kann also enabled werden (ist ev vorher disabled worden durch mein tegut markt - autocomplete)
	    jQuery('#memberRegistration__buttonRow__registernow').attr('disabled', '');
	}
    });

    //profil verwalten - mein tegut markt darf submit button nicht disablen
    jQuery('#editMember__tegutData__stores-mystore1').blur(function(){
	if(jQuery(this).val() == ''){
	    //feld ist leer, der submit button kann also enabled werden (ist ev vorher disabled worden durch mein tegut markt - autocomplete)
	    jQuery('#editMember__buttonRow__registernow').attr('disabled', '');
	}
    });

    /* ende registrierung/profilverwaltung mein tegut...-Markt */


    /* multiple gute karte nummern */

    handleShowFilledGuteKarteNumbers();

    //weitere laeden (event auf more link legen)
    jQuery('div.gutekartenumbers .col a.more').click(function(){

	var formId = jQuery('form.memberForm').attr('id');
	max = 10;
	for(var i = 1; i<=max; i++){
	    if(jQuery('div#gute_karte_number'+i).css('display') == 'none'){

			//zugehoerige vorschlagliste (autocomplete) einblenden
			jQuery('div#gute_karte_number'+i).fadeIn();

			//max erreicht, more link ausblenden
			if(i == max){
			    jQuery(this).fadeOut();
			}

			break;
	    }
	}
	return;
    });

    /* remove */
    jQuery('div.gutekartenumbers .col a.remove').click(function(){

	//elements of this ac
	container = jQuery(this).parent();
	container.fadeOut('fast');
	container.children().filter('input').get(3).value = '';
	//more button wieder einblenden
	jQuery('div.gutekartenumbers .col a.more').fadeIn();
    });

    /* ende multiple gute karte nummern */

    /* start bewerbungsformular pflichtfeld file uploads pruefen */
	jQuery('#trainingApplicationForm__buttonRow__applicationsubmit').click(function(){
		validateAndSendForm('training');
	});
	jQuery('#jobApplicationForm__buttonRow__applicationsubmit').click(function(){
		validateAndSendForm('job');
	});
    /* ende bewerbungsformular pflichtfeld file uploads pruefen */

    /* start popupbox */

    /* close button */
    jQuery('.popupbox .close').click(function(){
		jQuery('.popupbox').fadeOut();
    });

    jQuery('.popupLink').click(function(event){
    	event.preventDefault();
    	var target = jQuery(this).attr('href');
		//offset = jQuery(this).offset();
    	//jQuery(target).css('top', (offset.top-500));
    	//jQuery(target).center(false);
    	jQuery(target).fadeIn('fast');
    });

    /* ende popupbox */


});

/* ------------------------ functions -------------------------*/

function validateAndSendForm(type){
	errorsAppeared = false;
	formName = type+'ApplicationForm';
	formId = '#'+formName;
	if (jQuery(formId) == undefined) return false;

	//zunaechst alle errors wieder entfernen
	jQuery('div.error').remove();

	//Anrede
	if(!jQuery(formId+' div#gender_given input:checked').val()){
		errorsAppeared = true;
		jQuery(formId+' div#gender_given').append('<div class="error">Bitte wählen Sie eine Anrede aus!</div>');
	}
	//Vorname
	if(jQuery(formId+'__'+type+'ApplicationData__firstname').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__firstname').parent().append('<div class="error">Bitte geben Sie Ihren Vornamen ein!</div>');
	}
	//Nachname
	if(jQuery(formId+'__'+type+'ApplicationData__lastname').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__lastname').parent().append('<div class="error">Bitte geben Sie Ihren Namen ein!</div>');
	}
	//Geburtsdatum
	if(jQuery(formId+'__'+type+'ApplicationData__date_of_birth').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__date_of_birth').parent().append('<div class="error">Bitte geben Sie Ihr Geburtsdatum ein!</div>');
	}
	//Straße und Hausnummer
	if(jQuery(formId+'__'+type+'ApplicationData__address').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__address').parent().append('<div class="error">Bitte geben Sie Ihre Straße und Hausnummer an!</div>');
	}
	//PLZ
	if(jQuery(formId+'__'+type+'ApplicationData__zip').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__zip').parent().append('<div class="error">Bitte geben Sie Ihre PLZ an!</div>');
	}
	//Ort
	if(jQuery(formId+'__'+type+'ApplicationData__city').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__city').parent().append('<div class="error">Bitte geben Sie Ihren Ort an!</div>');
	}
	//E-Mail
	var emailAddress = jQuery(formId+'__'+type+'ApplicationData__email').val();
	if(emailAddress == ''){
		errorsAppeared = true;
		jQuery(formId+'__'+type+'ApplicationData__email').parent().append('<div class="error">Bitte geben Sie eine E-Mail-Adresse ein!</div>');
	}else{
		//email ist angegeben, ist sie aber auch valide?
		var emailRegEx = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
		if(!emailRegEx.test(emailAddress)){
			errorsAppeared = true;
			jQuery(formId+'__'+type+'ApplicationData__email').parent().append('<div class="error">Die E-Mail-Adresse ist nicht gültig!</div>');
		}
	}
	//Anschreiben
	if(jQuery(formId+'__'+type+'ApplicationData__covering_letter').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__covering_letter_validator').val(0);
		jQuery(formId+'__'+type+'ApplicationData__covering_letter').parent().append('<div class="error">Bitte laden Sie Ihr Anschreiben hoch!</div>');
	}else{
		jQuery(formId+'__covering_letter_validator').val('1');
	}
	//Lebenslauf
	if(jQuery(formId+'__'+type+'ApplicationData__curriculum_vitae').val() == ''){
		errorsAppeared = true;
		jQuery(formId+'__curriculum_vitae_validator').val(0);
		jQuery(formId+'__'+type+'ApplicationData__curriculum_vitae').parent().append('<div class="error">Bitte laden Sie Ihren Lebenslauf hoch!</div>');
	}else{
		jQuery(formId+'__curriculum_vitae_validator').val('1');
	}
	//Datenschutzerklaerung
	if(!jQuery(formId+'__'+type+'ApplicationData__agrees_data_privacy_protection').attr('checked')){
		jQuery(formId+'__'+type+'ApplicationData__agrees_data_privacy_protection').parent().append('<div class="error">Akzeptieren Sie bitte vor dem Absenden die Datenschutzerklärung!</div>');
		errorsAppeared = true;
	}

	//nur bei Trainingapplication
	if(type == 'training'){
		//Abschlusszeugnis
		if(!jQuery(formId+' div#school_leaving_certificate_given input:checked').val()){
			errorsAppeared = true;
			jQuery(formId+' div#school_leaving_certificate_given').append('<div class="error">Bitte geben Sie an, ob Sie ein Abschlusszeugnis besitzen!</div>');
		}

		//Auswahl der Berufsausbildung
		if(jQuery(formId+'__'+type+'ApplicationData__application_for_training').val() == 0){
			errorsAppeared = true;
			jQuery(formId+'__'+type+'ApplicationData__application_for_training').parent().append('<div class="error">Bitte wählen Sie eine Berufsausbildung aus!</div>');
		}
	}

	//nur bei Blankoformular
	if(jQuery(formId+'__'+type+'ApplicationData__blanko__region_type_box').length > 0){
		//Regiontyp
		if(!jQuery(formId+' div#regiontype_given input:checked').val()){
			errorsAppeared = true;
			jQuery(formId+' div#regiontype_given').append('<div class="error">Bitte geben Sie an, wo sie sich bewerben wollen!</div>');
		}
		//wenn Regional, dann Region oder Ort
		if(jQuery(formId+'__'+type+'ApplicationData__blanko__region_type_box__region_type_regional').attr('checked')){
			if(jQuery(formId+'__'+type+'ApplicationData__blanko__region_box__region').val() == 0){
				//keine region angegeben, dann sollte wenigstens ort angegeben sein
				if(jQuery(formId+'__'+type+'ApplicationData__blanko__location').val() == 0){
					errorsAppeared = true;
					jQuery(formId+'__'+type+'ApplicationData__blanko__region_type_box').append('<div class="error">Bitte geben Sie die Region oder den Ort an!</div>');
				}
			}
		}
		//nur bei Jobapplication
		if(type == 'job'){
			//Bewerbung als
			if(jQuery(formId+'__'+type+'ApplicationData__blanko__jobtitle_blanko').val() == ''){
				errorsAppeared = true;
				jQuery(formId+'__'+type+'ApplicationData__blanko__jobtitle_blanko').parent().append('<div class="error">Bitte geben Sie an, für welche Stelle Sie sich bewerben möchten!</div>');
			}
		}
	}

	//FEHLER???
	if(errorsAppeared == true){
		//alert('Nicht alle Felder ausgefüllt!');
	}else{
		jQuery(formId).submit();
	}
}


/* registration submit enable ( = callback funktion) */

function handleSubmitEnable(){
    var formId = jQuery('form.memberForm').attr('id');
    //anschliessen pruefen, ob durch das Entfernen eines laden-input-feldes ev. der submit button wieder enabled werden darf
    //dazu die hidden inputs aller sichtbaren markt-ac pruefen, beginnend ab zweitem, weil das erte nicht entfernbar ist
    max = 10;
    submitDisabled = false;
    for(var i = 2; i<=max; i++){
	if(jQuery('#'+formId+'__tegutData__stores-mystore'+i).css('display') == 'block'){
	    //ist sichtbares markt-ac, nun dessen hidden input pruefen
	    if(jQuery('#'+formId+'__tegutData__stores-mystore'+i).nextUntil('a.remove').filter('input[type=hidden]').val() == ''){
		//markt-ac no. i ist sichtbar, aber nicht gefuellt, abschicken verboten
		submitDisabled = true;
	    }
	}
    }
    if(submitDisabled){
	jQuery('#'+formId+'__buttonRow__registernow').attr('disabled', 'disabled');
    }else{
	jQuery('#'+formId+'__buttonRow__registernow').attr('disabled', '');
    }
}

/* registration und profil verwalten: bei validation errors die ausgefuellten mein tegut markt - autocomplete wieder einblenden, behandelt auch anzeige des weiterer laden buttons */

function handleShowFilledStoreAutoCompletes(){
    var formId = jQuery('form.memberForm').attr('id');
    max = 10;
    //beginne beim zweiten, erstes ist sowieso immer sichtbar
    for(var i = 2; i<=max; i++){
	currentAutocomplete = jQuery('#'+formId+'__tegutData__stores-mystore'+i);
	if(currentAutocomplete.val() != ''){
	    //autocomplete input ist gefuellt, also wieder einblenden
		currentAutocomplete.fadeIn();
	    currentAutocomplete.parent().fadeIn();

	    //remove button einblenden
	    thisAcsElements = currentAutocomplete.nextUntil('a.remove');
	    thisAcsElements.next('a.remove').fadeIn();
	}
	else {
		jQuery('#'+formId+'__tegutData__stores-mystore'+i).fadeOut();
	    jQuery('#'+formId+'__tegutData__stores-mystore'+i).parent().fadeOut();
	}
    }
    if(jQuery('.mystores').length){
    	if(jQuery('.mystores input:text[value!=""]').length == max){
    		//weiterer laden button ausblenden
    		jQuery('.mystores .more').hide();
    	}
    }
}

function handleShowFilledGuteKarteNumbers(){
    var formId = jQuery('form.memberForm').attr('id');
    max = 10;
    //beginne beim zweiten, erstes ist sowieso immer sichtbar
    for(var i = 2; i<=max; i++){
	currentDiv = jQuery('div#gute_karte_number'+i);
	if(jQuery('input.gutekarte2', currentDiv).val() != ''){
	    //gutekartenumber input ist gefuellt, also wieder einblenden
	    currentDiv.fadeIn();
	}
    }
    if(jQuery('.gutekartenumbers').length){
     	if(jQuery('.gutekartenumbers input.gutekarte2[value!=""]').length == max){
    		//weiterer laden button ausblenden
    		jQuery('.gutekartenumbers .more').hide();
    	}
    }
}


/* -------- Member ------- */

    /* my stores */

    function showMoreStores(){
	//laden wenn noetig
	if(jQuery('#more_markets #stores').html() == ''){

	    //loader anzeigen
	    jQuery('#more_markets #stores').html('<img id="loader" src="fileadmin/templates/images/ajax-loader_white.gif" alt="lade..." />');
	    jQuery('#more_markets').fadeIn();

	    jQuery.ajax({
		  url: "index.php?id=meintegut&type=300&mktegut[do]=listmystores&mktegut[offset]=3",
		  type: "GET",
		  dataType: "json",
		  success: function(data){
		      if(data.result.html){
			  jQuery('#more_markets #stores').html(data.result.html);
		      }else{
			  jQuery('#more_markets #stores').html('Fehler beim Laden');
		      }
		  }
	    });
	}else{
	    //anzeigen
	    jQuery('#more_markets').fadeIn();
	}
    }

    /* my Activities */

     function showFavourites(){

	//laden wenn noetig
	if(jQuery('#favorites .contentBox').html() == ''){

	    //loader anzeigen
	    jQuery('<img id="loader" src="fileadmin/templates/images/ajax-loader_white.gif" alt="lade..." />').appendTo('#favorites .contentBox');
	    jQuery('#favorites').fadeIn();

	    jQuery.ajax({
		  url: "index.php?id=meintegut&type=300&mktegut[do]=listfavourites",
		  type: "GET",
		  dataType: "json",
		  success: function(data){
		      if(data.result.html){
			  jQuery('#favorites .contentBox').html(data.result.html);
		      }else{
			  jQuery('#favorites .contentBox').html('Fehler beim Laden');
		      }
		  }
	    });
	}else{
	    //anzeigen
	    jQuery('#favorites').fadeIn();
	}
    }

    function browseFavourites(trigger){
	jQuery('#favorites .contentBox').html('<img id="loader" src="fileadmin/templates/images/ajax-loader_white.gif" alt="lade..." />');
	jQuery.ajax({
		url: stripAnchorFromUri(jQuery(trigger).attr('href')),
		type: "GET",
		dataType: "json",
		data: {"type": "300", "mktegut": {"do": "listfavourites"}},
		success: function(data){
		    if(data.result.html){
			jQuery('#favorites .contentBox').html(data.result.html);
		    }
		}
	});
	return false;
    }

    function showComments(){

	//laden wenn noetig
	if(jQuery('#comments .contentBox').html() == ''){

	    //loader anzeigen
	    jQuery('<img id="loader" src="fileadmin/templates/images/ajax-loader_white.gif" alt="lade..." />').appendTo('#comments .contentBox');
	    jQuery('#comments').fadeIn();

	    jQuery.ajax({
		  url: "index.php?id=meintegut&type=1296543578&mksocialcomment[do]=listComments",
		  type: "GET",
		  dataType: "json",
		  success: function(data){
		      if(data.result.content){
			  jQuery('#comments .contentBox').html(data.result.content);
		      }else{
			  jQuery('#comments .contentBox').html('Fehler beim Laden');
		      }
		  }
	    });
	}else{
	    //anzeigen
	    jQuery('#comments').fadeIn();
	}
    }

    function browseComments(trigger){
	jQuery('#comments .contentBox').html('<img id="loader" src="fileadmin/templates/images/ajax-loader_white.gif" alt="lade..." />');
	jQuery.ajax({
		url: stripAnchorFromUri(jQuery(trigger).attr('href')),
		type: "GET",
		dataType: "json",
		data: {"type": "1296543578", "mksocialcomment": {"do": "listComments"}},
		success: function(data){
		    if(data.result.content){
			jQuery('#comments .contentBox').html(data.result.content);
		    }
		}
	});
	return false;
    }

    // scrollTo() Funktion, der ein JavaScript-DOM-Element uebergeben werden kann zu welchem dann gescrollt wird
    function scrollToElement(theElement){
	var selectedPosX = 0;
	var selectedPosY = 0;
	while(theElement != null){
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	window.scrollTo(selectedPosX,selectedPosY-10);
    }

    function renewCaptcha(){
		var captcha = jQuery("#wtcalculatingcaptcha");

		// neues captcha laden
		jQuery.ajax({
		  url: "index.php?type=300&mktegut[do]=generatecaptcha",
		  type: "GET",
		  dataType: "json",
		  success: function(data){
		  	captcha.replaceWith(data.result.html);
		  },
		  async: false
	    });
	}
