var KCMenu_ID_PFX = 'kcm_';
var KCMenu_STYLE_PFX = 'kcm-';

//the styles have to be consistent with MenuHandler.pm
function KCMenu_getStyle(menuLoc,styleType) {
    var st = KCMenu_STYLE_PFX + menuLoc + '-' + styleType;
    return(st);
}

function KCMenu_getNormalStyle(menuLoc) {
    return(KCMenu_getStyle(menuLoc,'normal'));
}

function KCMenu_getHoverStyle(menuLoc) {
    return(KCMenu_getStyle(menuLoc,'hover'));
}

function KCMenu_getTextStyle(menuLoc,styleType) {
    var btn = '';
    if (styleType == 'hover') btn = '-btn';
    var st = KCMenu_STYLE_PFX + 'a-' + menuLoc + btn;
    return(st);
}


function KCMenu_getButtonID(menuLoc,id) {
    var btnID = KCMenu_ID_PFX + menuLoc + '_' + id;
    return(btnID);
}

function KCMenu_getTextID(menuLoc,id) {
    var btnID = KCMenu_ID_PFX + 'a_' + menuLoc + '_' + id;
    return(btnID);
}

function KCMenu_changeStyle(elt,initStyle,nextStyle) {
    if (typeof elt == 'undefined' || elt == null) return;

    //the class can be multiple classes separated by spaces
    var classList = elt.className.split(new RegExp(' +'));

    for (i = 0; i <= classList.length; i++) {
        //It's possible that the next style is already set.
        if (classList[i] == nextStyle) return;
    }

    var cn = elt.className;
    var i = cn.indexOf(initStyle);
    if (i >= 0) {
        var re = new RegExp(initStyle);
        var s = cn.replace(re,nextStyle);
        elt.className = s;
    } else if (cn.indexOf(nextStyle) < 0) {
        elt.className += ' ' + nextStyle;
    }
}

function KCMenu_hover(loc,id,txt) {
    var btnID = KCMenu_getButtonID(loc,id);
    var elt = document.getElementById(btnID);

    KCMenu_changeStyle(elt,KCMenu_getNormalStyle(loc),KCMenu_getHoverStyle(loc));
    
    elt = document.getElementById(KCMenu_getTextID(loc,id));
    if (typeof elt == 'undefined' || elt == null) return;
    var n = KCMenu_getTextStyle(loc,'normal');
    var h = KCMenu_getTextStyle(loc,'hover');
    //alert('KCMenu_hover n: ' + n + ', h: ' + h);
    KCMenu_changeStyle(elt,n,h);

    elt.innerHTML = txt;
}

function KCMenu_normal(loc,id,txt) {
    var btnID = KCMenu_getButtonID(loc,id);
    var elt = document.getElementById(btnID);

    KCMenu_changeStyle(elt,KCMenu_getHoverStyle(loc),KCMenu_getNormalStyle(loc));

    elt = document.getElementById(KCMenu_getTextID(loc,id));
    if (typeof elt == 'undefined' || elt == null) return;
    var n = KCMenu_getTextStyle(loc,'normal');
    var h = KCMenu_getTextStyle(loc,'hover');
    KCMenu_changeStyle(elt,h,n);

    elt.innerHTML = txt;
}
