﻿
var sMax;    // 最大数量的星星即最大评分值
var preSet; // 保存了评分值（通过单击来进行评分）
var rated; //是否评分过，并保存了结果（注意此值一旦设为空，就不能再评分）

//设置评分数
function SetRating(val) {

    var items = parseInt(val);
    var count = parseInt(items / 2);

    var round = val - items + (items - count * 2);

    var i = 1;
    for (; i <= count; i++) {
        document.getElementById("rate_" + i).className = "onRate";
    }
    var k=i;
    if (round > 0) {
        if (round > 1.5) {
            document.getElementById("rate_" + i).className = "onRate";
            k=i+1;
        }
        else if (round > 0.5) {
        document.getElementById("rate_" + i).className = "onHalfRate";
            k=i+1;
        }
        else
        {
          k=i;
        }
    }
    for (; k <= sMax; k++) {
        document.getElementById("rate_" + k).className = ""; 
    }
    //document.getElementById("RateTips").innerHTML = val;
    document.getElementById("rateMe").title = val;
   // rated = 1;

}
//设置已评论过
function SetRated() {
    rated = 1;
}
//取消评论
function CancelRated() {
    rated =0;
}

// 鼠标停留事件
function rating(e, num) {
    ev = e || window.event;
    var rate = parseInt(num.getAttribute("value"));
    var mousePos = mouseCoords(ev);
    sMax = 0;    // 默认值为0
    for (n = 0; n < num.parentNode.childNodes.length; n++) {
        if (num.parentNode.childNodes[n].nodeName == "LI") {
            sMax++;
        }
    }

    if (!rated) {
        s = num.id.replace("rate_", ''); // 获取选中的星星的索引，这里使用_1,_2,_3,_4,_5来做为评分控件的ID
        a = 0;
        for (i = 1; i <= sMax; i++) {
            if (i <= s) {
                if (i == s && mousePos.x < (findPos_ratting(num).Left + num.offsetWidth/2)) {
                    document.getElementById("rate_" + i).className = "onHalfRate";
                    rate--;
                }
                else {
                    document.getElementById("rate_" + i).className = "onRate";
                }
            } else {
            document.getElementById("rate_" + i).className = "0";
            }
        }
        switch (rate) {
            case 1:
            case 2:
            case 3: 
                document.getElementById("RateTips").innerHTML = "很差的作品，不推荐看";
                break;
            case 4:
            case 5:
            case 6:
                document.getElementById("RateTips").innerHTML = "普普通通的作品";
                break;
            case 7:
            case 8:
                document.getElementById("RateTips").innerHTML = "还不错的作品，值得一看";
                break;
            case 9:
            case 10:
                document.getElementById("RateTips").innerHTML = "经典中的经典，不可错过";
                break;
        }
    }
}

// 离开事件
function off(me) {
    if (!rated) {
        if (!preSet) {
            for (i = 1; i <= sMax; i++) {
                document.getElementById("rate_" + i).className = "";
                document.getElementById("RateTips").innerHTML = "移动星星可以评分";
            }

            SetRating(rvalue);
            
        } else {
        rating(preSet);
  
        }
    }
}

// 点击进行评分
function rateIt(me) {
    if (!rated) {
        var TotalRate = parseInt(me.getAttribute("value"));
        if (me.className == 'onHalfRate') {
            TotalRate--;
        }
        document.getElementById("RateTips").innerHTML = "您的评分是" + TotalRate + " 分<a href='javascript:del_Rate();'>&nbsp;[删除]</a>";
        preSet = me;
        rated = 1; //设为1以后，就变成了最终结果，不能再修改评分结果
        sendRate(TotalRate);
    }
    else {
        alert('您已经评过分啦！');
    }
}


//送评分结果
function sendRate(rate) {
    AddRating(rate);
}

function mouseCoords(ev) {
    if (ev.pageX || ev.pageY) {
        return { x: ev.pageX, y: ev.pageY };
    }
    return {
        x: ev.clientX + document.body.scrollLeft - document.body.clientLeft,
        y: ev.clientY + document.body.scrollTop - document.body.clientTop
    };
}

//返回Top,Left对象
function Pos(top, left) {
    this.Top = top;
    this.Left = left;
}
//获取位置X,Y
function findPos_ratting(oj) {
    var obj = oj;

    var curleft = curtop = 0;
    curleft = obj.offsetLeft;
    curtop = obj.offsetTop;
    var obj = obj.offsetParent;

    while (obj) {
        curleft += obj.offsetLeft;
        curtop += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return new Pos(curtop, curleft);
}


