
/* aktueller hover-stern */
	var hover_star;

/* wenn hover-stern angeklick, in Variable speichern */
	var hover_star_lock = 0;

/* speichert alle gedrückten "war ... hilfreich-Buttons
 * damit diese ausgeblendet werden können */
	var RankingIdArray = [];

$(document).ready( function() {

	selectHideUsefulBttn();
	designCommentLink(); // Kommentar-Link nach designen

	$('#stars-container div').hover(function() {
		hover_star = parseInt($(this).attr('class'));

		/* Sterne einfärben */

		for(c = 1; c <= hover_star; c++) {
			$('#stars-container .' + c).css({'background-position':'0px -27px'});
		}

		/* user bewegt Maus von einem Stern auf den anderen
			 * -> alle größeren Sterne leeren */

		for(c = 5; c > hover_star; c--) {
			$('#stars-container .' + c).css({'background-position':'0px 0px'});
		}
	});

	/* für outhandler extra funktion, die erst beim verlassen des containers feuern
	 * soll und nicht, wenn ein stern mit der Maus verlassen wird */

	$('#stars-container').mouseleave( function() {

		if(hover_star_lock == 0) {
			$('#stars-container div').css({'background-position':'0px 0px'});
		} else {

			for(c = 1; c <= 5; c++) {
				if(c <= hover_star_lock) {
					$('#stars-container .' + c).css({'background-position':'0px -27px'});
				} else {
					$('#stars-container .' + c).css({'background-position':'0px 0px'});
				}
			}
		}
	});


	/* Funtion für
	* den Klick auf
	* einen Stern
	*/

	$('#stars-container div').click( function() {
		hover_star_lock = hover_star;
		/* alle ausblenden, die hier nicht zugehören */
		$('ul li.grade ').hide();
		$('ul li.grade[attr|="'+ hover_star +'"]').show();

		/* alle geöffneten Kommentare schließen */
		$('.comment-container').hide();
	});

	/* alle Bewertungen
	 * anzeigen
	 */

	$('#show-all-button').click( function() {
		hover_star_lock = 0;
		$('#stars-container div').css({'background-position':'0px 0px'});
		$('ul li.grade').show();
	});

	/*
	 * war diese Meinung hilfreich-Button
	 */

	$('.grade-comment .grade-bttn').click( function() {

		/* ID der angeklickten Meinung auslesen */
		rankingId = $(this).parent().attr('attr');

		/* ausblenden */
		RankingIdArray = [rankingId];
		HideUsefulBttn();

		if($(this).hasClass('grade-bttn-yes')) {
			usefulBttnPressed(1, rankingId );

		} else if($(this).hasClass('grade-bttn-no')) {
			usefulBttnPressed(0, rankingId );
		}
	});


	/*
	 * Kommentar über eine Meinung abgeben
	 */

	$('.grade-comment-link').click( function() {
		/* Ranking id des angeklickten Elements holen */
		rankingId = $(this).attr('attr');

		/* HTML ausgeben */
		htmlStringForComments = '<h2 class="comment-container-title" id="comment-container-title-' + rankingId + '">Kommentare zu dieser Meinung</h2><li class="comment-container" id="comment-container-' + rankingId + '" ><div id="comment-list-' + rankingId + '"> <!-- hier werden per ajax die Kommentare rein geladen --> </div></li> <h2 class="comment-container-title">Ihr eigener Kommentar zu dieser Meinung</h2><li class="comment-container" style="margin-bottom: 10px" id="comment-container-' + rankingId + '" ><form id="commentform_' + rankingId + '"><textarea class="comment-txtarea" id="comment-txtarea-' + rankingId + '" name="text" rows="5" cols="60">Geben Sie hier ein Kommentar zu dieser Meinung ein ... </textarea><div class="comment-error-message" id="comment-error-message-' + rankingId + '"></div><div class="comment-success-message" id="comment-success-message-' + rankingId + '"></div><input type="textfield" class="comment-name" id="comment-name-' + rankingId + '" name="name" value="Ihr Name"><input type="textfield" class="comment-email" id="comment-email-' + rankingId + '" name="email" value="Ihre E-Mail Adresse"> <span style="font-size: 7pt; margin-top: 15px">(wird NICHT veröffentlicht)</span><div class="clearfix"></div><div class="comment-captcha" id="comment-captcha-' + rankingId + '"></div><div class="comment-bttn" attr="' + rankingId + '"></div><div class="clearfix"></div></form></li><div class="clearfix"></div> <!-- clearfix für margins --> ';

		if( $('#comment-main-container-' + rankingId).html() != '') {
			$('#comment-main-container-' + rankingId).html('');
		} else {
			$('#comment-main-container-' + rankingId).html(htmlStringForComments);

			/* gebe Captcha für das Formular aus */
			createCaptcha(rankingId);

			/* gebe dazu alle Kommentare aus */
			listComments(rankingId);


			/*
			 * Click-Funktionen hinzufügen
			 */


			/* eingegebenes Kommentar in DB schreiben */
			$('.comment-bttn').click( function() {
				/* Ranking id des angeklickten Elements holen */
				rankingId = $(this).attr('attr');
				/* Eingaben auslesen */
				commentTxt = $('#comment-txtarea-' + rankingId).val();
				commentName = $('#comment-name-' + rankingId).val();
				commentEmail = $('#comment-email-' + rankingId).val();
				commentCaptcha = $('#comment-captcha-' + rankingId + ' input[name="CAPTCHA1"]').val();

				/* der folgende Quellcode nimmt sich automatisch Name und Wert des Formulars.
				 * Vorteil: Ich muss in Javascript die Variablen nicht ändern,
				 * wenn das HTML des Formulars geändert wird! Nur in PHP!.
				 * */

				var obj = {'reqOption':3, 'rankingId':rankingId};
				var arr = new Array();

				$("#commentform_"+rankingId+" :input").each(function () {

					arr[$(this).attr('name')] = $(this).val();
				});

				$.extend(obj, arr);

				$.ajax({
					url: '../server.php',
					type: 'post',
					data: obj,
					dataType: 'json',
					success: function(data) {

                                         	$('#comment-success-message-' + rankingId).text();
                                                 $('#comment-success-message-' + rankingId).hide();
                                                 $('#comment-error-message-' + rankingId).text();
                                                 $('#comment-error-message-' + rankingId).hide();

						/* Fehler-message ausgeben */
						if(data.arr['occur']) {
                                                         $('#comment-error-message-' + rankingId).show().text( data.arr['message'] );
						} else {
							$('#comment-error-message-' + rankingId).hide();
							$('#comment-success-message-' + rankingId).show().text( data.arr['message'] );
                                                         listComments(rankingId);

							/* alle Felder leeren */
							$("#commentform_" + rankingId + " :input").each(function () {
								$(this).val('');
							})
						}
					},
					error: function() {

					}
				});

				/* neuen Captcha erstellen */

				createCaptcha(rankingId);
			});


			/*
			 *alle Formularfelder für Kommentare leeren sich, wenn Klick darauf
			 */

			$('.comment-name').click(function() {

				if($(this).val() == 'Ihr Name') {
					$(this).val('');
				}
			});

			$('.comment-txtarea').click(function() {

				if($(this).val() == 'Geben Sie hier ein Kommentar zu dieser Meinung ein ... ') {
					$(this).val('');
				}
			});

			$('.comment-email').click(function() {

				if($(this).val() == 'Ihre E-Mail Adresse') {
					$(this).val('');
				}
			});

			}
		});



		/*
		 * Missbrauch melden
		 */

		$('.comment-abuse-link').click( function() {

			var rankId = $(this).attr('attr');

			var obj = {'reqOption' : 7, 'rankingId' : rankId};

			$.ajax({
				url: '../server.php',
				type: 'post',
				data: obj,
				dataType: 'json',
				success: function() {

					var htmlString = '<div class="comment-abuse-link-clicked">Vielen Dank für ihre Hilfe.</div>';
					$('.comment-abuse-link[attr=' + rankId + ']').replaceWith(htmlString);

				},
				error: function() {

				}

			});
		});

//---------BEWERTUNGEN--------------------------------------------------------------
//----------------------------------------------------------------------------------

	$('.bewertung-stars-container div').hover(function() {
		hover_star = parseInt($(this).attr('class'));
		/* Sterne einfärben */

		for(c = 1; c <= hover_star; c++) {
			$('#' + $(this).parent().attr('id') + ' .' + c).css({'background-position':'0px -27px'});
		}

		/* user bewegt Maus von einem Stern auf den anderen
			 * -> alle größeren Sterne leeren */

		for(c = 5; c > hover_star; c--) {
			$('#' + $(this).parent().attr('id') + ' .' + c).css({'background-position':'0px 0px'});
		}
	});

	/* für outhandler extra funktion, die erst beim verlassen des containers feuern
	 * soll und nicht, wenn ein stern mit der Maus verlassen wird */

	$('.bewertung-stars-container').mouseleave( function() {

		/* hier hover_star_lock abgreifen */
		var hover_star_lock = $( '#' +  $(this).parent().attr('id') + ' .bewertung-hidden').attr('attr');

		for(c = 1; c <= 5; c++) {
			if(c <= parseInt(hover_star_lock)) {
				$('#' + $(this).attr('id') + ' .' + c).css({'background-position':'0px -27px'});
			} else {
				$('#' + $(this).attr('id') + ' .' + c).css({'background-position':'0px 0px'});
		}

		}
	});


	/* Funtion für
	* den Klick auf
	* einen Stern
	*/

	$('.bewertung-stars-container div').click( function() {

		gradeValue = 0;

		switch (hover_star) {
			case 1: gradeValue = 0; break;
			case 2: gradeValue = 25; break;
			case 3: gradeValue = 50; break;
			case 4: gradeValue = 75; break;
			case 5: gradeValue = 100; break;
			default: gradeValue = 0;
		}

		$( '#' +  $(this).parent().parent().attr('id') + ' .bewertung-hidden').attr('attr', hover_star);
		$( '#' +  $(this).parent().parent().attr('id') + ' .bewertung-hidden').val(gradeValue);

	});

//---------------------------------------------------------------------------------
//---------------------------------------------------------------------------------

    /*
    *   Pflichtfelder überprüfen:
    *   das Formular soll nur absendbar sein, wenn für jeden Bewertungspunkt
    *   mindestens ein Stern vergeben wurde und alle Felder inkl. Checkbox
    *   unter "Über Sie" ausgefüllt sind.
    */

    //Ändern einer der beiden input-fields oder der checkbox
    $('.requiredField, #AGB').change( function() {
        updateSubmitButton();
    } );

    $('.bewertung-stars-container').click( function() {
        updateSubmitButton();
    } );

    //Benötigte Felder überprüfen, Button aktivieren oder deaktivieren
    function updateSubmitButton() {
        var fail = false;

        //Bewertungen durchlaufen, wenn eine nicht ausgefüllt: fail = true
        $('.star-bewertung').each( function() {
            if( $(this).find('>:first-child').attr('attr') == 0 ) {
                fail = true;
            }
        } );

        //requiredFields durchlaufen, wenn eins nicht ausgefüllt: fail = true
        $('.requiredField').each( function() {
            if( $(this).val().length < 2) {
                fail = true;
            }
        } );

        //checkbox überprüfen, wenn nicht checked: fail = true
        if( typeof( $('#AGB').attr('checked') ) == 'undefined' ) {
            fail = true;
        }

        console.log(  fail )
        var submitButton = $('#submit');
        if( fail == false ) {  //Button aktivieren
            //submitButton.removeAttr('disabled');
            submitButton.data('valid', true)
        }
        else {  //Button deaktivieren
            //submitButton.attr('disabled', 'disabled');
            submitButton.data('valid', false)
        }
    }

    //Wenn auf den deaktivierten Button geklickt wird, soll die Fehlermeldung
    //angezeigt werden:
    $('#target').submit( function(e){
        if( $('#submit').data('valid') == true ) {
            return true;
        }
        else {
            $('#clientError').show();
            return false;
        }
    } );


});


	function usefulBttnPressed(bttnPressed, rankingId) {

			var obj = {'reqOption' : 1, 'rankingId' : rankingId, 'bttnPressed' : bttnPressed};

			$.ajax({
			url: '../server.php',
			type: 'post',
			data: obj,
			dataType: 'json',
			success: function() {
				/* button verschwinden lassen */
				HideUsefulBttn();
			},
			error: function() {

			}
		});
	}

	/* Funktion, welche alle "war ... hilfreich" ausbledet */

	var obj = {'reqOption' : 2};

	function selectHideUsefulBttn() {
		$.ajax({
			url: '../server.php',
			type: 'post',
			data: obj,
			dataType: 'json',
			success: function(data) {

				for(i in data.arr) {
					RankingIdArray[i] = data.arr[i].RANKING_ID;
					$('.grade-comment[attr=' + RankingIdArray[i]+ ']').html('Vielen Dank für Ihre Bewertung!');
				}
			}, error: function() {

			}
		});
	}

	function HideUsefulBttn() {

		for(i in RankingIdArray) {
			$('.grade-comment[attr=' + RankingIdArray[i]+ ']').html('Vielen Dank für Ihre Bewertung!');
		}
	}


	/*
	 * gibt alle Kommentare per Ajax aus
	 */

	function listComments(rankingId) {

		var obj = {'reqOption': 4, 'rankingId' : rankingId};

		$.ajax({
			url: '../server.php',
			type: 'post',
			data: obj,
			dataType: 'json',
			success: function(data) {

				/* Box leeren und dann neu befüllen */
				$('#comment-list-' + rankingId).html('');
                                 dataarr = data.arr;
                                 if (dataarr.length <= 0) {
                                 	  $('#comment-list-' + rankingId).append('Bisher keine Kommentare abgegegen');
                                 }
                                 else {
	                                 for(i in data.arr) {
	                                         $('#comment-list-' + rankingId).append(
	                                                 '<div class="comment-box"><p>Von <em>' + data.arr[i].name + '</em> kommentiert am <em>' + data.arr[i].timestamp + '</em></p>'
	                                                  + data.arr[i].comment +
	                                                 '</div>'
	                                         );
	                                 }
                                 }
			},
			error: function() {

			}
		})

	}

	function createCaptcha(rankingId) {

		/* Frage per Ajax das Bild ab */

		var obj = {'reqOption' : 5};

		$.ajax({
			url: '../server.php',
			type: 'post',
			data: obj,
			success: function(data) {

				$('#comment-captcha-' + rankingId).html(data);
			},
			error: function () {

			}
		});
	}

	// Diese Funktion setzt den Link entweder ins Singular oder
	// Plural und zeigt ggf. die Anzahl an Kommentaren an.
	function designCommentLink() {

		var obj = {'reqOption' : 6};

		$.ajax({
			url: '../server.php',
			type: 'post',
			data: obj,
			dataType: 'json',
			success: function(data) {

				for(i in data.arr) {

					linkName = 'Kommentar';

					if(data.arr[i].cntComments > 1) {
						linkName = 'Kommentare';
					}

					$('.grade-comment-link[attr="' + data.arr[i].ranking_id + '"]').text(linkName + ' (' + data.arr[i].cntComments + ')');
				}

			},
			error: function() {

			}
		});
	}
