var menuElems = new Array();
function generateCategoryMenu(response, menuElemId, toggleMenuElemeId){
    var responseText = response.responseText.trim();
    if(responseText != ""){
        try{
            var parentCategory = YAHOO.lang.JSON.parse(responseText).parentCategory;
            var categories = parentCategory.childCategories;
            var parentCategoryId = parentCategory.categoryId;

            var menuElem = $(menuElemId + parentCategoryId);
            var menuBodyElem = YAHOO.util.Dom.getFirstChild(menuElem);

            for(var i = 0; i < categories.length; i++){
                var cat = categories[i];
                var hrefElem = document.createElement("a");
                hrefElem.setAttribute("href", cat.categoryURL);
                hrefElem.innerHTML = cat.name;

                menuBodyElem.appendChild(hrefElem);
            }

            var oMenu = new YAHOO.widget.ContextMenu(menuElemId + parentCategoryId,
                    { constraintoviewport: false,
                        hidedelay:500,
                        context: [toggleMenuElemeId + parentCategoryId, "tl", "bl"]});
            oMenu.render();

            YAHOO.util.Dom.setStyle(menuElem, "display", "block");
            oMenu.show();

            menuElems[parentCategoryId + ""] = oMenu;
        }catch(error){}
    }
}

function loadChildCategories(categoryId, menuElemId, toggleMenuElemeId){
    var menuObj = menuElems[categoryId + ""];
    if(isDefined(menuObj)){
        YAHOO.util.Dom.setStyle(menuElemId + categoryId, "display", "block");
        menuObj.show();
    }else{
        YAHOO.util.Connect.asyncRequest("GET",
                "/d/categoriesLookup.jsp?cid=" + categoryId,
                {success:function (data){generateCategoryMenu(data, menuElemId, toggleMenuElemeId)},cache:true});
    }
}