var starManagers = new Array();

function CreateStarManager(stars, callback, context)
{        
    var newStars = Array();
    for(i=0;i<stars.length;i++)
    {
        newStars[i] = document.getElementById(stars[i]);
    }
    if (FindStarManager(stars[0])==null)
    {
        manager = new StarManager(newStars,callback,context);
        starManagers[starManagers.length] = manager;        
    }
}

function ClearStars(container)
{
   manager = FindStarManagerByContainer(container);
   if (null==manager)
   {
        return;
   }
   manager.ClearStars();

}

function LightStar(star)
{
   manager = FindStarManager(star);
   if (null==manager)
   {
        alert("No star manager found for "+star);
   }
   manager.LightStar(star);
}

function UnlightStar(star)
{
   manager = FindStarManager(star);
   if (null==manager)
   {
        alert("No star manager found for "+star);
   }
   manager.UnlightStar(star);
}

function ClickStar(star)
{
   manager = FindStarManager(star);
   if (null==manager)
   {
        alert("No star manager found for "+star);
   }
   manager.ClickStar(star);
   return false;
}
function FindStarManager(star)
{
    for(i=0;i<starManagers.length;i++)
    {
        for(x=0;x<starManagers[i].stars.length;x++)
        {
            //alert(starManagers[i].stars[x].id);
            if (starManagers[i].stars[x]==star)
                return starManagers[i];
        }
    }
    return null;
}

function FindStarManagerByContainer(container)
{
    for(i=0;i<starManagers.length;i++)
    {
        for(x=0;x<starManagers[i].stars.length;x++)
        {
            //alert(starManagers[i].stars[x].id);
            if (starManagers[i].stars[x].parentNode==container)
                return starManagers[i];
        }
    }
    return null;
}

var StarManager = function(stars, callback, context)
{
    this.stars = stars;
    this.context = context;
    this.CaptureDefault();
    this.callback = callback;
    this.litStars = new Array();
}

StarManager.prototype.stars = Array();
StarManager.prototype.defaults = Array();

StarManager.prototype.CaptureDefault = function()
{
    for(i=0;i<this.stars.length;i++)
    {
        this.stars[i].defaultSrc = this.stars[i].src;
    }
}

StarManager.prototype.LightStar = function(star)
{
    idx = this.IndexOfStar(star);
    for (i=0;i<=idx;i++)
    {
        
        this.stars[i].src = '/images/rating_star_lit.jpg';
        this.stars[i].isLit=true;
    }
}

StarManager.prototype.IndexOfStar = function(star)
{
    for(i=0;i<this.stars.length;i++)
    {
        if (star==this.stars[i])
            return i;
    }
    return -1;
}

StarManager.prototype.UnlightStar = function(star)
{    
    star.src = '/images/rating_star_unlit.jpg';
    star.isLit = false;
}

StarManager.prototype.ClearStars = function()
{		 	
    for(i=0;i<this.stars.length;i++)
    {        
        this.stars[i].src = this.stars[i].defaultSrc;
    }
}

StarManager.prototype.ClickStar = function(star)
{	
    this.blinkStar(star);
    return false;
}

StarManager.prototype.blinkStars = Array();

StarManager.prototype.blinkStar = function(star)
{
    star.iterations = 0;
  this.callwrapper = new CCallWrapper(this, 100, 'toggleStar2', star);
  CCallWrapper.asyncExecute(this.callwrapper);

}

StarManager.prototype.toggleStar2 = function(star)
{
    //alert("called  "+star);
    //var star = blinkStars[index];
    star.iterations++;
    if(star.isOn)
    {
        this.UnlightStar(star);
        //star.src='/images/rating_star_unlit.jpg';
        star.isOn=false;
    }
    else
    {
        this.LightStar(star);
        //star.src='/images/rating_star_lit.jpg';
        star.isOn=true;
    }
    if (star.iterations<11)
    {
        this.callwrapper = new CCallWrapper(this, 100, 'toggleStar2', star);
        CCallWrapper.asyncExecute(this.callwrapper);
    }
    else
    {
        this.callback(star, this.context, this.IndexOfStar(star)+1);
    }
}