﻿$(document).ready(function(){    
    var query = window.location.search.substring(1);
    if(query.indexOf('state') != -1){
        var params = query.split('&');
        for(var i = 0; i < params.length; i++){
            var key = params[i].split('=')[0];
            var value = params[i].split('=')[1];
            if(key == 'state'){
                var stateVars = value.split(':');  
                var menuState = new MenuState(stateVars[0],stateVars[1],stateVars[2]); 
                var pageNum = parseInt(menuState.pageNumber);
                var activePage = $('.pagination-link')[pageNum - 1];
                activePage.className += ' selected-page';
                showPage(pageNum);
                $('#sortBy').val(menuState.sortBy);
                showSelectedList(menuState.sortBy);
                if(menuState.sortBy == 'category'){                    
                    var parentId = $('#module-by-category-' + menuState.selectedModule).parent()[0].id;
                    var category = parentId.replace('-module-list','');
                    expandCategory(category);
                }
            }
        }               
    } else {
        var selected = $(".selected-module-title").attr('class');
        var page_selected = false;
        if (selected != null) {
            $.each(selected.split(" "), function(index, value) {
                if (value.indexOf('page-') != -1) {
                    var pageNumber = value.replace('page-', '');
                    $('.pagination-link')[pageNumber - 1].className += ' selected-page';
                    showPage(pageNumber);
                    $('sortBy').val('number');
                    page_selected = true;
                }
            });
        }
        if (!page_selected) {
            var pageNumber = '1';
            $('.pagination-link')[pageNumber - 1].className += ' selected-page';
            showPage(pageNumber);
            $('sortBy').val('number');
        }
    }
    
    if($('.pagination-link').length == 1){
        $('.pagination-container').hide();
    }
    
//    if(isIE6()){
//        $('.category-module-list').addClass('category-module-list-ie6');
//        $('.category-module-list-ie6').removeClass('category-module-list');
//    }
});

function showPage(pageNumber){
    $('.list-title').hide();
    $('.page-' + pageNumber).show();
    $('.pagination-link').removeClass('selected-page');
    $('#pagination-link-' + pageNumber).addClass('selected-page');

    return false;
}

function showSelectedList(value){
    hideAllLists();
    var divId = 'sorted-by-' + value;
    $('#' + divId).show();
    showPage(1);
    if($('.pagination-link').length == 1 || value == 'category'){
        $('.pagination-container').hide();
    } else {
        $('.pagination-container').show();        
    }
    
    if(value != 'category'){
        collapseAllCategories();
    }
}

function hideAllLists(){
    $('.module-list').hide();
}

function showModule(moduleNum,link){
    var address = document.location.href;
    if(address.indexOf('/modules') != -1){
        $('.module-container').hide();
        $('#module-' + moduleNum).show();
        highlightSelectedModule(moduleNum);
        $('#ctl00_ContentPlaceHolder1_moduleH1').html('Module Detail:');
        return false;
    } else {
        var menuState = getMenuState(moduleNum);
        link.href += '?' + menuState.getQueryString();
        return true;
    }
}

function highlightSelectedModule(moduleId){
    $('.list-title').removeClass('selected-module-title');
    $('#module-by-title-' + moduleId).addClass('selected-module-title');
    $('#module-by-number-' + moduleId).addClass('selected-module-title');
    $('#module-by-category-' + moduleId).addClass('selected-module-title');
    
//    $('.active-icon').hide();
//    $('.inactive-icon').show();
//    $('#by-category-inactive-' + moduleId).hide();
    $('#by-category-active-' + moduleId).show();
//    $('#by-title-inactive-' + moduleId).hide();
    $('#by-title-active-' + moduleId).show();
//    $('#by-number-inactive-' + moduleId).hide();
    $('#by-number-active-' + moduleId).show();
} 


function expandCategory(category){
    if($('.' + category + '-expanded').length > 0){
        return collapseCategory(category);
    } else {
//        var icon = $('#' + category + '-category-icon')[0];
//        icon.src = '/images/common/green-arrow-btn.gif';
//        icon.className = category + '-expanded';
        $('#' + category + '-module-list').show();
        $('#' + category + '-module-list').addClass(category + '-expanded');
        $('#' + category + '-module-list div').show();        
        return false;
    }
}

function collapseCategory(category){
//    var icon = $('#' + category + '-category-icon')[0];
//    if(icon){
//        icon.src = '/images/common/green-arrow-btn.gif';
//        icon.className = 'unexpanded-icon';
        $('#' + category + '-module-list').hide();
        $('#' + category + '-module-list div').hide();
        $('#' + category + '-module-list').removeClass(category + '-expanded');
//        $('#' + category + '-category-icon').ifixpng();
//    }
   return false;
}

function collapseAllCategories(){
    collapseCategory('general');
    collapseCategory('pregnancy');
    collapseCategory('infant');
    collapseCategory('toddler');
    collapseCategory('childhood');
    collapseCategory('adolescent');
}

function getMenuState(moduleNum){    
    var selectedPage = $('.selected-page .page-link')[0].id;
    selectedPage = selectedPage.replace('page-','');
    
    return new MenuState($('#sortBy').val(), selectedPage, moduleNum);
}

function MenuState(sortBy,pageNum,selectedModuleId){
    this.sortBy = sortBy,
    this.pageNumber = pageNum,
    this.selectedModule = selectedModuleId,
    this.getQueryString = function () {
        return 'state=' + this.sortBy + ':' + this.pageNumber + ':' + this.selectedModule;
    }
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
