//Script to handle Left Navigation Menu in all the screen based on the URL
//To change settings refer config.js
var NavMenu = {
    containerId : null,
    curUrl : null,
    pageLink : null,
    pageHash : null,
    submenuDefault : null,
    //config for menu from config.js
    links : CONFIG.NAV_CONFIG.PAGE_LIST,
    checkau :null,
    dashboard_access:null,
    bulkauctions_access:null,
    duplicateauctions_access:null,
    reports_access:null,
    actionreq_access:null,
    createauction_access:null,
    savedauction_access:null,
    shippinginfo_access:null,
    sellerkpi_access:null,
    GenNavigation : function() {
        var navHtml = '';var linkList = this.links;
        this.checkau=this.LinkValidation(linkList);
        for(var i =0;i<linkList.length;i++){
            if(((this.pageLink==linkList[i].linkUrl) ||(this.LinkCheck(this.pageLink,linkList[i].sublinks)))){
                if(linkList[i].sublinks.length > 0){
                    navHtml += '<div class="navigationLinkSel" >';
                }
                else{
                    navHtml += '<div class="navigationLink">';
                }
                navHtml += '<div class="selectedLabel"  >'+ linkList[i].displayName + '</div>';
                if(linkList[i].sublinks.length > 0 && ((this.pageLink==linkList[i].linkUrl) ||(this.LinkCheck(this.pageLink,linkList[i].sublinks)))){
                    navHtml +='<label class="toggleMenuMinus" ></label>';
                }
                navHtml += '</div>';
            }
            else{
                if(linkList[i].sublinks.length > 0){
                    navHtml += '<div onclick="NavMenu.NavSlide(this);" class="navigationLink">'+
                        '<div class="leftNavLabel"  onmouseout="this.className=\'leftNavLabel\';" onmouseover="this.className=\'leftNavLabelHover\';">'+ linkList[i].displayName + '</div>';
                    navHtml +='<label class="toggleMenuPlus" ></label>';
                }
                else{
                    navHtml += '<div class="navigationLink" onclick="javascript:window.location.href=\''+ linkList[i].linkUrl+'\'" >'+
                        '<div class="leftNavLabel"  onmouseout="this.className=\'leftNavLabel\';" onmouseover="this.className=\'leftNavLabelHover\';">'+ linkList[i].displayName + '</div>';
                }
                navHtml += '</div>';
            }

            if (linkList[i].sublinks.length > 0){
                if(((this.pageLink == linkList[i].linkUrl) || (this.LinkCheck(this.pageLink, linkList[i].sublinks)))){
                    navHtml += '<div class="navigationSelectedContainer"  >';
                }
                else{
                    navHtml += '<div class="navigationSelectedContainer" style="display:none">';
                }
                for (var j = 0; j < linkList[i].sublinks.length; j++){
                    //if page is loaded with no hash value attached in url. We show the default hash
                    if(j!=0){
                        navHtml +="";
                    }
                    if (linkList[i].sublinks[j].hashValue == linkList[i].defaulthash){
                        //Set the submenu default hash value
                        //to handle case of no hash then deafult screen shown
                        this.submenuDefault = linkList[i].defaulthash;
                        if (this.pageHash == undefined || this.pageHash == "" || this.submenuDefault == this.pageHash){
                            //set default hash as the page hash value so that it can be sent out tho
                            //handler when the screen loads without any hash value in the url
                            this.pageHash = linkList[i].defaulthash;
                            if (linkList[i].sublinks[j].linkValue == this.pageLink && this.pageHash.length==0){
                                navHtml += '<div class="selected" id="link'+ linkList[i].sublinks[j].hashValue +'">'+
                                    '<div class="leftNavMenubullet"></div><div ><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }else if(linkList[i].sublinks[j].linkValue != this.pageLink && this.pageHash.length==0){
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].sublinks[j].linkValue +'\')"  >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                            else if(linkList[i].linkUrl != this.pageLink && this.pageHash.length!=0){
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].linkUrl +'\',\''+linkList[i].sublinks[j].hashValue+'\')"  >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }else if(linkList[i].linkUrl == this.pageLink && this.pageHash.length!=0){
                                navHtml += '<div class="selected" id="link'+ linkList[i].sublinks[j].hashValue +'">'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                        }
                        else{
                            if(linkList[i].sublinks[j].linkValue.length!=0){
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].sublinks[j].hashValue +'\',\''+ linkList[i].sublinks[j].linkValue +'\')"  >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                            else{
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].linkUrl +'\',\''+ linkList[i].sublinks[j].hashValue +'\')" >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                        }
                    }
                    else{
                        if(linkList[i].sublinks[j].hashValue == this.pageHash){
                            navHtml += '<div class="selected" id="link'+ linkList[i].sublinks[j].hashValue +'"   onclick="NavMenu.SubMenuLink(\''+ linkList[i].linkUrl +'\',\''+ linkList[i].sublinks[j].hashValue +'\')">'+
                                '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                '</div>';
                        }
                        else{
                            if(linkList[i].linkUrl == this.pageLink){
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].linkUrl +'\',\''+ linkList[i].sublinks[j].hashValue +'\')" >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                            else{
                                navHtml += '<div id="link'+ linkList[i].sublinks[j].hashValue +'"  onclick="NavMenu.SubMenuLink(\''+ linkList[i].linkUrl +'\',\''+ linkList[i].sublinks[j].hashValue +'\')"  >'+
                                    '<div class="leftNavMenubullet"></div><div><label class="leftNav" onmouseout="this.className=\'leftNav\';" onmouseover="this.className=\'leftNavHover\';">'+ linkList[i].sublinks[j].displayName +'</label></div>'+
                                    '</div>';
                            }
                        }
                    }
                }
                navHtml += '</div>';
            }
        }
        return navHtml;
    },
    NavSlide : function(obj)
    {
        obj.className="navlinkContainer "+ obj.className;
        if($(obj).find("label").hasClass('toggleMenuPlus'))
        {
            jQuery.each($('.navigationSelectedContainer'), function() {

                if(this.style.display=='block')
                {
                    $(this).slideUp("slow");
                    $(this).prev(".navigationLink").find("label").removeClass('toggleMenuMinus');
                    $(this).prev(".navigationLink").find("label").addClass('toggleMenuPlus');
                    $(this).prev(".navigationLink").removeClass('navlinkContainer');
                }
				
            });
            $(obj).find("label").removeClass('toggleMenuPlus')
            $(obj).find("label").addClass('toggleMenuMinus');
            $(obj).next('.navigationSelectedContainer').slideDown("slow");
        }
        else
        {
            $(obj).find("label").removeClass('toggleMenuMinus')
            $(obj).addClass(".navigationLink").removeClass('navlinkContainer');
            $(obj).find("label").addClass('toggleMenuPlus');
            $(obj).next('.navigationSelectedContainer').slideUp("slow");
        }
    },
    GetCurScreen : function() {
        if (window.location.src != undefined && window.location.src != null) {
            this.curUrl = window.location.src.split("#")[0];
        }
        else {
            this.curUrl = window.location.href.split("#")[0];
        }
        if (this.curUrl != null) {
            var urlFrags = this.curUrl.split("/");
            this.pageLink = urlFrags[urlFrags.length - 1];
            urlFrags=this.pageLink.split("?");
            this.pageLink = urlFrags[0];
        }
        //check for hash value. If not present Set the default value
        if(window.location.hash){
            this.pageHash = window.location.href.split("#")[1];
        }else{
            var hval = this.getMyDefault(this.pageLink);
            if(hval !=""){
                window.location.hash =hval ;
                this.pageHash = window.location.href.split("#")[1];    
            }else{
                this.pageHash = "";
            }
        }
    },
    getMyDefault : function(pageLink){
        for(var i=0;i<this.links.length;i++){
            if(this.links[i].linkUrl == pageLink){
                return this.links[i].defaulthash;
            }
        }
        return "";
    },
    InitNavigation : function(container,afterInit) {
        this.containerId = container;
        this.GetCurScreen();
        var instance=this;
        Invoker.GetAccessResource(function(data){
            for(var i=0;i<data.result.length;i++){
                if(data.result[i].rule=="dashboard")
                    instance.dashboard_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="bulkauctions")
                    instance.bulkauctions_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="duplicateauctions")
                    instance.duplicateauctions_access =parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="reports")
                    instance.reports_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="actionreq")
                    instance.actionreq_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="createauction")
                    instance.createauction_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="savedauction")
                    instance.savedauction_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="shippinginfo")
                    instance.shippinginfo_access = parseInt(data.result[i].access) ;
                else if(data.result[i].rule=="sellerkpi")
                    instance.sellerkpi_access = parseInt(data.result[i].access) ;
            }
           document.getElementById(instance.containerId).innerHTML = instance.GenNavigation();
            if(typeof(afterInit)=="function"){
                afterInit();
            }
        });

            
    },
    //redraw Navigation on link click in sub menu
    RedrawMenu : function() {
        this.GetCurScreen();
        document.getElementById(this.containerId).innerHTML = this.GenNavigation();
    },
    //handler method to handle menu clicks in page including this script.
    //The method has to be defined by the developer including this script
    //the definition is as SubMenuHandler(hashval)
    SubMenuHandler : null,
    //method handles call to submenu handler defined in the page
    CallHandler :function(callbackValue) {
        if(typeof(this.SubMenuHandler=="function")){
            if (callbackValue != undefined && callbackValue != null)
                this.SubMenuHandler(callbackValue);
            else {
                var val = "READY";
                this.SubMenuHandler(val);

            }
        }else{
            alert("Callback SubMenuHandler is not defined.");
        }
    },
    SubMenuLink : function(urlVal,hashVal) {
        //if no hashVal is given. The link is like create auction and bulkauction
        if(urlVal==""){
            window.location.href = hashVal;
        }
        //when the link is like a report type
        else{
            if(urlVal == this.pageLink){
                if(hashVal!=this.pageHash){
                    window.location.hash = hashVal;
                    this.RedrawMenu();
                    this.CallHandler(hashVal);
                }else{
                    this.CallHandler(hashVal);
                }
            }else{
                if(hashVal){window.location.href = urlVal+"#"+hashVal;
                }
                else{window.location.href = urlVal;}
            }
        }
    },
    LinkCheck : function(pagelink, sub_links) {
        var flaglink = false;
        for (var x = 0; x < sub_links.length; x++)
        {
            if (sub_links[x].linkValue == pagelink)
            {
                flaglink = true;
                break;
            }
        }
        return flaglink;
    },

    LinkValidation : function(testlinkList)
    {
        var somevalue = false;
        for (var i = 0; i < testlinkList.length; i++)
        {
            if (testlinkList[i].linkUrl == this.pageLink && testlinkList[i].defaulthash.length == 0 && testlinkList[i].sublinks.length == 0)
            {
                somevalue = true;
            }
            else if (testlinkList[i].linkUrl != this.pageLink && testlinkList[i].defaulthash.length == 0 && testlinkList[i].sublinks.length != 0)
            {
                somevalue = this.LinkCheck(this.pageLink, testlinkList[i].sublinks);
            }
            else if (testlinkList[i].linkUrl == this.pageLink && testlinkList[i].defaulthash.length == 0 && testlinkList[i].sublinks.length != 0)
            {
                somevalue = true;
            }
            else if (testlinkList[i].linkUrl == this.pageLink && testlinkList[i].defaulthash.length != 0 && testlinkList[i].sublinks.length != 0)
            {
                for (var j = 0; j < testlinkList[i].sublinks.length; j++)
                {
                    if (this.pageHash == undefined || this.pageHash == "" || testlinkList[i].sublinks[j].hashValue == this.pageHash)
                    {
                        somevalue = true;
                        break;
                    }
                }
            }
            if (somevalue == true)
            {
                break;
            }
        }
        return somevalue;
    }

   
};
