﻿/*
*评价界面生成
*
*/
function StarRating(id, imageOnUrl, imageOffUrl, imageHoverUrl, maxValue, value)
{

	if( value == undefined || value == null )
		value = 0;
	
	if( maxValue == undefined || maxValue == null )
		maxValue = 5;
	this.ID = id;
	this.MaxValue = maxValue;
	this.Value = value;
	this.ImageOn = imageOnUrl;
	this.ImageOff = imageOffUrl;
	this.ImageHover = imageHoverUrl;
	this.AutoLock = false;
	this.IsEnabled = true;
	this.IsInitialized = false;
	this.Images = new Array(maxValue);
	this.Container = null;
	this.ValueControl = null;
	this.ValueControlID = this.ID; //+ "_Value";

	new Image().src = this.ImageOn;
	new Image().src = this.ImageOff;
	new Image().src = this.ImageHover;
}

StarRating.Items = Array();

StarRating.Create = function(id, imageOnUrl, imageOffUrl, imageHoverUrl, maxValue, value)
{
	var obj = new StarRating(id, imageOnUrl, imageOffUrl, imageHoverUrl, maxValue, value);
	StarRating.Items[obj.ID] = obj;
	return obj;
}

StarRating.CreateJSControl = function(id, imageOnUrl, imageOffUrl, imageHoverUrl, maxValue, value)
{

	var rater = StarRating.Create(id, imageOnUrl, imageOffUrl, imageHoverUrl, maxValue, value);
	rater.Render();
	return rater;
}

StarRating.InitializeRater = function(rater)
{
	for(i = 1; i <= rater.MaxValue; i++)
	{
		var imgID = rater.ID + "_img" + i;
		var img = document.getElementById(imgID);
		rater.Images[i] = img;
	}
	rater.Container = document.getElementById(rater.ID);
	var myItems = document.getElementsByName(rater.ValueControlID.replace(/_/g,'$'));
	rater.ValueControl = myItems[0];
	rater.ValueControl.value = rater.Value;
	rater.IsInitialized = true;
}


StarRating.Refresh = function(source, raterID)
{
	var rater = StarRating.Items[raterID];
	var value = rater.Value;
	
	for(var i = 1; i <= rater.MaxValue; i++)
	{
		if( value >= i )
			rater.Images[i].src = rater.ImageOn;
		else
			rater.Images[i].src = rater.ImageOff;
	}
}

StarRating.Hover = function(source, raterID)
{
	var rater = StarRating.Items[raterID];
	if( !rater.IsEnabled ) return;
	
	var value = source.getAttribute("value");
	
	for(var i = 1; i <= rater.MaxValue; i++)
	{
		if( value >= i )
			rater.Images[i].src = rater.ImageHover;
		else
			rater.Images[i].src = rater.ImageOff;
	}
}

StarRating.Click = function(source, raterID)
{
	var rater = StarRating.Items[raterID];
	if( !rater.IsEnabled ) 
		return;

	rater.Value = source.getAttribute("value");
	rater.ValueControl.value = rater.Value;
	StarRating.Refresh(source, raterID);
	
	if( rater.AutoLock )
		rater.Enable(false);

}

StarRating.prototype.Initialize = function()
{
	StarRating.InitializeRater(this);
}

StarRating.prototype.Enable = function(enable)
{
	this.Container.disabled = !enable;
	this.IsEnabled = enable;
}

StarRating.prototype.Visible = function(visible)
{
	if( visible )
		this.Container.style.visibility = "Visible";
	else
		this.Container.style.visibility = "Hidden";
}

StarRating.prototype.Render = function()
{
	document.write("<input id=" + this.ValueControlID + " type=hidden>");
	document.write("<span id=\"" + this.ID + "\">");
	
	for(var i = 1; i <= this.MaxValue; i++)
	{

		if( this.Value >= i )
			imageName = this.ImageOn;
		else
			imageName = this.ImageOff;	
		
		var index = document.images.length;
		
		var onclick = " onclick=\"StarRating.Click(this, '" + this.ID + "');\" ";
		var onmouseover = " onmouseover=\"StarRating.Hover(this, '" + this.ID + "');\" ";
		var onmouseout = " onmouseout=\"StarRating.Refresh(this, '" + this.ID + "');\" ";
		var imgID = this.ID + "_img" + i;
		document.write("<img id=\"" + imgID + "\" " + onclick + onmouseover + onmouseout + ">");

		this.Images[i] = document.images[index];

		this.Images[i].src = imageName;
		this.Images[i].setAttribute("imageSrc", imageName);
		this.Images[i].setAttribute("imageHover", this.ImageHover);
		this.Images[i].setAttribute("value", i);
		this.Images[i].border = 0;
	}
	
	document.write("</span>");
	
	if( this.IsInitialized == false )
		this.Initialize();
}
/*
*评价层移动和显示
*/
function RatingMoveIt(id,x,y)
{	var supported = (document.getElementById);
    if (!supported) return;
    var divPath = document.getElementById(id);
    var currPosX = Number(divPath.style.left.replace('px',''));
    var currPosY = Number(divPath.style.top.replace('px',''));
    if (currPosX - 50 > x || currPosY - 60 > y )
    {	
        if (currPosX - 50 > x) currPosX -= 50;
	    if (currPosY - 60 > y ) currPosY -= 60;
	    divPath.style.left = currPosX + "px";
	    divPath.style.top = currPosY + "px";
	    setTimeout("RatingMoveIt('" + id + "'," + x+ "," + y +")",10);
    }
}

function RatingMoveCloseIt(id,y)
{
    var supported = (document.getElementById);
    if (!supported) return;
    var divPath = document.getElementById(id);
    var currPosY = Number(divPath.style.top.replace('px',''));
    if (currPosY +100 < y )
    {
	    currPosY += 100;
	    divPath.style.top = currPosY + "px";
	    setTimeout("RatingMoveCloseIt('" + id + "'," + y +")",10);
    }else
    {
	    divPath.style.display = 'none';
    }
}

function ShowRating(id,event)
{
    event = event || window.event;
    var obj = document.getElementById(id);
    obj.style.position = "absolute";
    obj.style.zIndex = "9999";
 
    obj.style.top = parseInt(event.y  + 15)+"px";
    obj.style.left = parseInt(event.x -120)+"px";
    //obj.className = "vote_tb_f";
    obj.style.display = "block";
    //RatingMoveIt(id,200,200);
}

function  RatingColse(id)
{
    var divPath = document.getElementById(id);
    var y = document.documentElement.scrollHeight
     - parseInt(divPath.style.top.replace('px','')) ;
    RatingMoveCloseIt(id,y);
}

function HasCompleteRating()
{
    var obj = document.getElementById("actionDiv1");
    var valueArr = obj.getElementsByTagName("input");
    var hasComplete = true;
    for(i=0;i< valueArr.length;i++)
    {
        if(valueArr[i].name.indexOf('HiddenSaveValue')>0 &&
        (valueArr[i].value == "" || valueArr[i].value == "0"))
        {
                hasComplete = false;
                break;
        }
    }
    if(!hasComplete)
        document.getElementById("ratingTip").style.display = "block";
    return hasComplete;
}
