﻿// FoldierRating JavaScript File

/////////////////////////////////////////////////////////////////////////////////////////////////////////
// (c) 2007-2008 foldier inc.
// This software is property of foldier inc. Use or reporduction without permision is prohibited  
// Created by : Michele Ursino
/////////////////////////////////////////////////////////////////////////////////////////////////////////

// JScript File

var g_animatingRate = null;

// Constructor function
function FoldierRating( targetElement_id, id, rating, styleClass )
{
    this.m_rating = rating;
    this.enabled = true;
    this.animate = false;
    this.clickEnabled = true;
    this.animationID = 0;
    if (this.m_rating < 0.0)
		this.m_rating = 0.0;
	var width = parseInt(rating / 5.0 * 80.0);
	if ( width < 0.0 )
		width = 0;
	this.m_onRatingCall = null;
	
	if ( !styleClass )
		styleClass = "goldstars";

	this.m_divName = "FoldierRating_"+id;
	this.m_div = document.getElementById(this.m_divName);
	if ( this.m_div == null )
	{
		// alert('building rating DIV GOLD WIDTH='+width);
		this.m_div = document.createElement("span");
		this.m_div.id = this.m_divName;
		this.m_div.className = "foldierRating";
		addEvent( this.m_div, 'click', FoldierRating.prototype.Click, this );
		// this.m_div.onclick = this.Click;
	
		this.m_grayStars = document.createElement("span");
		this.m_grayStars.id = this.m_divName+"_graystars";
		this.m_grayStars.className = "graystars";

		this.m_goldStars = document.createElement("span");
		this.m_goldStars.id = this.m_divName+"_goldstars";
		this.m_goldStars.className = styleClass;
		this.m_goldStars.style.width = ""+width + "px";
	
		this.m_div.appendChild(this.m_grayStars);
		this.m_div.appendChild(this.m_goldStars);

		document.getElementById(targetElement_id).appendChild(this.m_div);
	
		///fadeIn(this.m_div, 0);
	}

}


// Set the external function callback for rating change
FoldierRating.prototype.OnRating = function(callFunction)
{
    this.m_onRatingCall = callFunction;
    this.clickEnabled = true;
    this.enabled = true;
}

FoldierRating.prototype.Click = function(e)
{
    if (!currentEventObject.clickEnabled)
    {
        return;
    }
    var clientX = -1;
    if (!e) e = window.event;

    if (e.offsetX)
        clientX = e.offsetX;
    else if (e.layerX)
        clientX = e.layerX;

    currentEventObject.SetRating(FoldierRating.prototype.GetRatingFromPos(clientX));
}

function renderRating(targetWidth)
{
    g_animatingRate.m_goldStars.style.width = "" + g_animatingRate.w + "px";
    g_animatingRate.w += 4;
    if (g_animatingRate.w >= targetWidth)
        clearInterval(g_animatingRate.animationID);
}

FoldierRating.prototype.SetRating = function(rating)
{
    this.m_rating = rating;
    if (this.m_rating < 0)
        this.m_rating = 0;

    var width = parseInt(rating / 5.0 * 80.0);
    if (this.animate)
    {
        this.w = 0;
        g_animatingRate = this;
        this.animationID = setInterval(function() { renderRating(width); }, 4);
    }
    else
        this.m_goldStars.style.width = "" + width + "px";

    if (this.m_onRatingCall && this.enabled)
        this.m_onRatingCall(rating); // This is a callback to an external fuction 

}

FoldierRating.prototype.GetRatingFromPos = function( position ) 
{
	return parseInt(position / 80.0 * 5.0+0.9);
}

FoldierRating.prototype.GetRating = function()
{
    return this.m_rating;
}

FoldierRating.prototype.enableRatingCallback = function(flag)
{
    this.enabled = flag;
}
FoldierRating.prototype.enableClick = function(flag)
{
    this.clickEnabled = flag;
    if ( !this.clickEnabled )
        this.m_goldStars.className = "goldstars";

}
FoldierRating.prototype.enableAnimate = function(flag)
{
    this.animate = flag;
}



