function do_search(submit) {

  var searchText = document.getElementById('query');
  var searchForm = document.getElementById('search_form');

  if (searchText.value == "") {
    searchText.focus();
    alert('Please enter search text');
    if (submit)
      return false;
  } else {
    var searchValue = searchText.value.replace(/[^A-Za-z0-9 +-]/g, "");
    searchValue = searchText.value.replace(/[ ]/g, "-");
    document.location = searchForm.action + searchValue.toLowerCase() + '/';
    return false;
  }

}

function SetImageWidth() {
  var ImageMaxWidth = 700;

  screenshotImage = document.getElementById("ScreenshotImage");
 
  if (screenshotImage) {
      if (screenshotImage.width > ImageMaxWidth) {
        screenshotImage.width = ImageMaxWidth;
      }
  }
}

/* top menu code */

var menu_speed = 8;
var menu_initialized = false;
var menu_current = new Array();
var menu_hide_timeout = 0;
var menu_anim_timeout = 0;

var menu_anim = new Array();
function menu_anim_step(){
    menu_anim_timeout = window.setTimeout("menu_anim_step();", 10);
    for (var i=0; i<menu_anim.length; i++)
    {
        if (menu_anim[i]==null)continue;
        menu_anim[i].height += menu_anim[i].step;
        var h = menu_anim[i].height;
        var n = menu_anim[i].node;
        if (menu_anim[i].step<0)
        {
            if (menu_anim[i].height<=menu_anim[i].limit){
                h = menu_anim[i].limit;
                menu_anim[i] = null;
            }
        }
        else {
            if (menu_anim[i].height>=menu_anim[i].limit){
                h = menu_anim[i].limit;
                menu_anim[i] = null;
            }
        }
        n.style.height = h+"px";
        if (h==0)
        {
            n.style.height = "1px";
            n.style.visibility = 'hidden';
        }
        else {
            n.style.visibility = 'visible';
        }
    }
}
menu_anim_step();

function menu_render(id, items){
    var div = document.createElement("div");
    var html = "<table celpadding='0' cellspacing='0' border='0' width='100%'>";
    for (var j=0; j<items.items.length; j++)
    {
        if (items.items[j]['sub']){
            html += '<tr><td onmouseover="this.className=\'over\'; menu_over(this, \''+id+':'+j+'\');" onmouseout="this.className=\'\'; menu_out(this, \''+id+':'+j+'\');" onclick="menu_click(\''+id+':'+j+'\');">&nbsp;&nbsp;&nbsp;'+items.items[j].title+'</td></tr>';
            items.items[j].node = menu_render(id+':'+j, items.items[j]['sub']);
            items.items[j].parent = div;
        }
        else {
            html += '<tr><td onmouseover="this.className=\'over\'; menu_over(this, \''+id+':'+j+'\');" onmouseout="this.className=\'\'; menu_out(this, \''+id+':'+j+'\');" onclick="menu_click(\''+id+':'+j+'\');">&nbsp;&nbsp;&nbsp;'+items.items[j].title+'</td></tr>';
        }
    }
    html += '</table>';
    if (items.className)
    {
        div.className = "menu "+items.className;
    }
    else {
        div.className = "menu";
    }
    div.style.position = 'absolute';
    div.style.overflow = 'hidden';
    div.style.left = '250px';
    div.style.top = '150px';
    div.style.visibility = 'hidden';
    if (id.indexOf(':')==-1)
        div.style.height = '1px';
    div.innerHTML = html;
    document.body.appendChild(div);
    return div;
}

function menu_init(){
    if (menu_initialized)return;
    menu_initialized = true;

    if (!menu_data)return;

    for (var i in menu_data)
    {
        menu_data[i].node = menu_render(i, menu_data[i]);
    }
}

function menu_node_pos(n){
    if (n.offsetParent)
    {
        var pos = menu_node_pos(n.offsetParent);
        pos.x+=n.offsetLeft;
        pos.y+=n.offsetTop;
        return pos;
    }
    return {x:n.offsetLeft, y:n.offsetTop};
}

function menu_click(id){
    var cur = menu_data;
    var tmp = id.split(/:/);
    var path = new Array();
    for (var i=0;i<tmp.length;i++)
    {
        if (!cur||!cur[tmp[i]]){
            break;
        }
        path[i] = cur[tmp[i]];
        if (!cur[tmp[i]].items)
        {
            if (cur[tmp[i]].sub)
                cur = cur[tmp[i]].sub.items;
            else
                break;
        }
        else
            cur = cur[tmp[i]].items;
    }
    if (path.length==0)return;
    var item = path[path.length-1];
    if (item.url){
        window.location = item.url;
    }
}

function menu_over(n, id){
    if (!menu_initialized)return;

    var menu_item = null;
    var cur = menu_data;
    var tmp = id.split(/:/);
    var path = new Array();
    for (var i=0;i<tmp.length;i++)
    {
        if (!cur||!cur[tmp[i]]){
            break;
        }
        path[i] = cur[tmp[i]];
        cur = cur[tmp[i]].items;
    }

    window.clearTimeout(menu_hide_timeout);

    for (var i=path.length; i<menu_current.length; i++ )
    {
        if (menu_current[i]==null)break;
        if (menu_current[i].node){
            if (i==0)
                menu_hide_first(menu_current[i]);
            else
                menu_current[i].node.style.visibility = 'hidden';
        }
        menu_current[i] = null;
    }

    var i = path.length-1;
    while (i>=0)
    {
        if (menu_current[i])
        {
            if (menu_current[i]==path[i])break;
            if (menu_current[i].node){
                if (i==0)
                    menu_hide_first(menu_current[i]);
                else
                    menu_current[i].node.style.visibility = 'hidden';
            }
            menu_current[i] = null;
        }
        i--;
    }
    i++;

    if (i==path.length)return;
    while (i<path.length)
    {
        if (i==path.length-1 && n && path[i].node)
        {
            var pos = menu_node_pos(n);
            if (path[i].offsetLeft)
            {
                pos.x+=path[i].offsetLeft;
            }
            if (i==0)
            {
                path[i].node.style.left = pos.x+'px';
                //path[i].node.style.top = pos.y+n.offsetHeight+2+'px'; - original value !!!
                path[i].node.style.top = '198px';
            }
            else {
                path[i].node.style.left = pos.x+n.offsetWidth-1+'px';
                path[i].node.style.top = pos.y+'px';
            }
        }
        if (path[i].node){
            if (i==0)
                menu_show_first(path[i]);
            else
                path[i].node.style.visibility = 'visible';
        }
        menu_current[i] = path[i];
        i++;
    }
}

function menu_out(n, id){
    if (!menu_initialized)return;
    window.clearTimeout(menu_hide_timeout);
    menu_hide_timeout = window.setTimeout("menu_hide();", 300);
}

function menu_hide(){
    for (var i=0; i<menu_current.length; i++ )
    {
        if (menu_current[i]==null)break;
        if (menu_current[i].node)
        {
            if (i==0)
                menu_hide_first(menu_current[i]);
            else
                menu_current[i].node.style.visibility = 'hidden';
        }
        menu_current[i] = null;
    }
}

function menu_hide_first(n){
    var anim = null;
    var pos = menu_anim.length;
    for (var i=0; i<menu_anim.length; i++)
    {
        if (!menu_anim[i])pos = i;
        if (menu_anim[i]&&menu_anim[i].node==n.node)
        {
            anim = menu_anim[i];
            break;
        }
    }
    if (anim==null)
    {
        anim = {node: n.node};
        menu_anim[pos] = anim;
    }
    anim.height = n.node.offsetHeight;
    n.node.style.height = anim.height+"px";
    anim.limit = 0;
    anim.step = -menu_speed;
}
function menu_show_first(n){
    var anim = null;
    var pos = menu_anim.length;
    for (var i=0; i<menu_anim.length; i++)
    {
        if (!menu_anim[i])pos = i;
        if (menu_anim[i]&&menu_anim[i].node==n.node)
        {
            anim = menu_anim[i];
            break;
        }
    }
    if (anim==null)
    {
        anim = {node: n.node};
        menu_anim[pos] = anim;
    }
    anim.height = n.node.offsetHeight;
    n.node.style.height = anim.height+"px";
    anim.limit = n.node.scrollHeight+10;
    anim.step = menu_speed;
}

