css_ulclass = "ratingback";
css_liclass = "rating";
css_lionclass = "rating on";
css_liwidth = "17";

function show_rating(ratingval, ulid)
{
    ulel = get_ulel(ulid);
    if(ulel)
    {
        dateline = new Date();
        if ((datelines_ratings[ulel.id] == 0) || (dateline.getSeconds() + 60*dateline.getMinutes() + 24*dateline.getHours() - datelines_ratings[ulel.id] > 2))
        {
            if ((ratingval == 0) && default_ratings[ulel.id])
            {
                ratingval = default_ratings[ulel.id];
            }
            cnt = 0;
            for (numli in ulel.childNodes)
            {
                liel = ulel.childNodes[numli];
                if (liel.className)
                {
                    cnt = cnt + 1;
                    if (cnt <= ratingval)
                    {
                        liel.className = css_lionclass;
                    }
                    else
                    {
                        liel.className = css_liclass;
                    }
                }
            }
        }
    }
    return false;
}
function save_rating(ratingval, ulid)
{
    ulel = get_ulel(ulid);
    if(ulel)
    {
        dateline = new Date();
        default_ratings[ulel.id] = ratingval;
        datelines_ratings[ulel.id] = 0;
        show_rating(ratingval, ulid);
        datelines_ratings[ulel.id] = dateline.getSeconds() + 60*dateline.getMinutes() + 24*dateline.getHours();
        selel = document.getElementById(stars_to_selects[ulel.id]);
        if (selel)
        {
            selel.selectedIndex = ratingval;
        }
        if (formids_from_ul[ulel.id])
        {
            formel = document.getElementById(formids_from_ul[ulel.id]);
            if (formel)
            {
                formel.submit();
            }
        }
    }
    return false;
}
function get_ulel(val)
{
    if (val.nodeName == "LI")
    {
        val = val.parentNode;
    }
    
    if (val.nodeName == "UL")
    {
        return val;
    }
    
    if (document.getElementById(val))
    {
        return document.getElementById(val);
    }
    return false;
}
function get_sel_value(val, selel)
{
    if (selel)
    {
        for (numopt=0; numopt<selel.options.length; numopt++)
        {
            if (selel.options[numopt].value == val)
            {
                return selel.options[numopt].text;
            }
        }
    }
    return false;
}
function set_default_value(ratid)
{
    if (stars_to_selects[ratid])
    {
        selel = document.getElementById(stars_to_selects[ratid]);
        default_ratings[ratid] = selel.options[selel.selectedIndex].value;
        return show_rating(default_ratings[ratid], ratid);
    }
    return false;
}
function create_li_for_rating(data, ulel)
{
    liel = document.createElement("li");
    liel.className = css_liclass;
    liel.onmouseover = function() {
        return show_rating(data, this);
    }
    liel.onclick = function() {
        return save_rating(data, this);
    }
    litext = document.createTextNode('\u00a0');
    liel.appendChild(litext);
    ulel.appendChild(liel);
}
function create_ul_element(selid, divid, uild)
{
    selel = document.getElementById(selid);
    divel = document.getElementById(divid);
    if (selel && divel)
    {
        ulel = document.createElement("ul");
        ulel.className = css_ulclass;
        ulel.id = uild;
        ulel.onmouseout = function() {
            return show_rating('0', this);
        }

        if (selel)
        {
            cntli = 0;
            for (numopt=0; numopt<selel.options.length; numopt++)
            {
                if(selel.options[numopt].value > 0)
                {
                    cntli = cntli + 1;
                    create_li_for_rating(selel.options[numopt].value, ulel);
                }
            }
            ulel.style.width = (cntli * css_liwidth) + "px";
        }
        divel.appendChild(ulel);
    }
    return false;
}
function create_stars_rating(wojs_div, jsdiv, selid, formid)
{
    dateline = new Date();
    ulid = "tempul16022010"+Math.floor(Math.random()*1000000)+dateline.getMilliseconds()+dateline.getSeconds() + dateline.getMinutes() + dateline.getHours();
    document.getElementById(wojs_div).style.display = "none";
    document.getElementById(jsdiv).style.display = "block";
    create_ul_element (selid, jsdiv, ulid);
    stars_to_selects[ulid] = selid;
    formids_from_ul[ulid] = formid;
    datelines_ratings[ulid] = 0;

    set_default_value(ulid);
    
    ulel = document.createElement("ul");
    ulel.className = css_ulclass;
    ulel.style.display = "inline";
    ulel.style.fontSize = "1px";
    ulel.style.width = "1px";
    ulel.style.height = "1px";
    ulel.style.padding = "0px";
    ulel.style.margin = "0px";
    ulel.id = "temp16022010"+Math.floor(Math.random()*1000000)+dateline.getMilliseconds()+dateline.getSeconds() + dateline.getMinutes() + dateline.getHours();
    liel = document.createElement("li");
    liel.className = css_lionclass;
    liel.style.display = "inline";
    liel.style.width = "1px";
    liel.style.height = "1px";
    liel.style.padding = "0px";
    liel.style.margin = "0px";
    ulel.appendChild(liel);
    
    document.getElementById(jsdiv).appendChild(ulel);

    return false;
}

default_ratings = new Array();
stars_to_selects = new Array();
formids_from_ul = new Array();
datelines_ratings = new Array();
