﻿function RatingStar(starIds, fieldAnzahlId, fieldChangedId, labelId, mouseOver) {

    var aRatingLevelText = new Array();
    aRatingLevelText[1] = 'Schlecht';
    aRatingLevelText[2] = 'Akzeptabel';
    aRatingLevelText[3] = 'Gut';
    aRatingLevelText[4] = 'Sehr gut';
    aRatingLevelText[5] = 'Hervorragend';

    var stars = null;
    var fieldAnzahl = null;
    var fieldChanged = null;
    var label = null;
    var onMouseOver = mouseOver;

    var init = function() {
        stars = new Array();
        for (var i = 0; i < starIds.length; i++) {
            var star = $("#" + starIds[i]);
            stars.push(star);
            star.mouseover(onStarOver);
            star.mouseout(onStarOut);
            star.click(onStarClick);
        }
        label = $("#" + labelId);
        fieldChanged = $("#" + fieldChangedId);
        fieldAnzahl = $("#" + fieldAnzahlId);
        fieldAnzahl.val(Math.floor(fieldAnzahl.val()));
    }

    var setStars = function(anzahl) {
        for (var i = 0; i < stars.length; i++) {
            if (i + 1 <= anzahl) {
                stars[i].attr("src", "images/icon_star_on.png");
            }
            else {
                stars[i].attr("src", "images/icon_star_off.png");
            }
        }
    }

    var onStarOver = function() {
        if (onMouseOver != null) {
            eval(onMouseOver);
        }
        var i;
        for (i = 0; i < stars.length; i++) {
            if (stars[i][0] == this) break;
        }
        setStars(i + 1);
        label.text(aRatingLevelText[i + 1]);
    }

    var onStarOut = function() {
        setStars(fieldAnzahl.val());
        if (fieldChanged.val() == "") {
            label.text("");
        }
        else {
            label.text(aRatingLevelText[fieldAnzahl.val()]);
        }
    }

    var onStarClick = function() {
        var i;
        for (i = 0; i < stars.length; i++) {
            if (stars[i][0] == this) break;
        }
        fieldAnzahl.val(i + 1)
        fieldChanged.val("true");
    }

    init();
    setStars(fieldAnzahl.val());
}
