function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function rate(whishId, mode) {
    var id = whishId;
 
    var url = "/vote/json_rate/" + whishId + "/" + mode + "/";
    $.getJSON(url, {}, function(response) {

        $("#rate-sum-" + id).html(response.rate_sum);
        $("#rate-voters-" + id).html(response.rate_voters);

        alert(response.state);
    });
}

function setTableStyle(tableObject, noHeader, isFooterTr) 
{
    var topLevel = tableObject.childNodes;
    
    for (var j = 0; j < topLevel.length; j++) {

        if (topLevel[j].nodeName == "TBODY") {

            var nodes;
            nodes = topLevel[j].childNodes;

            for (var i = 0, tr = 0; i < nodes.length; i++) {
                if (nodes[i].nodeName == "TR" && nodes[i].className != 'trDelim') {
                    
                    if (nodes[i].className == "") {

                        if ((tr == 0) && (!noHeader)) {
                            nodes[i].className = 'head';
                        } else {
                            if (isFooterTr == true && tr == nodes.length-1)  {

                                nodes[i].className = 'footer';
                            } else {

                                if (tr % 2) {
                                    nodes[i].className = 'light';
                                } else {
                                    nodes[i].className = 'dark';
                                }
                            }
                        }
                        
                        var tdNodes;
                        tdNodes = nodes[i].childNodes;
                        for (var k=0, td = 0; k<tdNodes.length; k++) {
                    
                            if (tdNodes[k].nodeName == "TD" && tdNodes[k].className == '') {
                    
                                if (tdNodes[k].className == "") {
                                    if (td % 2) {
                                        tdNodes[k].className = 'tdlight';
                                    } else {
                                        tdNodes[k].className = 'tdDark';
                                    }
                                }
                                td++;
                            }
                        }
                    } 
                    tr++;
                }
            }
        }
    }
}

function updateTables(noHeader, isFooterTr, tableClassName) 
{
    all = document.getElementsByTagName("table");
    for (var i = 0; i < all.length; i++) {

        var obj = all[i];
        if ((obj.className == 'colorTable' && !tableClassName) || (obj.className == tableClassName && tableClassName)) {
            setTableStyle(obj, noHeader, isFooterTr);
        } else if (obj.className == 'colorTableWithFooterLine' && !tableClassName) {
            setTableStyle(obj, noHeader, true);
        } else if (obj.className == 'colorTableWithNoHeader' && !tableClassName) {
            setTableStyle(obj, true, isFooterTr);
        } else if (obj.className == 'colorTableWithFooterLineWithNoHeader' && !tableClassName) {
            setTableStyle(obj, true, true);
        }
    }
}




// ..................................................................

function getWindowSize()
{
    var x, y;
    if(self.innerHeight)
    {
        x = self.innerWidth;
        y = self.innerHeight;
    }
    else if(document.documentElement && document.documentElement.clientHeight)
    {
        x = document.documentElement.clientWidth;
        y = document.documentElement.clientHeight;
    }
    else if(document.body)
    {
        x = document.body.clientWidth;
        y = document.body.clientHeight;
    }
    retval = new Object;
    retval.x = x;
    retval.y = y; 

    return retval;
}

// ..................................................................

function openWindow(href, title, scroll, resizable, width, height, position)
{
    if(scroll != "yes")
    {
        scroll = "no";
    }

    if(resizable != "yes")
    {
        resizable = "no";
    }

    if(position != 'center')
    {
        xx = window.open(href, title, 'toolbar=no, scrollbars=' + scroll + ', menubar=no, directories=no, status=no, resizable=' + resizable + ', width=' + width + ', height=' + height);
    }
    else
    {
        this_top = (screen.height - height) / 2;
        this_left = (screen.width - width) / 2;
        xx = window.open(href, title, 'toolbar=no, scrollbars=' + scroll + ', menubar=no, directories=no, status=no, resizable=' + resizable + ', width=' + width + ', height=' + height + ', top=' + this_top + ', left=' + this_left);
    }

    xx.focus();

    return false;
}

// ..................................................................

menu = function(num, action, showSecond)
{
    obj = document.getElementById("menu" + num);
    obj_img = document.getElementById("menuimg" + num);

    if(action == "on")
    {
        obj.className = "menu_item_active";
        obj_img.src = "/images/li-active.gif";
        if(menu_array[num] && showSecond) second(num, 'on');
    }
    else
    {
        obj.className = (num == menu_current) ? "menu_item_current" : "menu_item";
        obj_img.src = (num == menu_current) ? "/images/li-current.gif" : "/images/li.gif";
        if(menu_array[num] && showSecond) second(num, 'off');
    }
}

// ..................................................................

second = function(num, action)
{
    obj = document.getElementById("secondMenu" + num);
    obj_tip = document.getElementById("secondMenuTip" + num);

    obj.style.display = (action == "on") ? 'block' : 'none';
    obj_tip.style.display = (action == "on") ? 'block' : 'none';

    menu(num, action, 0);
}

// ..................................................................

int_second = function(num, action)
{
    obj = document.getElementById("int_secondMenu" + num);
    if(obj)
    {
        obj.style.display = (action == 1) ? 'block' : 'none';
    }
}

// ..................................................................

function getImageY(imgElem)
{
    yPos = eval(imgElem).offsetTop;
    tempEl = eval(imgElem).offsetParent;
    while(tempEl != null)
    {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }

    return yPos;
}

// ..................................................................

function getImageX(imgElem)
{
    xPos = eval(imgElem).offsetLeft;
    tempEl = eval(imgElem).offsetParent;
    while(tempEl != null)
    {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent;
    }

    return xPos;
}

// ..................................................................

function getXY(o)
{
    var c = { x:o.offsetLeft, y:o.offsetTop };
    var p = o.offsetParent;
    while(p)
    {
        c.x += p.offsetLeft;
        c.y += p.offsetTop;
        p = p.offsetParent;
    }

    return c;
}

// ..................................................................

function shopInfo(action)
{
    if(action == "on")
    {
        y = getImageY(document.getElementById("shopInfoCorner"));
        x = getImageX(document.getElementById("shopInfoCorner"));
        obj = document.getElementById("shopInfo");
        obj.style.display = "block";
        obj.style.top = y - obj.offsetHeight + 55 + "px";
        obj.style.left = x - 125 + "px";
    }
    else
    {
        obj.style.display = "none";
    }

    return false;
}

// ..................................................................

