$(document).ready(function(){
$("#commentText").keyup(function() {

        var commentTextUTF8 = utf8_encode($("#commentText").val());
        var commentTextLengthMax = $("#commentLengthMax").val();
        var commentTextLength=0;
        var cutLength = 0;

        //Kommentartext durchlaufen
        for (var i = 0; i < commentTextUTF8.length; i++) {

            //jedes Zeichen zählen
            commentTextLength++;

            if(commentTextLength > commentTextLengthMax) {

                break;

            }

            //linefeeds zählen doppelt
            if(commentTextUTF8.charCodeAt(i) == 10) {

                commentTextLength++;

            }

            //trotzdem nur ein Zeichen bei abzuschneidender Länge
            cutLength++;

        }

        //falls Text länger als erlaubte Maximallänge
        if(commentTextLength > commentTextLengthMax) {

            //Eingabe abschneiden
            $("#commentText").val(utf8_decode(commentTextUTF8.substring(0, cutLength)));
            $("#numberOfCharacteres").text("0 Zeichen übrig");

        }

        //Eingabe nicht zu lang
        else {

            // Zähler im Div aktualisieren
            $("#numberOfCharacters").text(commentTextLengthMax - commentTextLength+" Zeichen übrig");

        }

});
});


/**
 * wandelt Text in UTF8-codierten Text um
 * @param string text umzuwandelnder Text
 * @return UTF8-codierte Version von text
 */
function utf8_encode(text) {

    // Steuerzeichen durch einfaches Newline ersetzen
    text = text.replace(/\r\n/g,"\n");

    var utftext = "";
    
    // text durchlaufen
    for(var n = 0; n < text.length; n++) {

        // Unicode-Zeichennummer des aktuellen Zeichens ermitteln
        var c = text.charCodeAt(n);
        
        //
        if(c < 128) {
    
            utftext += String.fromCharCode(c);

        }

        else if((c>127) && (c<2048)) {

            utftext += String.fromCharCode((c>>6) | 192);
            utftext += String.fromCharCode((c&63) | 128);

    }

    else {

        utftext += String.fromCharCode((c>>12) | 224);
        utftext += String.fromCharCode(((c>>6)&63) | 128);
        utftext += String.fromCharCode((c&63) | 128);
        }

    }

    return utftext;

}

function utf8_decode(utftext) {
    var plaintext = "";
    var i = 0;
    var c = 0;
    var c1 = 0;
    var c2 = 0;
    while(i < utftext.length) {

        c = utftext.charCodeAt(i);
        if(c<128) {

            plaintext += String.fromCharCode(c);
            i++;

        }
        else if((c>191) && (c<224)) {

            c2 = utftext.charCodeAt(i+1);
            plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
            i+=2;

        }

        else {

            c2 = utftext.charCodeAt(i+1);
            var c3 = utftext.charCodeAt(i+2);
            plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
            i+=3;

        }

    }

    return plaintext;
    
}


/**
 * überprüft, ob bestimmte Eingabefelder leer sind und gibt in diesem Fall eine Fehlermeldung aus
 */
var checkInputFields = function() {

	// falls alle Eingabefelder nicht leer
	if(document.CommentWriteControls.commentName.value != '' && document.CommentWriteControls.commentEmail.value != '' && document.CommentWriteControls.commentText.value != ''  && document.CommentWriteControls.userCaptchaHash.value != '') {

		return true;

	}

	// andernfalls
	else {

		alert(unescape("Bitte alle Felder ausf%FCllen!"));
		return false;

	}

}

/**
 * lädt neues Captcha und gibt es aus
 */
var refreshCaptcha = function() {

    var randomToken = new String(Math.random() * Math.random()).replace(/\./, "");
    
    // neues Captcha laden und anzeigen
    $("._captcha").attr("src", "/captcha.php?"+randomToken);
    
    // mögliche alte Eingabe löschen
    $("._userCaptchaHash").val("");

}



