window.addEvent('domready',function() {
	
	function closeDialog(){
		// -- dialog ausblenden
		$('fb-modal').fade('out');
		// -- initialen zustand wiederherstellen
		// happy smiley selektiert
		(function(){
			onFeedbackItemClicked($('feedback-text-happy'));
			// textfeld leer
			$('feedback-bemerkung').value = '';
			// senden-button wieder aktiviert
			$('feedback-submit-btn').set('disabled', false);
			// alle bisherigen ajax-messages ausblenden
			$$('.feedback-ajax-msg').each(function(itam){itam.setStyle("display","none");});
			Recaptcha.reload();
		}).delay(500);
	}
	
	function onFeedbackItemClicked(it){
		// hidden-input-wert auf rel-wert des links setzen
		$('feedback-type').value = it.rel;
		// alle links deselektieren
		$$('.feedback-text').each(function(itam){ itam.removeClass("selected") });
		// den aktuellen link selektieren
		$(it).addClass('selected');
	}
	
	/* sicherstellen, dass dialog nicht sichtbar ist beim page-load */
	$('fb-modal').setStyles({
		opacity:0,
		display:'block'
	});
	/* events, die zum schließen des dialogs führen */
	// expliziter close-button
	$('closeBtn').addEvent('click',function(e) { closeDialog(); });
	// esc-key
	window.addEvent('keypress',function(e) { if(e.key == 'esc') { closeDialog(); } });
	// außerhalb des dialogs klicken
	$(document.body).addEvent('click',function(e) { 
		if($('fb-modal').get('opacity') == 1 && !$(e.target).getParent('.generic_dialog')) { 
			closeDialog();
		} 
	});
	/* klick auf feedback bild öffnet dialog */
	$('feedback-img').addEvent('click',function() {
		$('fb-modal').fade('in');
	});
	
	/* setzen des wertes des hidden-input-fields je nach geklicktem smiley */	
	$$('.feedback-text').each(function(item){
		item.addEvent('click', function(e){
			// stoppe den event des klickens auf den hyperlink
			e.stop();
			// hidden-input auf geklickten link-wert (happy, neutral,...)setzen
			onFeedbackItemClicked(item)
		});
	});

	/*  intercepten des form-submits für ajax-behandlung des formulars -> kein page refresh*/
	$('feedback-form').addEvent('submit', function(e){
		// form-submit stoppen
		e.stop();
		this.set('send', {
			onRequest: function(){
				 // sicherstellen, das bei erneutem absenden die captcha-meldung nicht
				 // mehr zu sehen ist
				$('feedback-submit-captcha-error').setStyle("display","none");

				// ajax-spinner icon anzeigen
				$('feedback-submit-sending').setStyle("display","block");
				// submit-button deaktivieren
				$('feedback-submit-btn').set('disabled', true);
			},
			onSuccess:function(response){
				// Falls das Captcha nicht korrekt war -> neues anfordern
				// und hidden-input id setzen
				
				result = eval('(' + response + ')');
				if(result.captchaFailed){
					$('feedback-submit-captcha-error').setStyle("display","block");
					Recaptcha.reload();
				}
				else {
					// erfolgsnachricht anzeigen
					$('feedback-submit-success').setStyle("display","block");
					$('feedback-submit-btn').set('disabled', true);
					(function(){
						closeDialog();
					}).delay(1000);
				}

			},
			onFailure: function(){
				// fehler-hinweis anzeigen
				$('feedback-submit-failure').setStyle("display","block");
			},
			onComplete: function(){
				$('feedback-submit-btn').set('disabled', false);
				// nach ajax-http-aufruf das "sending" ausblenden
				$('feedback-submit-sending').setStyle("display","none");
			}
		});
		
		this.send();
		
	});

});
