function RatingControl()
{
  
    this.ImagePathEmpty="/UIComparioControls/Rating/emptyStar.png";
    this.ImagePathFilled="/UIComparioControls/Rating/filledStar.png";
    this.ImagePathSaved="/UIComparioControls/Rating/savedStar.png";
    
    this.AlternateText="Click to rate";
    this.ImageClass="image";
    
    this.NbImage= 5;
    this.Items= $H();
    this.Render= function(container,callbackSelectedAction)
    {
        this.Items.set(container, callbackSelectedAction);
        var res= "<div><input type=\"hidden\" value=\"0\" />";
        for( i =0 ;i< this.NbImage; i++)
        {
            res+= "<img src=\"" + this.ImagePathEmpty + "\" alt=\""  + this.AlternateText +  "\" class=\"" + this.ImageClass + "\">";
        }
        res+="</div>";
        var cnt = $(container);
        Element.update(cnt,res);
        Event.observe(cnt, 'mouseout', SDKRating.Skip);
        cnt.select('img').each(function (anImage)
        {
            Event.observe( anImage, 'click',SDKRating.Select);
        });
        cnt.select('img').each(function (anImage)
        {
            Event.observe( anImage, 'mouseover',SDKRating.Selecting);
        });
    }
    this.Selecting= function (event)
    {
        var selectedImage= Event.element(event);
        var divNear=selectedImage.up('div');
        var selected= true;
        divNear.select('img').each(function (anImage)
        {
            anImage.src= (selected ? SDKRating.ImagePathFilled:   SDKRating.ImagePathEmpty);
            if (anImage==selectedImage) selected=false;
        });
    }
    this.Select= function (event)
    {
        var selectedImage= Event.element(event);
        var divNear=selectedImage.up('div');
        var selected= true;
        var ratValue=0;
        divNear.select('img').each(function (anImage,index)
        {
            anImage.src= (selected ? SDKRating.ImagePathSaved:   SDKRating.ImagePathEmpty);
            if (anImage==selectedImage) {selected=false;ratValue=index+1;} 
        });
        divNear.select('img').each(function (anImage)
        {
            Element.stopObserving(anImage, 'click', SDKRating.Select);
            Element.stopObserving(anImage, 'mouseover', SDKRating.Selecting);
        });
        divNear.down('input').value=ratValue;
        var container= divNear.up('div').id;
        Element.stopObserving($(container), 'mouseout', SDKRating.Skip);
        Element.setOpacity($(container), 0.5);
        $(container).writeAttribute("selection", "done");

        var cb = SDKRating.Items.get(container);
        if (cb!=null)
        {
            cb(ratValue,container);
        }
        selected= true;
        divNear.select('img').each(function (anImage)
        {
            anImage.src= (selected ? SDKRating.ImagePathFilled:   SDKRating.ImagePathEmpty);
            if (anImage==selectedImage) selected=false;
        });
        
    }
    this.Skip = function(event) {

        var divNear = Event.element(event);
        
        if (!Element.hasClassName('RatingContainer')) {
            divNear = divNear.up('div.RatingContainer');
        }
        if (divNear.getAttribute("selection") == "done")
            return;
        
        divNear.select('img').each(function(anImage, index) {
            anImage.src = SDKRating.ImagePathEmpty;

        });

    }
    this.Value= function (container)
    {
        var cnt = $(container);
        var hid = cnt.down('input');
        return hid.value;
    }
    this.DefaultOnSelectMethod=function (value, id )
    {
        alert(value + " : " + id  );
    }
}
 var SDKRating= new RatingControl();

