﻿// ==UserScript==
// @name                星星评分系统
// @description         这是一个评分系统，包括了图片的鼠标效果，点击后的cookie和ajax处理
// @created date        2009/7/24   15:16
// @created author      Tiger(tigershi0507@gmail.com)
// @version             2.0.1
// @version owner       Copyright (C) 2009-2010 keerr.com All rights reserved.
// ==/UserScript==

/*************************************************
	verified time 	:	2009/8/15   12:09
	verified author	:	Tiger
	verified purpose:	修改了整个评分系统的DOM结构，添加了鼠标mouseover时的效果，准备了下一次的数据交互的接口
**************************************************/
/*************************************************
	verified time 	:	2009/8/20   11:00
	verified author	:	daniel
	verified purpose:	增加了ajax返回字段和结果处理
**************************************************/
/*************************************************
	verified time 	:	2009/8/21   10:32
	verified author	:	Tiger
	verified purpose:	添加了当click star后相应的条目数+1
**************************************************/
/*************************************************
	verified time 	:	2009/8/24   15:02
	verified author	:	Tiger
	verified purpose:	修改ajax的beforeSend和complete事件，显示loading图案
**************************************************/
/*************************************************
	verified time 	:	2009/8/26   13:50
	verified author	:	Tiger
	verified purpose:	继续修改loading img
**************************************************/
/*************************************************
verified time 	:	2009/11/3   10:00
verified author	:	Daniel
verified purpose:	继续修改ProjectID
**************************************************/
var sr_hash = new Array();

$.fn.StarRating30 = function(options) {
    //var s = options ? $.extend(defaults, options) : defaults;
    return this.each(function() {
        if (sr_hash[$(this).attr("id")] === "0" || sr_hash[$(this).attr("id")] === null) {
            //box 为整个结构的最外层容器，由他来捕捉所有事件
            var box = $(this);
            //默认级别,星星的变化都是通过这个层的背景图片的backgroundPosition 变化来实现
            var defaultStars = $("div.defaultStars", box);
            //获得设置的默认级别
            var defaultValue = parseFloat(box.attr("default"));
            var defaultPosition = defaultValue * options.StarWidth + "px"; //defaultValue * 30 - 150 + "px -30px";
            box.parent().next(".range_result").text(defaultValue.toFixed(1)+"分");
            //defaultStars.css("width", defaultPosition);
            $("li", box).hover(
                function(e) {
                    var src = e ? e.target : event.srcElement,
                        $_range_result_position = $("."+$(this).parents(".starRate").attr("id")+"_range_result"),
                        $_range_py = $_range_result_position.next(".range_py");
                    if ($(this).get(0).tagName == "LI") {
                        $(this).css("background", "transparent url(/images/stars22.gif) repeat-x scroll 0 -22px");
                        //$("."+$(this).parents(".starRate").attr("id")+"_range_result");
                        $_range_result_position.hide();
                        $_range_py.show().text($(this).attr("title"));
                    }
                },
                function() {
                    var $_range_result_position = $("."+$(this).parents(".starRate").attr("id")+"_range_result"),
                        $_range_py = $_range_result_position.next(".range_py");
                    $(this).css("background", "");
                    $_range_result_position.show();
                    $_range_py.hide();
                }
            );

            box.click(function(e) {
                var src = e ? e.target : event.srcElement,
                    typeName = $(this).attr("id");
                if (src.tagName == "LI") {
                    var x = src.innerHTML * options.StarWidth;
                    defaultStars.css("width", x + "px");
                    $("ul", box).css("width", "").css("background", "");
                    //移除事件，让box不在对鼠标动作作出反映
                    box.unbind();
                    $("li", box).unbind();
                    box.css("cursor", "default");
                    $.ajax({
                        url: '/ajax/GetJson.aspx',
                        type: 'post',
                        dataType: 'json',
                        data:{type:"subStarRating",id:project[0].ProjectID,tid: $(this).attr("id"), pfv: src.innerHTML},
                        timeout: 3000,
                        cache:false,
                        beforeSend: function(XMLHttpRequest){
			                //ShowLoading();
			                var $_SR_result = $(src).parents(".newhouse_nubper04").next(".SR_result");
			                $_SR_result.find("span:lt(2)").hide();
			                $_SR_result.find("span:last").append($("#loading_img").clone().show());
		                },
		                complete: function(XMLHttpRequest, textStatus){
			                //HideLoading();
//    			            setTimeout(function () {
//    			                $("#loading_img").hide();
//    			            }, 1000);
		                },
                        error: function(e){
                        },
                        success: function(data){
                            var cookie_value_arr = [],
                                cookie_value = "";
//                            $(src).css("width", parseFloat(data[1]).toFixed(1)*options.StarWidth+"px");
//                            // 改变背景stars的width
//                            defaultStars.css("width", "0px");
//                            //$("#"+data[0]).parent().next(".range_result").text(parseFloat(data[1]).toFixed(1)+"分");
//                            // 改变评论的分数
//                            $("."+data[0]+"_range_result").show().html(parseFloat(data[1]).toFixed(1)+'分').next().hide();
//                            $(".total_avg").text(parseFloat(data[2]).toFixed(1)*20);
//                            // 添加参评人数
//                            $(".SR_people_cp strong").text(data[3]);
//                            $('#li_'+data[0]).text('（共'+data[4].toString()+'人)');
//                            //$('#avgpf').html('<strong>'+parseFloat(data[2]).toFixed(1)+'分</strong>');
//                            //$.cookie($(src).parents(".starRate").attr("id"), 1);
//                            
                            setTimeout(function () {
                                $(src).css("width", parseFloat(data[1]).toFixed(1)*options.StarWidth+"px");
                                // 改变背景stars的width
                                defaultStars.css("width", "0px");
                                //$("#"+data[0]).parent().next(".range_result").text(parseFloat(data[1]).toFixed(1)+"分");
                                // 改变评论的分数
                                $("."+data[0]+"_range_result").show().html(parseFloat(data[1]).toFixed(1)+'分').next().hide();
                                $(".total_avg").text(parseFloat(data[2]).toFixed(1)*20);
                                // 添加参评人数
                                $(".SR_people_cp").text(data[3]);
                                $('#li_'+data[0]).text('（共'+data[4].toString()+'人)');
                                
                                $("."+data[0]+"_range_result").nextAll("span:last").empty();
                                //$('#avgpf').html('<strong>'+parseFloat(data[2]).toFixed(1)+'分</strong>');
                                //$.cookie($(src).parents(".starRate").attr("id"), 1);
                            }, 1000);
                            
                            
                            // 处理cookie
                            sr_hash[$(src).parents(".starRate").attr("id")] = "1";
                            for(var key in sr_hash){
                                cookie_value_arr.push(key+"="+sr_hash[key]);
                            }
                            cookie_value = cookie_value_arr.join(",");
                            $.cookie(_pl_ids.split("=")[1]+"_starrating", cookie_value);
                        }
                    });
                    //$("#message").html("您投下的一票是：" + src.title + "，值是：" + src.innerHTML);
                }
            });
        
        }
        else{
        }
    });
};


function setRating(obj, s)
{
    var avg=0.00;
    for(var i=0;i<obj.length;i++)
    {
        if(i>5) break;
        switch(obj[i][1].toString())
        {
            case '开发商':
                $('#kfs').attr('default',obj[i][1].toString());
                //$('#li_kfs').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("kfs", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            case '环境':
                $('#hj').attr('default',obj[i][1].toString());
                //$('#li_hj').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("hj", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            case '区位':
                $('#qw').attr('default',obj[i][1].toString());
                //$('#li_qw').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("qw", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            case '价格':
                $('#jg').attr('default',obj[i][1].toString());
                //$('#li_jg').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("jg", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            case '物业':
                $('#wy').attr('default',obj[i][1].toString());
                //$('#li_wy').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("wy", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            case '规划':
                $('#gh').attr('default',obj[i][1].toString());
                //$('#li_gh').text('（共'+obj[i][4].toString()+'人)');
                check_sr_cookie("gh", parseFloat(obj[i][2]), s);
                avg=avg+parseFloat(obj[i][2]);
                break;
            default:
                break;
        }
    }
    avg = avg/6.00;
    $(".total_avg").text(parseFloat(avg.toFixed(1)*20));
    return avg;
}

function check_sr_cookie(typeName, sr_value, s) {
    if (sr_hash[typeName] === "0" || sr_hash[typeName] === null) {
        $('#'+typeName).find(".defaultStars").css("width",sr_value.toFixed(1) * s.StarWidth + "px");
    }
    else{
        $("#"+typeName).find("ul li.No"+Math.ceil(sr_value)).css("width",sr_value.toFixed(1) * s.StarWidth + "px").css("background", "transparent url(/images/stars22.gif) repeat-x scroll 0 -22px");
        $("#"+typeName).unbind().css("cursor", "default").find(".defaultStars").width("0px");
        sr_hash[typeName] = "1";
    }
    
    $("#"+typeName).parent().next(".SR_result").find("."+typeName+"_range_result").text(sr_value.toFixed(1)+"分");
}

function SR_cookieToArray(cookieName) {
    var sr_cookie_value = $.cookie(cookieName),
        sr_array = [];
    if (sr_cookie_value !== null && sr_cookie_value !== "") {
        sr_array = sr_cookie_value.split(",");
        for(var i=0; i<sr_array.length; i++){
            var tempArr = sr_array[i].split("=");
            sr_hash[tempArr[0]] = tempArr[1];
        }
        
    }
    else{
        $.cookie(cookieName,"kfs=0,hj=0,qw=0,jg=0,wy=0,gh=0");
        sr_hash = {"kfs":"0", "hj":"0", "qw":"0", "jg":"0", "wy":"0", "gh":"0"};
    }
}

$(document).ready(function(){
    $.ajax({
        url: '/ajax/GetJson.aspx',
        type: 'post',
        dataType: 'json',
        data: 'type=getStarRating&id=' + project[0].ProjectID,
        timeout: 10000,
        cache:false,
        error: function(e){
            alert("数据传输失败，请刷新试试看！","WARNING！！");
        },
        success: function(str){
            $('#avgpf').html('<strong>'+setRating(str, {StarWidth:22}).toFixed(1)+'分</strong>');
            $(".SR_people_cp").text(str[0][3]);
            $("#kfs, #qw, #wy, #hj, #jg, #gh").StarRating30({StarWidth:22});
        }//,
//        beforeSend: function () {
//            
//        },
//        complete: function () {
//        }
    });
    SR_cookieToArray(project[0].ProjectID + "_starrating");
});

