function getStarTable(e) 
{
    if (!e) e = window.event;
    var src = (e.srcElement ? e.srcElement : e.target);

    if (src) 
    {
        if (src.tagName == "TABLE")
            return src;

        if (src.parentNode && src.parentNode.tagName == "TABLE")
            return src.parentNode;

        if (src.parentNode.parentNode && src.parentNode.parentNode.tagName == "TABLE")
            return src.parentNode.parentNode;

        if (src.parentNode.parentNode.parentNode && src.parentNode.parentNode.parentNode.tagName == "TABLE")
            return src.parentNode.parentNode.parentNode;
    }
        
    return null;
}

function getRated(e, starTable)
{
    if (starTable == null)
        starTable = getStarTable(e);

    return document.getElementById(starTable.getAttribute("rateid"));
}

function getEnabled(e)
{
    return getStarTable(e).getAttribute("rateenabled") != "false";
}

function getImage(starTable)
{
    if (starTable && starTable.getAttribute("rateimg"))
        return starTable.getAttribute("rateimg");
        
    return "star";
}

function showRate(starTable, val) 
{
    var fval = 0;
    
    if (val && val != "")
        fval = parseFloat(val.replace(",", "."));
    
    var sval = "0";
    
    if ((fval < 1) && (fval > 0))
        sval = "05";
    else if (fval == 1.0)
        sval = "1";
    else if ((fval > 1) && (fval < 2))
        sval = "15";
    else if (fval == 2.0)
        sval = "2";
    else if ((fval > 2) && (fval < 3))
        sval = "25";
    else if (fval == 3.0)
        sval = "3";
    else if ((fval > 3) && (fval < 4))
        sval = "35";
    else if (fval == 4.0)
        sval = "4";
    else if ((fval > 4) && (fval < 5))
        sval = "45";
    else if (fval == 5.0)
        sval = "5";

	starTable.style.backgroundImage="url(/images/" + getImage(starTable) + sval+".gif)";
	
	if (!starTable.title)
	    starTable.title = fval.toString();
}

function changeRate(e, val)
{  
    if (!getEnabled(e))
        return;
        
    if (typeof(rate_change) == "function")
        rate_change(getStarTable(e));
        
    showRate(getStarTable(e), val);
}

function rate(e, val)
{  
    if (!getEnabled(e))
        return;

	var oldval = getRated(e).value;
	if (oldval == val)
		val = "0";
	
	getRated(e).value = val;
	displayRate(e);
}

function displayRate(e, starTable)
{
    if (typeof(rate_display) == "function")
        rate_display(getStarTable(e));
        
    resetRate(e, starTable);
}

function resetRate(e, starTable)
{  
    if (starTable == null)
        starTable = getStarTable(e);
        
	showRate(starTable, getRated(e, starTable).value);
}

function valRated(source, arguments) 
{
    var c = getRated(null, source);
    arguments.IsValid = (c.value != "0");
}