﻿function loadHeaders() {
    var data = { "smartid": $('#usercred').data('sid'), "userid": $('#usercred').data('uid') };
    $.ajax({
        url: "/Services/DefaultService.svc/MAPHeader",
        data: JSON.stringify(data),
        success: function(msg)
        { onloadHeaders(msg); }
    });
}
function onloadHeaders(msg) {

    $('h3.sd-listhead-1').addClass('ui-state-default');
    for (var i = 0; i < msg.d.length; i++) {
        var mapid = msg.d[i].MAPID;
        var header = msg.d[i].Header;

        $("div.header_" + mapid + ' h3').append("<a class='head_expand'>" + header + "</a><a id='more_" + mapid + "' class='more' >More...</a>");
        $("li.header_" + mapid+' a').text(header);
        $("div.header_" + mapid).css('display', '');
        $("#pageList_" + mapid).empty();
        $("#pageList_" + mapid).append("<li class='loading'></li>");
        $a = $('.sd-accordion').find('sd-ac-' + mapid);
        if ($a.length < 1) {
            $h = $('<h3></h3>');
            $a = ('<a href=\'#\' class=\'sd-ac-' + mapid + '\'>' + header + '</a>');
            $h.append($a);
            $('.sd-accordion').append($h);
            $d = $('<div style=\'padding-left:15px; padding-right:15px;overflow-x:hidden!important;\'></div>');
            $('.sd-accordion').append($d);
            $n = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button sd-new-' + mapid + '\'>New</button>');
            $o = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button sd-open-' + mapid + '\'>Open</button>');
            $o.click(function() {
                var c = $(this).attr('class').split(' ');
                for (var i = 0; i < c.length; i++) {
                    if (c[i].match('^sd-open-')) {
                        {
                            var map = c[i].substr(c[i].length - 1);
                            var a = $('.sd-pagediv-' + map + ' ul li.ui-state-active a');
                            var id = a.data('id');
                            var toe = a.data('toe');
                            var txt = a.data('txt');
                            openListItem(toe, id, txt);
                            return false;
                        }
                    }
                }
            });
            $d.append($n);
            $d.append($o);
            var $nh = $n.clone(true);
            $nh.text('New '+header);
            $('.sd-ac-0').parent().next('div').append($nh);
            //$('.sd-accordion').append('<div><button class=\'fg-button ui-corners-all ui-state-default\' style=\'width:95%\'>New</button></div>');
        }
    }

    $oh = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button\'>Open Item</button>');
    $oh.click(function() {
        var a = $('#homeList').find('li.ui-state-active a');
        if (a.length > 0) {
            var id = a.data('id');
            var toe = a.data('toe');
            var txt = a.data('txt');
            openListItem(toe, id, txt);
        }
        return false;
    });
    $('.sd-ac-0').parent().next('div').append('<hr/>');
    $('.sd-ac-0').parent().next('div').append($oh);

    $op = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button\'>Options</button>');
    $op.click(function () {
        loadOptions();
        return false;
    });
    $('.sd-ac-0').parent().next('div').append('<hr/>');
    $('.sd-ac-0').parent().next('div').append($op);

    $earlier = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button\'>Earlier...</button>');
    $later = $('<button class=\'fg-button ui-corner-all ui-state-default sd-nav-button\'>Later...</button>');

    $('.sd-ac-5').parent().next('div').append('<hr/>');
    $('.sd-ac-5').parent().next('div').append($earlier);
    $('.sd-ac-5').parent().next('div').append($later);


    $later.bind('click', function() {
        var f = $('.sd-pagediv-5').data('finish');
        var dt = new Date($('.sd-pagediv-5').data('finish'));
        dt.setDate(dt.getDate() + 7);
        $(this).parent('h3').next().find('ul').prepend('<li class=\'loading\'></li>');
        loadSmartList(5, dt.toDateString(), undefined);
        return false;
    });
    $earlier.bind('click', function() {
    var dt = new Date($('.sd-pagediv-5').data('start'));
    dt.setDate(dt.getDate() - 7);
    $(this).parent('h3').next().find('ul').prepend('<li class=\'loading\'></li>');
    loadSmartList(5, dt.toDateString(), undefined);
    });
    
    var os = $('.sd-nav-div').offset();
    $('.sd-nav-div').css({ 'height': (($(window).height()) - (os.top + 10)) + 'px' });
    $('.sd-content-div').css({ 'height': (($(window).height()) - (os.top)) + 'px' });
    $('.sd-content-div').css({ 'width': (($(window).width()) - (205)) + 'px' });
    $(window).resize(function() {
    $('.sd-accordion').accordion('option', 'fillSpace', false);
        $('.sd-nav-div').css({ 'height': (($(window).height()) - (os.top + 10)) + 'px' });
        $('.sd-content-div').css({ 'height': (($(window).height()) - (os.top)) + 'px' });
        $('.sd-content-div').css({ 'width': (($(window).width()) - (205)) + 'px' });
        $('.sd-accordion').accordion('option', 'fillSpace', true);
    });
    $('.sd-accordion').accordion({ fillSpace: true, 'active':1 });
    $('.sd-accordion').bind('accordionchange', function(event, ui) {

        var ac = $('.ui-accordion').find('.ui-accordion-header.ui-state-active a');
        if (ac.length > 0) {
            if (ac.hasClass('sd-ac-0')) loadList('#homeList');
            else if (ac.hasClass('sd-ac-1')) loadList('#contactList');
            else if (ac.hasClass('sd-ac-2')) loadList('#accountList');
            else if (ac.hasClass('sd-ac-3')) loadList('#opportunityList');
            else if (ac.hasClass('sd-ac-5')) loadList('#appointmentList');
            else if (ac.hasClass('sd-ac-6')) loadList('#taskList');
            else if (ac.hasClass('sd-ac-7')) loadList('#supportList');
            else if (ac.hasClass('sd-ac-calendar')) loadList('#diaryPanel');
        }
    });
    $(".head_expand").click(function() {
        $(this).parent().next(".pageList").toggle('blind', 500);
    });
    $(".more").click(function() {
        {
            var id = $(this).attr('id');
            var map = parseInt(id.substring(5));
            loadSmartList(map, undefined, true)
        }
    });
    $(".go_0").click(function() { loadList('#homeList'); return false; });
    $(".go_1").click(function() { loadList('#contactList'); return false; });
    $(".go_2").click(function() { loadList('#accountList'); return false; });
    $(".go_3").click(function() { loadList('#opportunityList'); return false; });
    $(".go_7").click(function() { loadList('#supportList'); return false; });
    $(".go_5").click(function() { loadList('#appointmentList'); return false; });
    $(".go_Calendar").click(function() { loadList('#diaryPanel'); return false; });
    $(".go_6").click(function() { loadList('#taskList'); return false; });
    
    //$(".sd-ac-0").click(function() { loadList('#homeList'); });
    //$(".sd-ac-1").click(function() { loadList('#contactList'); });
    //$(".sd-ac-2").click(function() { loadList('#accountList'); });
    //$(".sd-ac-3").click(function() { loadList('#opportunityList'); });
    //$(".sd-ac-7").click(function() { loadList('#supportList'); });
    //$(".sd-ac-5").click(function() { loadList('#appointmentList'); });
    //$(".sd-ac-calendar").click(function() { loadList('#diaryPanel'); });
    //$(".sd-ac-6").click(function() { loadList('#taskList'); });
            
    
    $(".sd-new-1").click(function() {newEntity(1,undefined);});
    $(".sd-new-2").click(function() { newEntity(2, undefined); });
    $(".sd-new-3").click(function() { newEntity(3, undefined); });
    $(".sd-new-4").click(function() { newEntity(4, undefined); });
    $(".sd-new-5").click(function() { newEntity(5, undefined); });
    $(".sd-new-6").click(function() { newEntity(6, undefined); });
    $(".sd-new-7").click(function() { newEntity(7, undefined); });

//    $(".sd-open-1").click(function() {
//        var a = $('.sd-pagediv-1 li.ui-state-active a');
//        var id = a.data('id');
//        var toe = a.data('toe');
//        var txt = a.data('txt');
//        openListItem(toe, id, txt);
//        return false;
//    });
    
  //   {newEntity(1,undefined);});
    
    $(".pagemast").corner('top round 8px');
    loadEntityMapping();
    loadSelects();
    loadFlags();
    loadAppointmentCategory();
    loadBusyState();
    loadCategory();
    
    for (var j = 0; j < msg.d.length; j++) {
        var MAP = msg.d[j].MAPID;
        //loadSmartList('home', MAP, 'pageList_' + MAP)
        loadSmartList(MAP, undefined, true)
        //loadListContent(MAP, 'null');
    }
    setTimeout('firstLoadCalendar();', 500);
}
function entityCount(id) {
   // var ent = smartValue(id) != null ? smartValue(id) : 0;
   // if (ent == 0) {
        return 15;
   // }
   // else {
  //      return 100;
 //   }
    }
    function removeListContent(mapid) {
        var cList = $("#pageList_" + mapid);

        var count = entityCount(mapid);

        var counter = 0;

        while (cList.children().length > count) {

            $(cList).find('li:last').remove();
            counter++;
            if (counter == count) {
                break;
            }
        }
    }
function loadListContent(mapid, gb) {
    var service = "/Services/DefaultService.svc/";

    switch (mapid) {
        case 1: service += "ContactsView";
            break;
        case 2: service += "AccountsView";
            break;
        case 3: service += "OpportunitiesView";
            break;
        case 7: service += "SupportsView";
            break;
        case 6: service += "TasksView";
            break;
        case 5: service += "AppointmentsView";
            break;
        default:
            return false;
    }
    var count = 0;

    var cList = $("#pageList_" + mapid);

    //if ($(cList).length) {
    count = $(cList).children('li:not(.loading)').length;
        if (count < 0) {
            count = 0;
        } 
        else if (count > 1) {
        $(cList).find('li:last').after("<li class='loading'>");
        }

    var data = { "smartid": $('#usercred').data('sid'), "count": entityCount(mapid), "skip": count }; // "userid": $('#usercred').data('uid') };
    if (mapid == '1') {
        data = { "smartid": $('#usercred').data('sid'), "count": entityCount(mapid), "skip": count, "gb": gb };
    }
    $.ajax({
        url: service,
        data: JSON.stringify(data),
        success: function(msg)
        { onloadListContent(msg, mapid); }
    })
}
function onloadListContent(msg, mapid) {

    var cList = $("#pageList_" + mapid);

    $(cList).find('li').removeClass('last-child');

    for (var i = 0; i < msg.d.length; i++) {
        var flagStatus = msg.d[i].FlagStatus == null ? "" : "<img class='flagImage' src='/images/flags/flag" + msg.d[i].FlagStatus + ".png' />";
        var cid;
        var appendStr = $('');
        var txt = '';

        switch (mapid) {
            case 1:
            case 2:
                cid = msg.d[i].ContactServiceId;
                txt = msg.d[i].FileAs;
                appendStr = $("<li class='sd-listItem'><a id='dli" + cid + "'>" + flagStatus + txt + "</a></li>");
                break;
            case 3:
            case 6:
            case 7:
                cid = msg.d[i].ContactServiceId;
                txt = msg.d[i].Subject;
                appendStr = $("<li class='sd-listItem'><a id='dli" + cid + "'>" + flagStatus + txt + "</a></li>");
                break;
            case 5:
                cid = msg.d[i].AppointmentId;
                txt = jsonSdDateTime(msg.d[i].Start) + " - " + msg.d[i].Subject;
                appendStr = $("<li class='sd-listItem'><a id='dli" + cid + "'>" + flagStatus + txt + "</a></li>");
                break;
            default:
                return false;
        }
        if ($(cList).children().length > 1) {
            $(cList).find('li:last').after(appendStr);
        }
        else {
            $(cList).append(appendStr);
        }
        appendStr.data('cid', cid);
        appendStr.data('toe', mapid);
        appendStr.data('txt', txt);

        appendStr.bind('dblclick', function() {
            openListItem($(this).data('toe'), $(this).data('cid'), $(this).data('txt'));
            return false;
        });
        
        


    }
    $(cList).find('li').remove('[class=loading]');
    $(cList).find('li:last').addClass('last-child');

//    var mylist = $(cList);
//    var listitems = mylist.children('li').get();
//    listitems.sort(function(a, b) {
//        var compA = $(a).text().toUpperCase();
//        var compB = $(b).text().toUpperCase();
//        return (compA < compB) ? -1 : (compA > compB) ? 1 : 0;
//    })
//    $.each(listitems, function(idx, itm) { mylist.append(itm); });
}


function loadEntityMapping() {

var data = { "userid": $('#usercred').data('uid') };
    $.ajax({
        url: "/Services/DefaultService.svc/EntityMappingAndAccess",
        data: JSON.stringify(data),
        success: function(msg)
        { onLoadEntityMapping(msg); }
    });
}
function onLoadEntityMapping(msg) {

    for (var i = 0; i < msg.d.length; i++) {

        var d = msg.d[i];

        var c = d.ControlAccess;
        var mapid = d.MAPID;

        if ((mapid >= 11265 && mapid <= 11283) || (mapid >= 12265 && mapid <= 12283)) {
            $('#phoneSelector').data(mapid.toString(), '');
        }
        if (c != null) {
            $('#accessmap').data(mapid.toString(), c.toString());
        }
        $('#entitymap').data(mapid.toString(), d.UIShortName);
        var mapDict = { 'json': d.json, 'field': d.field };
        $('body').data(mapid.toString(), { 'json': d.json, 'field': d.field });
    }
    loadMapDictionary();
}
function loadMapDictionary() {
    $.ajaxSetup({
        type: 'POST',
        contentType: 'application/x-www-form-urlencoded',
        dataType: 'xml',
        error: AjaxFailed
    });
    $.ajax({
        type: 'GET',
        url: '/ajaxcontent/sd.mapdictionary.xml',
        dateType: 'xml',
        success: function (mapids) {
            setAjaxDefault();
            $(mapids).find('mapid').each(function() {
            var map = $(this).find('id').text();
            var json = $(this).find('type').text();
            var field = $(this).find('col').text();
            var table = $(this).find('tbl').text();
                $('body').data(map, { 'json': json, 'field': field, 'table':table });
            });
        }
    });
}


