function starRating(rating, areaId, noteId, imgServerLink, where)
{
    var obj = this;
    this.areaId = areaId;
    this.noteId = noteId;
    this.imgServerLink = imgServerLink;
    this.area = document.getElementById(areaId);
    if (!this.area) {
        return false;
    }
    this.where = 'changeRating';
    if(where){
        this.where = where;
    }
    this.rating = parseInt(rating);
    this.activeStar = this.imgServerLink + '/images/icons/star_yellow.gif';
    this.inactiveStar = this.imgServerLink + '/images/icons/star.gif';
    if (!document.getElementById('imgStatusField_' + this.noteId)) {
        this.statusField = document.createElement('span');
        this.statusField.id = 'imgStatusField_' + this.areaId;
        this.statusField.className = 'imgStatusField';
    } else {
        this.statusField = document.getElementById('imgStatusField_' + this.areaId);
    }
    this.maxStars = 5;
    this.stars = new Array();
    this.showNum = false; // dlya raboti cifer sdelat true... v IE poka vidaet errori potomu false
    if (this.showNum) {
        if (!document.getElementById('img_divNum')) {
            this.divNum = document.createElement('div');
            this.divNum.id = 'img_divNum';
            this.divNum.className = 'divShowNum';
        } else {
            this.divNum = document.getElementById('img_divNum');
        }
        this.divNum.style.display = 'none';
        this.divNum.style.position = 'absolute';
        this.area.appendChild(this.divNum);
    }
    for (i = 1; i <= this.maxStars; i++) {
        this.stars[i] = new Image();
        if (i <= rating) {
            this.stars[i].src = this.activeStar;
        } else {
            this.stars[i].src = this.inactiveStar;
        }
        this.stars[i].id = 'ratingImg_' + i + '_' + this.areaId;
        this.stars[i].name = i;
        this.stars[i].style.cursor = 'default';
        if (this.noteId > 0) {
            this.stars[i].style.cursor = 'pointer';
        }
        this.stars[i].onmouseover = function(event)
        {
            if (obj.noteId > 0) {
                var over = parseInt(this.name);
                if (obj.showNum) {
                    if (!event) event = window.event;
                    var _x = event.clientX;
                    var _y = event.clientY;
                    obj.divNum.style.left = this.x + 'px';
                    obj.divNum.innerHTML = over;
                    obj.divNum.style.height = '10px';
                    obj.divNum.style.top = this.y - 19 + 'px';
                    obj.divNum.style.display = 'block';
                }
                
                for (i = 1; i <= obj.maxStars; i++) {
                    if (i <= over) {
                        obj.stars[i].src = obj.activeStar;
                    } else {
                        obj.stars[i].src = obj.inactiveStar;
                    }
                }
            }
        }
        this.stars[i].onmouseout = function(event)
        {
            if (obj.noteId > 0) {
                if (obj.showNum) {
                    obj.divNum.style.display = 'none';
                }
                for (i = 1; i <= obj.maxStars; i++) {
                    if (i <= obj.rating) {
                        obj.stars[i].src = obj.activeStar;
                    } else {
                        obj.stars[i].src = obj.inactiveStar;
                    }
                }
            }
        }
        if (this.noteId > 0) {
            this.stars[i].onclick = function(event)
            {
                if (obj.noteId > 0) {
                    var over = parseInt(this.name);
                    obj.statusField.innerHTML = '&nbsp;&nbsp;<img src="' + obj.imgServerLink + '/images/ajax-loader.gif" />';
                    $.get(obj.imgServerLink + '/ajax/'+obj.where+'/' + obj.noteId + '/' + over, function(data)
                    {
                        var result = parseInt(data);
                        if (!result) result = 0;
                        if (result > 0) {
                            obj.statusField.innerHTML = '&nbsp;&nbsp;Ваш голос принят';
                            obj.rating = result;
                            obj.noteId = 0;
                            for (i = 1; i <= obj.maxStars; i++) {
                                if (obj.rating >= i) {
                                    obj.stars[i].src = obj.activeStar;
                                } else {
                                    obj.stars[i].src = obj.inactiveStar;
                                }
                                obj.stars[i].style.cursor = 'default';
                            }
                        } else {
                            switch (result)
                            {
                                case -1:
                                    obj.statusField.innerHTML = '&nbsp;&nbsp;Вы уже оценивали';
                                break;
                                case -2:
                                    obj.statusField.innerHTML = '&nbsp;&nbsp;Только авторизированные пользователи';
                                break;
                                case -3:
                                    obj.statusField.innerHTML = '&nbsp;&nbsp;За свои нельзя';
                                break;
                                case 0:
                                default:
                                    obj.statusField.innerHTML = '&nbsp;&nbsp;Ошибка оценивания';
                            }
                        }
                    }, 'text');
                }
            }
        }
        this.area.appendChild(this.stars[i]);
    }
    this.area.appendChild(this.statusField);
}

