var star_o;
var flag        = [];
var star_tmp    = [];
var tmp         = [];
var rate        = [];

function RateIt(e)
{
    if (!e) e = windows.event;

    var curPos  = null;
    var el      = e.srcElement ? e.srcElement : e.target;
    var root_id = _root_id(el);

    stopB(e);

    if (el.nodeName.toLowerCase() == 'img')
    {
        for(var i = 0, u = 0; i <= el.parentNode.childNodes.length; i++)
        {
            var o = el.parentNode.childNodes[i];
            if (o != null && o.nodeName.toLowerCase() == 'img')
            {
                if (o == el)
                {
                    curPos = u;
                }
                u++;
            }
        }
    }

    res  = document.getElementById(root_id).getAttribute('rel');
    data = '';

    //single -> curPos
    if (curPos != null)
    {
        //ajax
        data = 'v1=' + (parseInt(curPos) + 1);
    }
    //multi
    else if(res != null)
    {
        var tmp = [];
        var ar  = res.split('/');
        u = 0;
        for(var i = 0; i < ar.length; i++)
        {
            v = parseInt(ar[i]);
            if (!isNaN(v))
            {
                tmp[u] = 'v' + (i + 1) + '=' + (parseInt(ar[i]) + 1);
                u++;
            }
        }
        data = tmp.join('&');
    }
    else
    {
        return ;
    }

    var tmp  = root_id.split('.');
    type = tmp[1];
    id   = tmp[2];

    var Aj = new XHConn();
    Aj.connect(
    "/exec/rate.it.php",
    "POST",
    'id=' + id + '&type=' + type + '&' + data,
    function ( res ){
        if (res && res.responseText) {

            root = document.getElementById(root_id);
            root.innerHTML = res.responseText;
            root.onclick   = '';
        }
    });

	elem_count = _('count_vote'+id);

	if (elem_count) {
		phrase = elem_count.innerHTML.substring(0, 8);
		count_vote = parseInt(elem_count.innerHTML.substring(8,elem_count.innerHTML.length))+1;

		elem_count.innerHTML = phrase + ' ' + count_vote;
	}
		

}

function _parent_id( o )
{
    var id;
    if (o != null && o.nodeName.toLowerCase() != 'body')
    {
        if (o.getAttribute('id'))
        {
            return o.getAttribute('id');
        }
        else
        {
            var d = new Date;
            id = 'rate_' + d.getTime();
            o.setAttribute('id', id);

            return id;
        }
    }
    return false;
}

function _root_id( o )
{
    var id;
    if (o != null && o.nodeName.toLowerCase() != 'body')
    {
        if (o.getAttribute('id'))
        {
            id = o.getAttribute('id');
            inf = id.split('.');
            if (inf[0] == 'rate')
            {
                return id;
            }
        }
        return _root_id(o.parentNode);
    }
    return false;
}

function RateEvt(e)
{
    if (!e) e = windows.event;

    var img = e.srcElement ? e.srcElement : e.target;

    if (img.nodeName.toLowerCase() != 'img')
    {
        return;
    }

    var parent    = img.parentNode;
    var parent_id = _parent_id(parent);
    var root_id   = _root_id(parent);

    if (root_id == null || root_id == false)
    {
        return;
    }

    var curPos;
    var parent_id;

    var eImg   = new Array();

    for(var i = 0, u = 0; i <= parent.parentNode.childNodes.length; i++)
    {
        var o = parent.parentNode.childNodes[i];
        if (o != null && o.nodeName.toLowerCase() == 'div')
        {
            if (o == parent)
            {
                parent_id = u;
            }
            u++;
        }
    }

    for(var i = 0, u = 0; i <= parent.childNodes.length; i++)
    {
        var o = parent.childNodes[i];
        if (o != null && o.nodeName.toLowerCase() == 'img')
        {
            eImg[u] = o;
            if (eImg[u] == img)
            {
                curPos = u;
            }
            u++;
        }
    }

    if (e.type == 'mouseover')
    {
        stopB(e);

        if (isNaN(flag[parent_id]) && isNaN(star_tmp[parent_id]))
        {
            star_tmp[parent_id] = new Array();

            for(var i = 0; i < eImg.length; i++)
            {
                star_tmp[parent_id][i] = eImg[i].src;
            }
        }

        if (isNaN(tmp[parent_id]))
        {
            tmp[parent_id] = [];

            for(var i = 0; i < eImg.length; i++)
            {
                tmp[parent_id][i] = eImg[i].src;
            }
        }

        for(var i = 0; i <= curPos; i++)
        {
            eImg[i].src = star_o;
        }
    }

    if (e.type == 'mouseout')
    {
        stopB(e);
        for(var i = 0; i <= curPos; i++)
        {
            eImg[i].src = tmp[parent_id][i];
        }
    }

    if (e.type == 'click')
    {
        stopB(e);
        flag[parent_id] = 1;
        for(var i = 0; i < eImg.length; i++)
        {
            eImg[i].src = star_tmp[parent_id][i];
        }
        for(var i = 0; i <= curPos; i++)
        {
            eImg[i].src       = star_o;
            tmp[parent_id][i] = star_o;
        }

        root  = document.getElementById(root_id);
        value = root.getAttribute('rel');
        
        ar    = [];

        if (value != null)
        {
            ar = value.split('/');
        }

        ar[parent_id] = curPos;
        root.setAttribute('rel', ar.join('/'));
    }
}
