function getArrayWithoutEmptyString(l) {
    var res = [];
    if(typeof l != 'object') return res; // typeof array is object
    var len = l.length;
    for(var i=0; i<len; ++i)
        if(l[i]) res.push(l[i]);
    return res;
}

function getElementClassArray(obj) {
    var classes = obj.className || '';
    return getArrayWithoutEmptyString(classes.split(' '));
}

function addElementClass(obj, class_name) {
    var classes = getElementClassArray(obj);
    var found = false;
    var len = classes.length;
    for(var i=0; i<len; ++i)
        if(classes[i] == class_name)
            found = true;
    if(!found)
        obj.className += ' ' + class_name;
}

function removeElementClass(obj, class_name) {
    if(typeof class_name != 'string' || class_name == '')
        return;
    var classes = getElementClassArray(obj);
    var len = classes.length;
    for(var i=0; i<len; ++i)
        if(classes[i] == class_name)
            classes[i] = '';
    obj.className = getArrayWithoutEmptyString(classes).join(' ');
}

function changePicture(obj, img_name) {
    obj.setAttribute("src", "/common/images/" + img_name);
}

function showTabGames(tab_name) {
    hidePopups();
    var spans = e$('games_list').getElementsByTagName('span');
    var style = "block";
    var games = [];
    var obj = e$(tab_name);
    if(tab_name != "allgames") {
        style = "none";
        games = tab_dict[tab_name];
        removeElementClass(e$('allgames'), 'current');
    } else
        addElementClass(obj, 'current');
    for(var i=0; i<spans.length; i++)
        spans[i].style.display = style;
    for(var i=0; i<games.length; i++)
        e$(games[i]).style.display = "block";
    for(var tab in tab_dict) {
        if(tab == tab_name)
            addElementClass(obj, "current");
        else
            removeElementClass(e$(tab), "current");
    }
}

function clickGame(game_id)
{
    var link = e$(game_id).getElementsByTagName("a")[0];
    var operation = link.getAttribute("onclick");
    if(typeof(operation) == "function")
    {
        operation();
    }
    else
    {
        i = operation.indexOf(';');
        if(i > 0)
            operation = operation.substr(0, i);
        eval(operation);
    }
}
