var c1c_active_menu = null;
function c1c_doc_onmousedown(ev)
{
    var src = null;
    if (ev.srcElement)
        src = ev.srcElement;
    else if (ev.target)
        src = ev.target;
      while (src && src.parentNode) {
        if (src.c1_submenu || c1c_getattr(src, 'c1_submenu_id'))
            return;
        src = src.parentNode;
    }
     popdown_and_unselect(c1c_active_menu);
    c1c_active_menu = null;
}
function c1c_onmousedown(ev, item)
{
    c1c_onmouseover(ev, item);
}
function c1c_onmouseover(ev, item)
{
    var src = null;
    if (ev.srcElement)
        src = ev.srcElement;
    else if (ev.target)
        src = ev.target;
    if (src != item && !c1c_object_contains(item, src))
        return;
    c1c_select_item(item);
}
function c1c_onmouseout(ev, item)
{
    var tgt;
    if (ev.relatedTarget)
        tgt = ev.relatedTarget;
    else if (ev.toElement)
        tgt = ev.toElement;
    if (!tgt || (tgt != item.c1_submenu && !c1c_object_contains(item.c1_submenu, tgt))) {
        c1c_unselect_item(item);
    }
}

function c1c_select_item(item)
{
    var menu = item.parentNode;
    if (menu.c1_sel_item == item)
        return;
    if (menu.c1_sel_item)
        c1c_unselect_item(menu.c1_sel_item);
    if (menu.c1_menu_item && menu.c1_menu_item != item)
        c1c_popdown_item_menu(menu.c1_menu_item)
    var st = c1c_getattr(item, 'c1_status');
    if (st)
        window.status = st;
    if (!menu.c1_parent_item) {
        if (c1c_active_menu && c1c_active_menu != menu) {
            popdown_and_unselect(c1c_active_menu);
            c1c_active_menu = null;
        }
    }
    else {
           if (menu.c1_parent_item.parentNode.c1_sel_item != menu.c1_parent_item)
            c1c_select_item(menu.c1_parent_item);
    }
    c1c_popup_item_menu(item);
    c1c_hilite_item(item, true);
    menu.c1_sel_item = item;
    if (c1c_active_menu == null)
        c1c_active_menu = menu;
}
function c1c_unselect_item(item)
{
    if (item.c1_submenu) {
        if (window.setTimeout)
            window.setTimeout('c1c_popdown_item_menu_delayed("' + item.id + '")', 500);
        else
            c1c_popdown_item_menu(item);
    }
    c1c_hilite_item(item, false);
    if (c1c_getattr(item, 'c1_status'))
        window.status = '';
    if (item.parentNode.c1_sel_item == item)
        item.parentNode.c1_sel_item = null;
    if (c1c_active_menu == item.parentNode && !c1c_active_menu.c1_menu_item)
        c1c_active_menu = null;
}
function c1c_popup_item_menu(item)
{
    var submenu_id = c1c_getattr(item, 'c1_submenu_id');
    if (submenu_id) {
        var submenu = document.getElementById(submenu_id);
        if (submenu) {
            c1c_show_submenu(item, submenu);
            item.c1_submenu = submenu;
            submenu.c1_parent_item = item;
            item.parentNode.c1_menu_item = item;
        }
    }
}
function c1c_popdown_item_menu_delayed(id)
{
    var item = document.getElementById(id);
    if (item && item.parentNode.c1_sel_item != item)
        c1c_popdown_item_menu(item);
}
function c1c_popdown_item_menu(item)
{
    var submenu = item.c1_submenu;
    if (submenu) {
           if (submenu.c1_menu_item)
            c1c_popdown_item_menu(submenu.c1_menu_item);
        if (submenu.c1_sel_item)
            c1c_unselect_item(submenu.c1_sel_item);
        c1c_hide_submenu(submenu);
        submenu.c1_parent_item = null;
        item.c1_submenu = null;
        item.parentNode.c1_menu_item = null;
           if (c1c_active_menu == item.parentNode && !c1c_active_menu.c1_sel_item)
            c1c_active_menu = null;
    }
}
function popdown_and_unselect(menu)
{
    if (menu) {
        if (menu.c1_menu_item)
            c1c_popdown_item_menu(menu.c1_menu_item);
        if (menu.c1_sel_item)
            c1c_unselect_item(menu.c1_sel_item);
    }
}
function c1c_hilite_item(item, on)
{
    if (on) {
            c1c_add_styles(item, c1c_getattr(item.parentNode, 'c1_sel_item_styles'));
        c1c_add_styles(item, c1c_getattr(item, 'c1_sel_item_styles'));
          if (!item.c1_img && c1c_getattr(item, 'c1_img_src') && c1c_getattr(item, 'c1_img_sel_src')) {
            item.c1_img = new Image;
            item.c1_img.src = c1c_getattr(item, 'c1_img_src');
            item.c1_img_sel = new Image;
            item.c1_img_sel.src = c1c_getattr(item, 'c1_img_sel_src');
        }
        if (item.c1_img) {
            if (item.childNodes)
                item.childNodes[0].childNodes[0].src = item.c1_img_sel.src;
            else {
                item.getElementsByTagName('IMG')[0].src = item.c1_img_sel.src;
            }
        }
    }
    else {
          c1c_remove_styles(item, c1c_getattr(item, 'c1_sel_item_styles'));
        c1c_remove_styles(item, c1c_getattr(item.parentNode, 'c1_sel_item_styles'));
        c1c_add_styles(item, c1c_getattr(item.parentNode, 'c1_item_styles'));
        c1c_add_styles(item, c1c_getattr(item, 'c1_item_styles'));
          if (item.c1_img) {
            if (item.childNodes)
                item.childNodes[0].childNodes[0].src = item.c1_img.src;
            else
                item.getElementsByTagName('IMG')[0].src = item.c1_img.src;
        }
    }
}
function c1c_show_submenu(item, submenu)
{
    submenu.style.visibility = 'visible';
    var tx, ty;
    if (c1c_getattr(item.parentNode, 'c1_horz')) {
        tx = c1c_offset_x(item);
        ty = c1c_offset_y(item) + item.offsetHeight;
    }
    else {
        tx = c1c_offset_x(item) + item.offsetWidth;
        ty = c1c_offset_y(item);
    }
    submenu.style.left = tx;
    submenu.style.top = ty;
}
function c1c_hide_submenu(submenu)
{
    submenu.style.visibility = 'hidden';
}

function c1c_getattr(obj, att)
{
    if (obj.getAttribute)
        return obj.getAttribute(att);
    if (obj.attributes) {
        var a = obj.attributes[att];
        if (a) return a.value;
    } else
        return obj[att];
}
function c1c_object_contains(obj, elem)
{
    if (!obj)
        return null;
    else if (obj.contains)
        return obj.contains(elem);
    else
        return _c1c_object_contains(obj, elem);
}
function _c1c_object_contains(obj, elem)
{
    if (!obj)
        return null;
    var i;
    if (!obj.childNodes)
        return false;
    for (i = 0; i < obj.childNodes.length; ++i) {
        var child = obj.childNodes[i];
        if (elem == child)
            return true;
        else if (_c1c_object_contains(child, elem))
            return true;
    }
    return false;
}
function c1c_offset_x(o)
{
    if (typeof(o) != 'object' || o == null)
        return 0;
    else
        return o.offsetLeft + c1c_offset_x(o.offsetParent);
}
function c1c_offset_y(o)
{
    if (typeof(o) != 'object' || o == null)
        return 0;
    else
        return o.offsetTop + c1c_offset_y(o.offsetParent);
}
function c1c_add_styles(el, style_str)
{
    if (!style_str)
        return;
    var kvs = style_str.split(';');
    for (var i = 0; i < kvs.length; ++i) {
        var kv = kvs[i].split(':');
        if (kv.length == 2) {
            if (kv[0] == 'className')
                el.className = kv[1];
            else
                el.style[kv[0]] = kv[1];
        }
    }
}
function c1c_remove_styles(el, style_str)
{
    if (!style_str)
        return;
    var kvs = style_str.split(';');
    for (var i = 0; i < kvs.length; ++i) {
        var kv = kvs[i].split(':');
        if (kv.length == 2) {
            if (kv[0] == 'className')
                el.className = '';
            else
                el.style[kv[0]] = '';
        }
    }
}