﻿(function ($) {

    $.widget("ui.smartForm", {

        _init: function () {
            var self = this;
            self._computeOptions();
            self._loadForm();
        },

        setNew: function () {
            var self = this;
            if (self.options.entity == 'contact' || self.options.entity == 'account') {
                self._editFullName();
            }
        },

        addContactItem: function (contact) {
            if (contact != undefined) {
                if (self.options.entity == 'appointment') {
                    var datStr = self.element.find('input.sd-id-15215').val() + ' ' + self.element.find('input.sd-id-15216').val() + ':00';
                    var sDat = new Date(datStr);
                    saveAddContactToAppointment(self.element.data('aid'), contact.id, undefined, true, sDat);
                    $ul.append(sdContactListItem($id, $fn, $mb, true));
                }
            }
        },

        switchDiv: function () {
            var self = this;
            self.element.find('.switchDiv:not(.firstDiv)').each(function () {
                $(this).css('display', 'none');
            });
            self.element.find('.firstDiv').each(function () {
                $(this).css('display', '');
            });
            var map = self._entityPanelMapid(self.options.entity)[0];
            self.element.find('.fg-button').each(function () {
                if ($(this).hasClass('ui-state-active'))
                    $(this).removeClass('ui-state-active');
            });
            if (!self.element.find('.fg-button.sd-id-' + map).hasClass('ui-active'))
                self.element.find('.fg-button.sd-id-' + map).addClass('ui-state-active');

            if (self.element.hasClass('sd-history-active'))
                self.element.removeClass('sd-history-active');

            if (self.element.hasClass('sd-contacts-active'))
                self.element.removeClass('sd-contacts-active');

            self.element.find('#' + self.options.entity + '-tab3').empty();
            if (self.options.entity == 'account')
                self.element.find('#' + self.options.entity + '-tab2').empty();
            self.element.find('.sd-' + self.options.entity + '-tabs').tabs('select', 0);
        },

        _loadForm: function () {

            var self = this;
            var options = self.options;
            var $mapids;
            var $menuHtml = '';
            var $innerPanelHtml = '';
            var tabs = '<div class=\'sd-' + options.entity + '-tabs\'>';
            tabs += '<ul><li><a href=\'#' + options.entity + '-tab1\'><span>Details</span></a></li>'; // Details Tab

            if (options.entity == 'account' || options.entity == 'appointment')
                tabs += '<li><a href=\'#' + options.entity + '-tab2\'><span>Contacts</span></a></li>'; // Contacts Tab
            else
                tabs += '<li><a href=\'#' + options.entity + '-tab2\'><span>New Item</span></a></li>'; // New Item Tab

            tabs += '<li><a href=\'#' + options.entity + '-tab3\'><span>History</span></a></li>'; // History Tab
            tabs += '</ul>';
            tabs += '<div id=\'' + options.entity + '-tab1\' class=\'sd-tab-panel\'></div>';
            tabs += '<div id=\'' + options.entity + '-tab2\'class=\'sd-tab-list\'></div>';
            tabs += '<div id=\'' + options.entity + '-tab3\'class=\'sd-tab-list\'></div>';

            self.element.append(tabs)

            $menuHtml = '<div class=\"fg-buttonset fg-buttonset-single\" style=\'font-size:65%; padding:5px 0px; overflow:hidden\'>';

            $mapids = self._entityPanelMapid(options.entity);

            $menuHtml += self._loadMenu($mapids);
            $menuHtml += '</div>';

            self.element.find('#' + options.entity + '-tab1').append($menuHtml);

            if (options.entity == 'account') {

            }
            else if (options.entity == 'appointment') {
            }
            else {
                var $newItemMapids = self._newItemPanelMapid(options.entity);
                $newItemHtml = '';

                $newItemHtml += self._loadNewItemPanel($newItemMapids);

                self.element.find('#' + options.entity + '-tab2').append($newItemHtml);

                self.element.find('#' + options.entity + '-tab2').find('.fg-button').each(function () {

                    var map = $(this).attr('id').substr(10);
                    if (map == '5') {
                        $(this).bind('click', function () {
                            clearBookingDialog();
                            $('body').append('<div class=\'sd-new-appointment\'></div>');
                            var $newFrm = $('body').find('.sd-new-appointment');
                            $newFrm.newAppointment({ 'cid': self.element.data('cid'), 'entity': self.options.entity, isNew: true });
                        });
                    }
                });

            }

            switch (options.entity) {
                case 'appointment':
                case 'account':
                case 'contact':
                case 'opportunity':
                case 'support':
                case 'task':
                    {
                        self.element.find('#' + options.entity + '-tab1').append(self._contactPanels());
                        break;
                    }
            }

            self.element.find('.fg-buttonset .fg-button').each(function () {
                $(this).bind('click', function () {
                    var map = $(this).attr('id'); //.substr(6);
                    self.element.find('.switchDiv:not(.' + map + ')').each(function () {
                        if ($(this).css('display') != 'none') {
                            $(this).hide('clip', 300);
                        }
                    });
                    self.element.find('.fg-button').each(function () {
                        if ($(this).hasClass('ui-state-active'))
                            $(this).removeClass('ui-state-active');
                    });
                    var switchDiv = self.element.find('.switchDiv.' + map);
                    if ($(switchDiv).css('display') == 'none') {
                        $(switchDiv).show('clip', 300);
                        if (map == 'sd-id-15250') {
                            setTimeout('$(\'.sd-select-resource\').each(function() {' +
                                '$(this).dropdownchecklist();});', 400);
                        }
                    }
                    if (!$(this).hasClass('ui-active'))
                        $(this).addClass('ui-state-active');
                });
            });
            self.element.find('.sd-id-11250:input[type="button"]').bind('click', function () {
                self._editFullName();
            });
            self.element.find('.sd-id-12250:input[type="button"]').bind('click', function () {
                self._editFullName();
            });
            self.element.find('.sd-id-11284:input[type="button"]').bind('click', function () {
                self._editAddress();
            });
            self.element.find('.sd-id-12284:input[type="button"]').bind('click', function () {
                self._editAddress();
            });
            self.element.find('.sd-id-11302:input[type="button"]').bind('click', function () {
                self._editCategories();
            });
            self.element.find('.sd-id-12302:input[type="button"]').bind('click', function () {
                self._editCategories();
            });
            self.element.find('.sd-id-13302:input[type="button"]').bind('click', function () {
                self._editCategories();
            });
            self.element.find('.sd-id-17302:input[type="button"]').bind('click', function () {
                self._editCategories();
            });
            self.element.find('select.sd-select-phone').each(function () {
                var $input = $(this).next();
                $input.bind('change keyup', function () {
                    var id = $(this).attr('id');
                    var mapid = $(this).prev().val();
                    var v = $(this).val();
                    self.element.data(mapid, v);
                    for (var i = 1; i < 4; i++) {
                        var sel = id.substring(0, id.length - 1) + i.toString();
                        if (sel != id) {
                            var ip = $('#' + sel);
                            var sp = ip.prev();
                            if (sp.val() == mapid) {
                                ip.val(v);
                            }
                        }
                    }
                });
                $(this).bind('change', function () {
                    var c = $(this).attr('class').split(' ');
                    var cl = '';
                    var id = '';
                    for (var i = 0; i < c.length; i++) {
                        if (c[i].match('^sd-id-')) {
                            cl = '.' + c[i];
                            id = c[i].replace('sd-id-', '');
                            break;
                        }
                    }
                    var mapid = $(this).val();
                    var sid = 'ph' + id.substring(id.length - 1);
                    self.element.data(sid, mapid);
                    $(cl + ':input[type="text"]').val(self.element.data(mapid));
                });
            });
            self.element.find('select.sd-select-email').each(function () {
                var $input = $(this).next();
                $input.bind('change keyup', function () {
                    var id = $(this).attr('id');
                    var mapid = $(this).prev().val();
                    var v = $(this).val();
                    self.element.data(mapid, v);
                    for (var i = 1; i < 4; i++) {
                        var sel = id.substring(0, id.length - 1) + i.toString();
                        if (sel != id) {
                            var ip = $('#' + sel);
                            var sp = ip.prev();
                            if (sp.val() == mapid) {
                                ip.val(v);
                            }
                        }
                    }
                });
                $(this).bind('change', function () {
                    var c = $(this).attr('class').split(' ');
                    var cl = '';
                    var id = '';
                    for (var i = 0; i < c.length; i++) {
                        if (c[i].match('^sd-id-')) {
                            cl = '.' + c[i];
                            id = c[i].replace('sd-id-', '');
                            break;
                        }
                    }
                    var mapid = $(this).val();
                    var sid = 'em' + id.substring(id.length - 1);
                    self.element.data(sid, mapid);
                    $(cl + ':input[type="text"]').val(self.element.data(mapid));
                });
            });
            self.element.find('.dtp').each(function () {
                $(this).datepicker({ dateFormat: 'D d M yy' });
                $('div.ui-datepicker').css('z-index', '10000');
            });
            self.element.find('.tpk').each(function () {
                $(this).smartTimePicker(); //({ 'secView': false });
            });
            self.element.find('.sfs').each(function () {
                $(this).smartFlagSelect(); //({ 'secView': false });
            }); //{ 'status': $(this).val()}
            self.element.find('.sd-select-resource').each(function () {
                $(this).dropdownchecklist();
                $(this).bind('change', function () {
                    var res = $(this).val();
                    var add = false;
                    var resources = self.element.data('selectedResource');
                    for (var i = 0; i < res.length; i++) {
                        if ($.inArray(res[i], resources) < -0) {
                            resources.push(res[i]);
                            $('.ui-dropdownchecklist-item input:checkbox').each(function () {
                                if ($(this).val() == res[i]) {
                                    $(this).attr('checked', true);
                                }
                            });
                            $(this).find('option').each(function () {
                                if ($(this).val() == res[i])
                                    $(this).attr('selected', true);
                            });
                        }
                    }
                    $(this).find('option').each(function () {
                        var chck = $(this).attr('selected');
                        var val = $(this).val();
                        if (chck == false) {
                            if ($.inArray(val, resources) > -1) {
                                for (var j = 0; j < resources.length; j++) {
                                    if (resources[j] == val)
                                        resources.splice(j, 1);
                                }
                                $('.ui-dropdownchecklist-item input:checkbox').each(function () {
                                    if ($(this).val() == val) {
                                        $(this).attr('checked', false);
                                    }
                                });
                                $(this).find('option').each(function () {
                                    if ($(this).val() == val)
                                        $(this).attr('selected', false);
                                });
                            }
                        }
                    });
                    resourceSpan.text(resourceStr.join(', '));
                });
            });

            self.element.find('.ui-dropdownchecklist-item input:checkbox').each(function () {
                $(this).change(function () {
                    alert($(this).val().toString());
                });
            });

            self.element.find('.sd-' + options.entity + '-tabs').tabs();
            self.element.find('.sd-' + options.entity + '-tabs').bind('tabsselect', function (event, ui) {
                if (ui.index == 2) {
                    if (!self.element.hasClass('sd-history-active')) {
                        self.element.addClass('sd-history-active');
                        self._loadHistory();
                        //alert('You\'ve Selected the history');
                    }
                }
                else if (ui.index == 1 && (self.options.entity == 'account' || options.entity == 'appointment')) {
                    if (!self.element.hasClass('sd-contacts-active')) {
                        self.element.addClass('sd-contacts-active');
                        self._loadContacts();
                        //alert('You\'ve Selected the history');
                    }
                }
            });
            self.element.find('input.sd-id-11301:button').bind('click', function () {
                var txt = $(this).val();
                self._selectLinkedEntity(txt);
            });
            self.element.find('input.sd-id-12246:button').bind('click', function () {
                var txt = $(this).val();
                self._selectLinkedEntity(txt);
            });
            self.element.find('input.sd-id-13246:button').bind('click', function () {
                var txt = $(this).val();
                self._selectLinkedEntity(txt);
            });
            self.element.find('input.sd-id-17246:button').bind('click', function () {
                var txt = $(this).val();
                self._selectLinkedEntity(txt);
            });
            self.element.find('input.sd-id-13207:button').bind('click', function () {
                var txt = $(this).val();
                self._selectOwner(txt);
            });
            self.element.find('input.sd-id-17207:button').bind('click', function () {
                var txt = $(this).val();
                self._selectOwner(txt);
            });
            self.element.find('input.sd-ro:text').each(function () {
                $(this).attr('readonly', true);
            });
            self.element.find('textarea.sd-ro').each(function () {
                $(this).attr('readonly', true);
            });
            self.element.find('.sd-slider').each(function () {
                $(this).slider({ min: 0,
                    max: 100,
                    range: "min",
                    step: 5
                });
                $(this).find('.ui-slider-range-min').addClass('ui-state-active');
            });
        },

        _loadHistory: function () {
            var self = this;
            var cid = self.element.data('cid');
            var entity = self.options.entity

            var data = { "contactserviceid": cid, "entity": entity };

            $.ajax({
                type: "POST",
                url: "/Services/DefaultService.svc/GetActivities",
                data: JSON.stringify(data),

                dataType: "json",
                success: function (msg) {
                    if (msg.d != null) {
                        var actstr = '<div style=\'height:100%;\'><ul class=\'sd-activity-list\'>';
                        var acts = msg.d;
                        for (var i = 0; i < acts.length; i++) {
                            var act = acts[i];
                            actstr += '<li class=\'sd-activity-item\'><a>';
                            actstr += '<img class=\'sd-activity-image\' src=\'http://mbsmart.co.uk/EnumImage.ashx?id=' + act.activitytype + '\'/>';
                            actstr += '<span class=\'sd-activity-itemspan\'>' + act.title + '</span>';
                            actstr += '<span class=\'sd-activity-timespan\'>' + jsonSdActivityDate(act.time) + '</span></a></li>';
                        }
                        actstr += '</ul></div>';
                        self.element.find('#' + self.options.entity + '-tab3').empty();
                        self.element.find('#' + self.options.entity + '-tab3').append(actstr);
                    }
                }
            });
        },
        _asignTo: function () {




        },

        _loadContacts: function () {
            var self = this;
            var pid;
            var data = {};
            var uri = '';
            var entity = self.options.entity
            if (entity == 'account') {
                uri = '/Services/DefaultService.svc/GetChildren';
                pid = self.element.data('cid');
                data = { "contactserviceid": pid };
            }
            else if (entity == 'appointment') {
                uri = '/Services/DefaultService.svc/GetAppointmentContact';
                pid = self.element.data('aid');
                data = { "appointmentid": pid };
            }
            $.ajax({
                url: uri,
                data: JSON.stringify(data),
                success: function (msg) {
                    if (msg.d != null) {
                        var $contactDiv = self.element.find('.sd-id-contactDiv');
                        if ($contactDiv.length < 1) {
                            var actstr = '<div class=\'sd-id-contactDiv\'>';
                            actstr += '<div class=\"fg-buttonset fg-buttonset-single\" style=\'font-size:65%; padding:5px 0px; overflow:hidden\'>';
                            actstr += '<button class=\'fg-button ui-state-default sd-id-choose-contact ui-corner-left\' style=\'width: 33.33%; height: 30px; font-size: 1.3em;\'>Choose</button>';
                            actstr += '<button class=\'fg-button ui-state-default sd-id-new-contact\' style=\'width: 33.33%; height: 30px; font-size: 1.3em;\'>New</button>';
                            actstr += '<button class=\'fg-button ui-state-default sd-id-remove-contact ui-corner-right\' style=\'width: 33.33%; height: 30px; font-size: 1.3em;\'>Remove</button>';
                            actstr += '</div>';
                            actstr += '<div style=\'height:100%;\'><ul class=\'sd-activity-list sd-contact-list\'>';
                            actstr += '</ul></div></div>';
                            self.element.find('#' + self.options.entity + '-tab2').empty();
                            self.element.find('#' + self.options.entity + '-tab2').append(actstr);
                            $contactDiv = self.element.find('.sd-id-contactDiv');
                        }
                        $('.sd-contact-list').empty();
                        var contacts = msg.d;
                        for (var i = 0; i < contacts.length; i++) {
                            var con = contacts[i];
                            $contactDiv.find('ul').append(sdContactListItem(con.id, con.fullname, con.mobile, true));
                        }
                        $contactDiv.find('ul li').each(function () {
                            $(this).bind('click', function () {

                                $contactDiv.find('ul li').each(function () {
                                    if ($(this).hasClass('ui-state-active'))
                                        $(this).removeClass('ui-state-active');
                                });
                                $(this).addClass('ui-state-active');
                            });
                        });

                        $contactDiv.find('.sd-id-choose-contact').bind('click', function () {
                            self._selectLinkedEntity('& add to booking');
                        });
                        $contactDiv.find('.sd-id-remove-contact').bind('click', function () {
                            var $sel = $contactDiv.find('.ui-state-active');
                            if ($sel != undefined) {
                                var $id, $data, $uri;
                                if (self.options.entity == 'appointment') {
                                    $id = $sel.attr('id');
                                    $data = { 'aid': self.element.data('aid'), 'cid': $id };
                                    $uri = '/Services/DefaultService.svc/RemoveAppointmentContact';
                                }
                                else if (self.options.entity == 'account') {
                                    $data = { 'pid': self.element.data('cid'), 'cid': $sel.attr('id') };
                                    $data = jsonSerializeDefaults($data);
                                    $uri = '/Services/DefaultService.svc/RemoveChildContact';
                                }
                                $.ajax({
                                    type: "POST",
                                    url: $uri,
                                    data: JSON.stringify($data),

                                    dataType: "json",
                                    success: function (msg) {
                                        if (msg.d != null) {
                                            if (self.options.entity == 'account') {
                                                self.element.find('.sd-id-12246:input:text').val(jsonSdString(msg.d.fullname));
                                            }
                                            $sel.remove();
                                        }
                                    }
                                });
                            }
                        });
                        $contactDiv.find('.sd-id-new-contact').bind('click', function () {
                            self._selectLinkedEntity('& add to booking');
                            loadEntity(1, 'contact', null, '', true, self.element.data('aid'));

                        });
                    }
                }
            });
        },
        _loadNewItemPanel: function ($mapids) {
            var self = this;
            var $newItemButtons = '<center>';
            for (var i = 0; i < $mapids.length; i++) {
                var map = $mapids[i];
                $newItemButtons += '<button id=\'sd-id-new-' + map + '\' class=\'fg-button ui-state-default sd-id-' + map + ' ui-corner-all\' style=\'width:250px;height:35px;margin:15px;font-size: 1.3em;\'>New ' + self._getLabelText(map).replace(':', '').replace('And', '&').replace('and', '&') + '</button>';
            }
            $newItemButtons += '</center>';
            return $newItemButtons;
        },
        _loadMenu: function ($mapids) {

            var self = this;
            var $menuButtons = '';
            var twdth = 100;
            var fw = (twdth / 3);
            var sw = (twdth / 3);
            var $buttons = new Array();
            for (var j = 0; j < $mapids.length; j++) { if (self._canRead($mapids[j])) $buttons.push($mapids[j]); }
            var cnt = $buttons.length; var cnr = new Array();
            if (cnt == 1) { fw = (twdth / 1); sw = (twdth / 1); cnr[0] = ' ui-corner-all'; }
            else if (cnt == 2 || cnt == 4) {
                fw = (twdth / 2); sw = (twdth / 2); if (cnt == 2) { cnr[0] = ' ui-corner-left'; cnr[1] = ' ui-corner-right'; }
                else { cnr[0] = ' ui-corner-tl'; cnr[1] = ' ui-corner-tr'; cnr[2] = ' ui-corner-bl'; cnr[3] = ' ui-corner-br'; }
            }
            else if (cnt == 3 || cnt == 6) { fw = (twdth / 3); sw = (twdth / 3); if (cnt == 3) { cnr[0] = ' ui-corner-left'; cnr[1] = ''; cnr[2] = ' ui-corner-right'; } else { cnr[0] = ' ui-corner-tl'; cnr[1] = ''; cnr[2] = ' ui-corner-tr'; cnr[3] = ' ui-corner-bl'; cnr[4] = ''; cnr[5] = ' ui-corner-br'; } }
            else if (cnt == 5) { fw = (twdth / 3); sw = (twdth / 2); cnr[0] = ' ui-corner-tl'; cnr[1] = ''; cnr[2] = ' ui-corner-tr'; cnr[3] = ' ui-corner-bl'; cnr[4] = ' ui-corner-br'; }

            for (var i = 0; i < $buttons.length; i++) {
                var map = $buttons[i]; if (self._canRead(map)) {
                    if (i < 2 || (i < 3 && cnt != 4)) {
                        $menuButtons += '<button id=\'sd-id-' + map + '\' class=\'fg-button ' + (i == 0 ? 'ui-state-active' : '') + ' ui-state-default sd-id-' + map + ' ' + cnr[i] + '\' style=\'width:' + fw + '%;height:30px;font-size: 1.3em;\'>' + self._getLabelText(map).replace(':', '').replace('And', '&').replace('and', '&') + '</button>';
                    }
                    else { $menuButtons += '<button id=\'sd-id-' + map + '\' class=\'fg-button ui-state-default sd-id-' + map + ' ' + cnr[i] + '\' style=\'width:' + sw + '%;height:30px;font-size: 1.3em;\'>' + self._getLabelText(map).replace(':', '') + '</button>'; }
                }
            } return $menuButtons;
        },

        _canRead: function (mapid) {
            if (mapid == 15262 || mapid == 15263) return false;
            var ac = $('#accessmap').data(mapid.toString());
            if (ac != null) {
                return parseInt(ac) > 0;
            }
            return true;
        },
        _canEdit: function (mapid) {
            var ac = $('#accessmap').data(mapid.toString());
            if (ac != null) {
                return parseInt(ac) > 1;
            }
            return true;
        },
        _getLabelText: function (mapid) {
            var $entitymap = $('body').find('#entitymap'); if ($entitymap != undefined && mapid != undefined) {
                var lbl = $entitymap.data(mapid.toString());
                if (lbl != undefined && lbl != null)
                { return lbl; }
            } return 'Hi World';
        },
        _loadPhoneSelect: function () {
            var self = this;
            var options = this.options;
            var optionTxt = '';

            var $ps = $('body').find('#entitymap');
            var cnt = 11265;
            if (options.entity == 'account') cnt += 1000;

            for (var i = cnt; i < cnt + 18; i++) {
                optionTxt += '<option value=\'' + i.toString() + '\'>' + $ps.data(i.toString()).replace(':', '') + '</option>';
            }
            return optionTxt;
        },
        _loadEmailSelect: function () {
            var self = this;
            var options = this.options;
            var optionTxt = '';

            var $ps = $('body').find('#entitymap');
            var cnt = 11208;
            if (options.entity == 'account') cnt += 1000;

            for (var i = cnt; i < cnt + 6; i = i + 2) {
                optionTxt += '<option value=\'' + i.toString() + '\'>' + $ps.data(i.toString()).replace(':', '') + '</option>';
            }
            return optionTxt;
        },
        _loadResourceSelect: function () {
            var self = this;
            var optionText = '';
            var $cals = $("#diaryPanel").data('calendars');
            for (var i = 0; i < $cals.length; i++) {
                var cal = $cals[i];
                if ($cals.length > 1) {
                    optionText += '<optgroup label=\'' + cal.title + '\'>';
                }
                var $calResource = $("#diaryPanel").data('calendarResources');

                for (var j = 0; j < $calResource.length; j++) {
                    if ($calResource[j].calendarId == cal.id)
                        optionText += '<option value=\'' + $calResource[j].id + '\'>' + $calResource[j].title + '</option>';
                }
                if ($cals.length > 1) {
                    optionText += '</optgroup>';
                }
            }
            return optionText;
        },

        _loadSelect: function (map) {

            var optionTxt = '';
            var $pl = $('body').find('#picklist');

            if (map == 15201) {
                var $ac = $pl.data('AppointmentCategory');
                for (var a = 0; a < $ac.length; a++) {
                    optionTxt += '<option value=\'' + $ac[a].color.toString() + '\'>' + $ac[a].label + '</option>';
                }
            }
            else if (map == 15202) {
                var $bs = $pl.data('BusyState');
                for (var j = 0; j < $bs.length; j++) {
                    optionTxt += '<option value=\'' + $bs[j].color.toString() + '\'>' + $bs[j].label + '</option>';
                }
            }
            else if (map == 15223) {
                return optionTxt;
            }
            else {
                if (map == 11254 || map == 12254) {
                    optionTxt += '<option value=\'\'></option>';
                }
                else {
                    optionTxt += '<option value=\'null\'></option>';
                }
                var $opt = $pl.data(map.toString());
                for (var i = 0; i < $opt.length; i++) {
                    if (map == 11254 || map == 12254) {
                        optionTxt += '<option value=\'' + $opt[i].text + '\'>' + $opt[i].text + '</option>';
                    }
                    else {
                        optionTxt += '<option value=\'' + $opt[i].value + '\'>' + $opt[i].text + '</option>';
                    }
                }
            }
            return optionTxt;
        },

        _newItemPanelMapid: function (entity) {
            var $mapids;
            switch (entity) {
                case 'contact':
                    $mapids = [5, 3, 7, 6, 10, 9, 14];
                    break;
                default: $mapids = [5, 3, 7, 6, 10, 9, 14];
                    break;
            }
            return $mapids;
        },

        _entityPanelMapid: function (entity) {
            var $mapids;
            switch (entity) {
                case 'account':
                    {
                        $mapids = [12295, 12296, 12297, 12298, 12299];
                        return $mapids;
                    }
                case 'appointment':
                    {
                        $mapids = [15250, 15251, 15262, 15263, 15299];
                        return $mapids;
                    }
                case 'contact':
                    {
                        $mapids = [11295, 11296, 11298, 11297, 11306, 11299];
                        return $mapids;
                    }
                case 'opportunity':
                    {
                        $mapids = [13200, 13295, 13296, 13299];
                        return $mapids;
                    }
                case 'support':
                    {
                        $mapids = [17200, 17295, 17296, 17299];
                        return $mapids;
                    }
                case 'task':
                    {
                        $mapids = [16250, 16251, 16299];
                        return $mapids;
                    }
            }
        },

        _createSwitchDiv: function (index, mapid) {

            if (index == 0)
                return '<div class=\'sd-id-' + mapid + ' switchDiv firstDiv\' style=\'position:absolute;top:0px;left:0px\'>';

            else
                return '<div class=\'sd-id-' + mapid + ' switchDiv\' style=\'position:absolute;top:0px;left:0px;display:none\'>';
        },

        _getSize: function (s) {
            var size = 'medium';

            if (s == 0)
                size = 'short';
            else if (s == 2)
                size = 'long';
            else if (s == 3)
                size = 'verylong';

            return size;
        },
        _createIDiv: function (map, lSize, iSize, iType, txt, bDiv, eDiv, lClass, iClass, lType) {

            var self = this;

            if (iType == 'phone') {
                return self._createPhoneDiv(map, iClass, lClass);
            }
            if (iType == 'email') {
                return self._createEmailDiv(map, iClass, lClass);
            }
            else if (iType == 'comments') {
                return self._createCommentsBox(map);
            }
            else if (iType == 'appointment') {
                return self._createAppointmentDate(map);
            }
            else if (iType == 'datetime') {
                return self._createDateTime(map);
            }

            var inputDiv = '';
            lSize = this._getSize(lSize);
            iSize = this._getSize(iSize);

            if (lType != null && lType != 'blanklabel') {
                var mp = map.toString();
                if (mp.length > 5) {
                    mp = mp.substring(0, 5);
                    txt = self._getLabelText(mp);
                }
                else {
                    if (lType == 'blanklabel')
                        txt = '';
                    else
                        txt = self._getLabelText(map.toString());
                }
            }

            if (bDiv == true) {
                if (iType != 'checkbox') {
                    inputDiv += '<div style=\'clear:both\'>'; // 
                }
                else {
                    inputDiv += '<div style=\'float:right\'>'; // 
                }
            }
            if (self._canRead(map)) {
                if (lType == 'label' && iType != 'checkbox') {
                    inputDiv += '<label class=\'sd-label-' + lSize + ' sd-id-' + map + ' ' + lClass + '\'>' + txt + '</label>';
                }
                else if (lType == 'blanklabel') {
                    inputDiv += '<label class=\'sd-label-' + lSize + ' sd-id-' + map + ' ' + lClass + '\'></label>';
                }
                else if (lType == 'button') {
                    inputDiv += self._createInputButton(map, txt, lSize, lClass, false, false);
                }


                var ro = self._canEdit(map) ? '' : ' sd-ro';

                if (iType == 'input' || iType == 'text')
                    inputDiv += '<input id=\'sd-id-' + map + '\' class=\'sd-input-' + iSize + ' sd-id-' + map + ' ' + iClass + ro + '\' type=\'text\' value=\'\'/>';
                else if (iType == 'textarea')
                    inputDiv += '<textarea id=\'sd-id-' + map + '\' class=\'sd-input-' + iSize + ' sd-id-' + map + ' ' + iClass + ro + '\' type=\'text\' value=\'\'></textarea>';
                else if (iType == 'checkbox')
                    inputDiv += '<input id=\'sd-id-' + map + '\' class=\'sd-id-' + map + ' ' + iClass + ro + '\' type=\'checkbox\'/>';
                else if (iType == 'select')
                    inputDiv += '<select class=\'sd-select-' + iSize + ' sd-id-' + map + ' ' + iClass + ro + '\'>' + self._loadSelect(map) + '</select>';
                else if (iType == 'resource')
                    inputDiv += '<select multiple=\'multiple\' class=\'sd-select-resource sd-id-' + map + ro + '\'>' + self._loadResourceSelect() + '</select>';
                else if (iType == 'slider')
                    inputDiv += '<div class=\'sd-select-' + iSize + ' sd-id-' + map + ' ' + iClass + '\'></div>';

                if (lType == 'label' && iType == 'checkbox') {
                    inputDiv += '<label for=\'sd-id-' + map + '\' class=\'sd-label-checkbox sd-id-' + map + ' ' + lClass + ro + '\'>' + txt + '</label>';
                }
            }

            if (eDiv == true)
                inputDiv += '</div>';

            return inputDiv;
        },

        _createAppointmentDate: function (map) {
            var fsp = '';
            map++;
            fsp += this._createIDiv(map, 1, 2, 'text', 'Date:', true, false, '', 'dtp', 'label'); //        1, map, 'text', 2, 'Start:', true, false, '', 'dtp', true);
            fsp += '&nbsp;&nbsp;';
            map++;
            fsp += this._createIDiv(map, 0, 0, 'text', 'Time', false, true, '', 'tpk', null); //      0, map, 'text', 0, '', false, true, '', 'tpk', false);

            return fsp;
        },
        _createDateTime: function (map) {
            var fsp = '';
            fsp += this._createIDiv(map, 1, 2, 'text', 'Date:', true, false, '', 'dtp', 'label'); //        1, map, 'text', 2, 'Start:', true, false, '', 'dtp', true);
            fsp += '&nbsp;&nbsp;';
            fsp += this._createIDiv(map, 0, 0, 'text', 'Time', false, true, '', 'tpk', null); //      0, map, 'text', 0, '', false, true, '', 'tpk', false);

            return fsp;
        },
        _closeTag: function (tag, html) {
            var ct = '';
            var ht = html.toString();
            var sTag = '<' + tag;
            var cTag = '</' + tag;
            var sCount = 0;
            var cCount = 0;

            for (var i = 0; i < html.length; i++) {
                if (sTag == ht.substr(i, sTag.length))
                    sCount++;
                if (cTag == ht.substr(i, cTag.length))
                    cCount++;
            }

            if (sCount != cCount) {
                ct += '</' + tag + '>';
            }
            return ct;
        },
        _createInputButton: function (map, txt, bSize, bClasses, openDiv, closeDiv) {
            var btn = '';
            if (openDiv == true)
                btn += '<div>';
            btn += '<input type=\'button\' class=\'sd-button-' + bSize + ' sd-id-' + map + ' ui-corner-left ui-state-default' + bClasses + '\' value=\'' + txt.replace(':', '') + '\'/>';

            if (closeDiv == true)
                btn += '</div>';

            return btn;
        },
        _createPhoneDiv: function (map, iClass, lClass) {
            var self = this;
            var phoneDiv = '';
            phoneDiv += '<div><select class=\'sd-select-phone sd-id-' + map + lClass + '\'>' + self._loadPhoneSelect() + '</select>';
            phoneDiv += '<input id=\'sd-id-' + map + '\' class=\'sd-select-verylong sd-id-' + map + iClass + '\' type=\'text\' value=\'\'/></div>';
            return phoneDiv;
        },
        _createEmailDiv: function (map, iClass, lClass) {
            var self = this;
            var emailDiv = '';
            emailDiv += '<div><select class=\'sd-select-email sd-id-' + map + lClass + '\'>' + self._loadEmailSelect() + '</select>';
            emailDiv += '<input id=\'sd-id-' + map + '\' class=\'sd-select-verylong sd-id-' + map + iClass + '\' type=\'text\' value=\'\'/></div>';
            return emailDiv;
        },
        _createCommentsBox: function (map) {
            return '<textarea class=\'sd-textarea-comments sd-id-' + map + '\'></textarea>';
        },
        _createResourceList: function (map) {
            var self = this;
            var resDiv = '';
            resDiv += '<div><select class=\'sd-select-resource sd-id-' + map + '\'>' + self._loadResourceSelect() + '</select></div>';
            return resDiv;
        },

        _contactPanels: function () {
            var self = this;
            var options = this.options;
            var $panelIds = self._entityPanelMapid(options.entity);
            var $mapids = self._entityMapid(options.entity);
            var panelHtml = '';
            var fsp;
            var index = 0;
            var pIndex = 0;
            var map;
            var addDiv = false;
            var $MAPID = self.element.data('mapids'); //._$mapids();
            var doPanel = true;

            for (var c = 0; c < $MAPID.length; c++) {
                var $MAP = $MAPID[c];

                if ($MAP.beginSp == true) {
                    doPanel = self._canRead($panelIds[pIndex]); // $MAP.beginSp == true;

                    panelHtml += self._closeTag('fieldset', panelHtml);
                    panelHtml += self._closeTag('div', panelHtml);

                    if (doPanel == true) {
                        panelHtml += self._createSwitchDiv(pIndex, $panelIds[pIndex]);
                    }
                    pIndex++;
                }
                if (doPanel == true) {
                    if ($MAP.beginFs == true) {
                        panelHtml += self._closeTag('fieldset', panelHtml);
                        panelHtml += '<fieldset class=\'ui-corner-all\' style=\'clear:both;padding-left:5px;\'>';
                    }
                    panelHtml += self._createIDiv($MAP.map, $MAP.lSize, $MAP.iSize, $MAP.iType, $MAP.txt, $MAP.bDiv, $MAP.eDiv, $MAP.lClass, $MAP.iClass, $MAP.lType);
                }
            }
            panelHtml += self._closeTag('fieldset', panelHtml);
            panelHtml += self._closeTag('div', panelHtml);
            panelHtml += self._closeTag('div', panelHtml);

            panelHtml = '<div style=\'position:relative;clear:all;\'>' + panelHtml + '</div>';
            //}

            return panelHtml;
        },

        _editFullName: function () {
            var self = this;
            var $nameForm = $('body').find('.sd-nameForm-' + self.options.entity);
            if ($nameForm.length < 1) {
                $('body').append('<div class=\'sd-nameForm-' + self.options.entity + '\'></div>');
                $nameForm = $('body').find('.sd-nameForm-' + self.options.entity);
            }
            var i = self.options.entity == 'contact' ? '1' : '2';
            var fnText = '';
            var mapids = self.options.entity == 'contact' ? [11254, 11251, 11252, 11253, 11255] : [12250];

            fnText += '<div><fieldset>';
            for (var j = 0; j < mapids.length; j++) {
                var mapid = mapids[j];
                if (j == 0 && self.options.entity == 'contact') {
                    fnText += self._createIDiv(mapid, 1, 0, 'select', 'Title:', true, true, '', '', 'label');
                }
                else {
                    fnText += self._createIDiv(mapid, 1, 2, 'text', 'First:', true, true, '', '', 'label');
                }
            }
            $nameForm.empty();
            $nameForm.append(fnText);

            var opt = {
                modal: true,
                autoOpen: false,
                stack: true,
                height: self.options.entity == 'contact' ? 275 : 100,
                width: self.options.entity == 'contact' ? 470 : 460,
                bgiframe: true,
                buttons: { 'Close': function () {
                    $(this).dialog("close");
                    if (self.options.isNew == true && self.element.data('cid') == undefined) {
                        self.element.dialog('close');
                    }
                },
                    'Save': function () {
                        if (self.options.isNew == true && self.element.data('cid') == undefined) {
                            var $id = jQuery.Guid.New();
                            var $jsonData = { 'cid': $id, 'entity': self.options.entity };
                            $jsonData = jsonSerializeDefaults($jsonData);
                            var uri = '/Services/DefaultService.svc/AddContactMain';
                            $.ajax({
                                url: uri, data: JSON.stringify($jsonData),
                                success: function (msg) {
                                    if (msg.d == true) {
                                        self.element.data('cid', $id);
                                        self.options.isNew = false;
                                        saveContactName($nameForm, self.options.entity);
                                    }
                                    else { $(this).dialog("close"); }
                                }
                            });
                        }
                        else {
                            saveContactName($nameForm, self.options.entity);
                        }
                    }
                }
            };

            $nameForm.dialog(opt);

            var titleTxt = self.options.isNew == true ? 'New Item' : self.element.data('1' + i + '250');
            $nameForm.dialog('option', 'title', titleTxt);
            $nameForm.dialog('open');
            $nameForm.bind('dialogclose', function () {
                if (self.options.isNew == true && self.element.data('cid') == undefined) {
                    self.element.dialog('close');
                }
            });
            if (self.options.isNew == true) {
                $nameForm.find('select').each(function () { $(this).val(''); });
                $nameForm.find('input:text').each(function () { $(this).val(''); });
                $nameForm.find('input:checkbox').each(function () { $(this).attr('checked', false); });

            }
            else {
                for (var k = 0; k < mapids.length; k++) {
                    var map = mapids[k];
                    $nameForm.find('.sd-id-' + map + ':input').val(self.element.data(map.toString()));
                    $nameForm.find('select.sd-id-' + map).val(self.element.data(map.toString()));
                }
            }
        },

        _selectLinkedEntity: function (text) {
            var self = this;
            var $searchForm = $('body').find('.sd-search-list-' + self.options.entity);
            if ($searchForm.length < 1) {
                $('body').append('<div style=\'overflow:hidden;\' class=\'sd-search-list-' + self.options.entity + '\'></div>');
                $searchForm = $('body').find('.sd-search-list-' + self.options.entity);
            }
            var frm = '<div style=\'height:100%\'><div><input type=\'text\' id=\'sd-search-' + self.options.entity + '\'/>';
            frm += '<button class=\'fg-button ui-state-default ui-corners-all\' style=\'width:120px;height:30px;font-size:.9em;margin-left:10px;\'>Search</button></div>';
            frm += '<div style=\'overflow-y:auto;height:90%;\'><ul class=\'sd-search-list sd-activity-list\'></ul></div></div>';

            $searchForm.empty();
            $searchForm.append(frm);

            var opt = { modal: true,
                autoOpen: false,
                height: 400,
                width: 340,
                bgiframe: true,
                buttons: { 'Close': function () { $(this).dialog("close"); }, 'Save': function () {
                    if (self.options.entity == 'appointment') {
                        var datStr = self.element.find('input.sd-id-15215').val() + ' ' + self.element.find('input.sd-id-15216').val() + ':00';
                        var sDat = new Date(datStr);

                        var $selected = $searchForm.find('li.ui-state-active');

                        var $id = $selected.attr('id');
                        var $mb = $selected.attr('mobile');
                        var $fn = $selected.attr('fullname');

                        saveAddContactToAppointment(self.element.data('aid'), $id, $searchForm, true, sDat);

                        var $ul = self.element.find('.sd-id-contactDiv ul');

                        $ul.append(sdContactListItem($id, $fn, $mb, true));

                        //var $contactDiv = self.element.find('.sd-id-contactDiv');
                    }
                    else if (self.options.entity == 'contact') {
                        saveLinkedEntity($searchForm, self.options.entity, $searchForm.data('newid'), null, null);
                    }
                    else if (self.options.entity == 'account') {
                        saveLinkedEntity($searchForm, self.options.entity, $searchForm.data('newid'), true, true);
                    }
                    else {
                        saveLinkedEntity($searchForm, self.options.entity, $searchForm.data('newid'), false, null);
                    }
                }
                }
            };

            $searchForm.dialog(opt);

            $searchForm.dialog('option', 'title', 'Select ' + text);
            $searchForm.dialog('open');

            $searchForm.find('.fg-button').bind('click', function () {
                var txt = $('#sd-search-' + self.options.entity).val();
                $('#sd-search-' + self.options.entity).val('');
                $searchForm.find('.sd-search-list').empty();
                var date = {};
                var uri = '';
                if (self.options.entity == 'appointment') {
                    data = { "smartid": $('#usercred').data('sid'), 'stext': txt, 'entity': self.options.entity, 'aid': self.element.data('aid') };
                    url = "/Services/DefaultService.svc/AppointmentContactSearchList"
                }
                else {
                    data = { "smartid": $('#usercred').data('sid'), 'stext': txt, 'entity': self.options.entity, 'cid': self.element.data('cid') };
                    url = "/Services/DefaultService.svc/EntitySearchList"
                }
                $.ajax({
                    url: url,
                    data: JSON.stringify(data),
                    success: function (msg) {
                        if (msg.d != null) {
                            var listText = '';
                            for (var i = 0; i < msg.d.length; i++) {
                                $searchForm.find('.sd-search-list').append(sdContactListItem(msg.d[i].id, msg.d[i].fullname, msg.d[i].mobile, false));
                                // listText += '<li id=\'sd-id-' + msg.d[i].id + '\' class=\'sd-activity-item\'><a>' + msg.d[i].fullname + '</a></li>'
                            }
                            //$searchForm.find('.sd-search-list').append(listText);
                            $searchForm.find('li').bind('click', function () {
                                var id = $(this).attr('id');
                                var name = $(this).find('a').html();
                                $searchForm.data('newid', id);
                                $searchForm.data('newname', name);
                                $searchForm.find('li').each(function () {
                                    if ($(this).hasClass('ui-state-active'))
                                        $(this).removeClass('ui-state-active');
                                });
                                $(this).addClass('ui-state-active');
                            });
                        }
                    }
                });
            });
        },
        _selectOwner: function (text) {
            var self = this;
            var $searchForm = $('body').find('.sd-search-list-' + self.options.entity);
            if ($searchForm.length < 1) {
                $('body').append('<div style=\'overflow:hidden;\' class=\'sd-search-list-' + self.options.entity + '\'></div>');
                $searchForm = $('body').find('.sd-search-list-' + self.options.entity);
            }
            var frm = '<div style=\'height:100%\'><div><input type=\'text\' id=\'sd-search-' + self.options.entity + '\'/>';
            frm += '<button class=\'fg-button ui-state-default ui-corners-all\' style=\'width:120px;height:30px;font-size:.9em;margin-left:10px;\'>Search</button></div>';
            frm += '<div style=\'overflow-y:auto;height:90%;\'><ul class=\'sd-search-list sd-activity-list\'></ul></div></div>';

            $searchForm.empty();
            $searchForm.append(frm);

            var opt = { modal: true,
                autoOpen: false,
                height: 400,
                width: 340,
                bgiframe: true,
                buttons: { 'Close': function () { $(this).dialog("close"); }, 'Save': function () {

                    saveOwner($searchForm, self.options.entity, $searchForm.data('newid'));
                }
                }
            };
            $searchForm.dialog(opt);

            $searchForm.dialog('option', 'title', text);
            $searchForm.dialog('open');

            $searchForm.find('.fg-button').bind('click', function () {
                var txt = $('#sd-search-' + self.options.entity).val();
                $('#sd-search-' + self.options.entity).val('');
                $searchForm.find('.sd-search-list').empty();
                var data = { "smartid": $('#usercred').data('sid'), 'stext': txt };
                var uri = '/Services/DefaultService.svc/UserSearchList';

                $.ajax({
                    type: "POST",
                    url: uri,
                    data: JSON.stringify(data),

                    dataType: "json",
                    success: function (msg) {
                        if (msg.d != null) {
                            var listText = '';
                            for (var i = 0; i < msg.d.length; i++) {
                                $searchForm.find('.sd-search-list').append(sdContactListItem(msg.d[i].id, msg.d[i].fullname, msg.d[i].mobile, false));
                            }
                            $searchForm.find('li').bind('click', function () {
                                var id = $(this).attr('id');
                                var name = $(this).find('a').html();
                                $searchForm.data('newid', id);
                                $searchForm.data('newname', name);
                                $searchForm.find('li').each(function () {
                                    if ($(this).hasClass('ui-state-active'))
                                        $(this).removeClass('ui-state-active');
                                });
                                $(this).addClass('ui-state-active');
                            });
                        }
                    }
                });
            });
        },

        _editAddress: function () {

            var self = this;
            var $addressForm = $('body').find('.sd-addressForm-' + self.options.entity);
            if ($addressForm.length < 1) {
                $('body').append('<div class=\'sd-addressForm-' + self.options.entity + '\'></div>');
                $addressForm = $('body').find('.sd-addressForm-' + self.options.entity);
            }
            var i = self.options.entity == 'contact' ? '1' : '2';
            var adText = '';
            var mapids = mapidArray(self.options.entity, 'address');

            adText += '<ul>';
            adText += '<li><a id=\'business\' href=\'#addressTab_1\'>Business</a></li>';
            adText += '<li><a id=\'home\' href=\'#addressTab_2\'>Home</a></li>';
            adText += '<li><a id=\'other\' href=\'#addressTab_3\'>Other</a></li>';
            adText += '</ul>';

            var sAd = 0;
            var tabId = 1;
            var preMap = mapids[0];
            for (var j = 0; j < mapids.length; j++) {
                var mapid = mapids[j];
                if (preMap == mapid || mapid == mapids[j + 1]) {
                    sAd++;
                }
                else { sAd = 0; }

                if (sAd > 0) {
                    if (sAd == 1) {
                        adText += self._closeTag('fieldset', adText);
                        adText += self._closeTag('div', adText);
                        adText += '<div id=\'addressTab_' + tabId + '\'>'
                        //adText += '<fieldset>';
                        adText += self._createIDiv(mapid.toString() + '_' + sAd.toString(), 1, 2, 'text', 'Title:', true, true, '', '', 'label');
                        tabId++;
                        preMap = mapid;
                    }
                    else {
                        adText += self._createIDiv(mapid.toString() + '_' + sAd.toString(), 1, 2, 'text', 'Title:', true, true, '', '', 'blanklabel');
                    }
                }
                else {
                    adText += self._createIDiv(mapid, 1, 2, 'text', 'Title:', true, true, '', '', 'label');
                }
            }

            //adText += self._closeTag('fieldset', adText);
            adText += self._closeTag('div', adText);
            adText = '<div id=\'addressTab\'>' + adText + '</div>';

            $addressForm.empty();
            $addressForm.append(adText);

            var tabs = $addressForm.find('#addressTab');
            tabs.tabs();
            tabs.tabs('select', parseInt(self.element.data('mad')));
            //          $('#contactAddressForm').find('#addressTab').tabs('select', self.element.data('mad'));
            //          $('#contactAddressForm').find('#addressTab').tabs('select', self.element.data('mad'));

            var opt = {
                modal: true,
                autoOpen: false,
                height: 400,
                width: 495,
                bgiframe: true,
                buttons: { 'Save': function () {
                    var selectedTab = $addressForm.find('#addressTab').tabs('option', 'selected');
                    self.element.data('mad', selectedTab.toString());
                    var selAd;
                    switch (selectedTab) {
                        case 0: selAd = '1' + i + '207'; break;
                        case 1: selAd = '1' + i + '220'; break;
                        case 2: selAd = '1' + i + '264'; break;
                    }
                    self.element.find('.sd-id-1' + i + '284:input:button').val($('body').find('#entitymap').data(selAd).replace(':', ''));

                    saveSelectedAddress(selectedTab, self.options.entity);
                    saveAddress($addressForm, self.options.entity);
                }
                }
                //open: function() {
                //     $('#contactNameForm').load(fnText);
                // }
            };

            $addressForm.dialog(opt);

            $addressForm.dialog('option', 'title', self.element.data('1' + i + '250'));
            $addressForm.dialog('open');

            var business = self.element.data('business');
            if (business != null) {
                $addressForm.find('.sd-id-1' + i + '201_1:input').val(business.street1);
                $addressForm.find('.sd-id-1' + i + '201_2:input').val(business.street2);
                $addressForm.find('.sd-id-1' + i + '201_3:input').val(business.street3);
                $addressForm.find('.sd-id-1' + i + '202:input').val(business.city);
                $addressForm.find('.sd-id-1' + i + '203:input').val(business.region);
                $addressForm.find('.sd-id-1' + i + '204:input').val(business.country);
                $addressForm.find('.sd-id-1' + i + '205:input').val(business.postcode);
            }

            var home = self.element.data('home');
            if (home != null) {
                $addressForm.find('.sd-id-1' + i + '214_1:input').val(self.element.data('home').street1);
                $addressForm.find('.sd-id-1' + i + '214_2:input').val(self.element.data('home').street2);
                $addressForm.find('.sd-id-1' + i + '214_3:input').val(self.element.data('home').street3);
                $addressForm.find('.sd-id-1' + i + '215:input').val(self.element.data('home').city);
                $addressForm.find('.sd-id-1' + i + '216:input').val(self.element.data('home').region);
                $addressForm.find('.sd-id-1' + i + '217:input').val(self.element.data('home').country);
                $addressForm.find('.sd-id-1' + i + '218:input').val(self.element.data('home').postcode);
            }

            var other = self.element.data('other');
            if (other != null) {
                $addressForm.find('.sd-id-1' + i + '258_1:input').val(self.element.data('other').street1);
                $addressForm.find('.sd-id-1' + i + '258_2:input').val(self.element.data('other').street2);
                $addressForm.find('.sd-id-1' + i + '258_3:input').val(self.element.data('other').street3);
                $addressForm.find('.sd-id-1' + i + '259:input').val(self.element.data('other').city);
                $addressForm.find('.sd-id-1' + i + '260:input').val(self.element.data('other').region);
                $addressForm.find('.sd-id-1' + i + '261:input').val(self.element.data('other').country);
                $addressForm.find('.sd-id-1' + i + '262:input').val(self.element.data('other').postcode);
            }
        },

        _editCategories: function () {

            $('#categoryDialog').dialog('destroy');

            var self = this;

            var opt = {
                modal: true,
                autoOpen: false,
                height: 300,
                width: 420,
                bgiframe: true,
                title: 'Categories',
                buttons: { 'Save': function () {
                    saveContactCategory(self.options.entity, $('#categoryDialog'));
                }
                }
            };

            $('#categoryDialog').dialog(opt);

            $('#categoryDialog').find('input:checkbox').attr('checked', false);

            $('#categoryDialog').dialog('open');

            var url = "/Services/DefaultService.svc/GetContactCategory";
            var jsonData = { "contactserviceid": this.element.data('cid') };

            $.ajax({
                type: "POST",
                url: url,
                data: JSON.stringify(jsonData),

                dataType: "json",
                success: function (msg) {
                    for (var i = 0; i < msg.d.length; i++) {
                        $('.sd-cat-' + msg.d[i] + ':input[type="checkbox"]').attr('checked', 'true');
                    }
                }
            });

        },


        _$mapids: function () {
            var self = this;
            var options = self.options;
            var $mapids;

            if (options.entity == 'appointment') {
                $mapids = [
            { map: 15217, lSize: 1, iSize: 3, iType: 'text', txt: 'Subject', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
            { map: 15223, lSize: 1, iSize: 3, iType: 'resource', txt: 'Resource:', bDiv: true, eDiv: true, lClass: '', iClass: ' ddchecklist', lType: 'label', beginFs: false, beginSp: false },




            { map: 15214, lSize: 1, iSize: 3, iType: 'appointment', txt: 'Start:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

            { map: 15207, lSize: 1, iSize: 3, iType: 'appointment', txt: 'End:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

            { map: 15201, lSize: 1, iSize: 3, iType: 'select', txt: 'Category:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

            { map: 15202, lSize: 1, iSize: 3, iType: 'select', txt: 'Busy State:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

            { map: 15224, lSize: 1, iSize: 3, iType: 'select', txt: 'Location:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false }, // TAKE A LOOK

            {map: 15222, lSize: 1, iSize: 3, iType: 'text', txt: 'Importance:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 15261, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: '', beginFs: true, beginSp: true },
{ map: 15222, lSize: 1, iSize: 3, iType: 'text', txt: 'Importance:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: true },
{ map: 15222, lSize: 1, iSize: 3, iType: 'text', txt: 'Importance:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: true },


{ map: 15290, lSize: 1, iSize: 3, iType: 'text', txt: 'Created By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },

{ map: 15291, lSize: 1, iSize: 3, iType: 'text', txt: 'Created On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 15292, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 15293, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 15394, lSize: 1, iSize: 3, iType: 'text', txt: 'Record ID', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false }
            ];
            }
            else if (options.entity == 'account') {
                $mapids = [

{ map: 12250, lSize: 1, iSize: 3, iType: 'text', txt: 'Account Name', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: true },
{ map: 12246, lSize: 1, iSize: 3, iType: 'text', txt: 'Contact', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: false, beginSp: false },
{ map: 12248, lSize: 1, iSize: 3, iType: 'select', txt: 'Sector', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12247, lSize: 1, iSize: 3, iType: 'select', txt: 'Region', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12284, lSize: 1, iSize: 3, iType: 'textarea', txt: 'Address', bDiv: true, eDiv: true, lClass: '', iClass: ' sd-address', lType: 'button', beginFs: true, beginSp: false },
{ map: 12331, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph1', iClass: ' sd-ph1', lType: 'button', beginFs: true, beginSp: true },
{ map: 12332, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph2', iClass: ' sd-ph2', lType: 'button', beginFs: false, beginSp: false },
{ map: 12333, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph3', iClass: ' sd-ph3', lType: 'button', beginFs: false, beginSp: false },
{ map: 12230, lSize: 1, iSize: 3, iType: 'select', txt: 'Contact Method', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12227, lSize: 1, iSize: 3, iType: 'text', txt: 'Web Address:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12233, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: true, eDiv: false, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12231, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: false, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12232, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: true, eDiv: false, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12234, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: false, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12302, lSize: 1, iSize: 3, iType: 'text', txt: 'Categories', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: true },
{ map: 12224, lSize: 1, iSize: 3, iType: 'select', txt: 'Active', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12225, lSize: 1, iSize: 3, iType: 'select', txt: 'Status', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12226, lSize: 1, iSize: 3, iType: 'select', txt: 'Rating', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12229, lSize: 1, iSize: 3, iType: 'select', txt: 'Lead Source', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12228, lSize: 1, iSize: 3, iType: 'text', txt: 'Refered By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12239, lSize: 1, iSize: 2, iType: 'text', txt: 'Enquired', bDiv: true, eDiv: true, lClass: '', iClass: 'dtp', lType: 'label', beginFs: true, beginSp: false },
{ map: 12240, lSize: 1, iSize: 2, iType: 'text', txt: 'Anniversary', bDiv: true, eDiv: true, lClass: '', iClass: 'dtp', lType: 'label', beginFs: false, beginSp: false },
{ map: 12257, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: '', beginFs: true, beginSp: true },
{ map: 12257, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: '', beginFs: true, beginSp: true },
{ map: 12290, lSize: 1, iSize: 3, iType: 'text', txt: 'Created By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 12291, lSize: 1, iSize: 3, iType: 'text', txt: 'Created On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12292, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 12293, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 12294, lSize: 1, iSize: 3, iType: 'text', txt: 'Record ID', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false}];

            }

            else if (options.entity == 'contact') {
                $mapids = [
            { map: 11250, lSize: 1, iSize: 3, iType: 'text', txt: 'Name', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: true },
            { map: 11222, lSize: 1, iSize: 3, iType: 'text', txt: 'Job Title', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
            { map: 11301, lSize: 1, iSize: 3, iType: 'text', txt: 'Account', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: false, beginSp: false },
{ map: 11223, lSize: 1, iSize: 3, iType: 'text', txt: 'Company Name', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11284, lSize: 1, iSize: 3, iType: 'textarea', txt: 'Address', bDiv: true, eDiv: true, lClass: '', iClass: ' sd-address', lType: 'button', beginFs: false, beginSp: false },
{ map: 11331, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph1', iClass: ' sd-ph1', lType: 'button', beginFs: true, beginSp: true },
{ map: 11332, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph2', iClass: ' sd-ph2', lType: 'button', beginFs: false, beginSp: false },
{ map: 11333, lSize: 1, iSize: 3, iType: 'phone', txt: 'Phone', bDiv: true, eDiv: true, lClass: ' sd-ph3', iClass: ' sd-ph3', lType: 'button', beginFs: false, beginSp: false },
{ map: 11230, lSize: 1, iSize: 3, iType: 'select', txt: 'Prefered Contact Method', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 11248, lSize: 1, iSize: 3, iType: 'select', txt: 'Type of Entity', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11227, lSize: 1, iSize: 3, iType: 'text', txt: 'Web Address:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 11233, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: true, eDiv: false, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 11231, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: false, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11232, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: true, eDiv: false, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11234, lSize: 1, iSize: 1, iType: 'checkbox', txt: 'Do Not', bDiv: false, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11235, lSize: 1, iSize: 3, iType: 'text', txt: 'Department', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 11237, lSize: 1, iSize: 3, iType: 'text', txt: 'Manager', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11238, lSize: 1, iSize: 3, iType: 'text', txt: 'Assistant', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11236, lSize: 1, iSize: 3, iType: 'text', txt: 'Profession', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11239, lSize: 1, iSize: 2, iType: 'text', txt: 'Birthday', bDiv: true, eDiv: true, lClass: '', iClass: 'dtp', lType: 'label', beginFs: true, beginSp: false },
{ map: 11240, lSize: 1, iSize: 2, iType: 'text', txt: 'Anniversary', bDiv: true, eDiv: true, lClass: '', iClass: 'dtp', lType: 'label', beginFs: false, beginSp: false },
{ map: 11302, lSize: 1, iSize: 3, iType: 'text', txt: 'Categories', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: true },
{ map: 11224, lSize: 1, iSize: 3, iType: 'select', txt: 'Prefered Contact', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11225, lSize: 1, iSize: 3, iType: 'select', txt: 'Status', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11226, lSize: 1, iSize: 3, iType: 'select', txt: 'Rating', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11229, lSize: 1, iSize: 3, iType: 'select', txt: 'Lead Source', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 11228, lSize: 1, iSize: 3, iType: 'text', txt: 'Refered By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11257, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: '', beginFs: true, beginSp: true },
{ map: 11290, lSize: 1, iSize: 3, iType: 'text', txt: 'Created By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 11291, lSize: 1, iSize: 3, iType: 'text', txt: 'Created On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11292, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 11293, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11294, lSize: 1, iSize: 3, iType: 'text', txt: 'Record ID', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false}];
            }
            else if (options.entity == 'opportunity') {
                $mapids = [
{ map: 13201, lSize: 1, iSize: 3, iType: 'text', txt: 'Title', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },

{ map: 13246, lSize: 1, iSize: 3, iType: 'text', txt: 'Linked To', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: false },
{ map: 11276, lSize: 1, iSize: 3, iType: 'text', txt: 'Mobile:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11208, lSize: 1, iSize: 3, iType: 'text', txt: 'Email:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 13225, lSize: 1, iSize: 3, iType: 'select', txt: 'Status', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 13248, lSize: 1, iSize: 3, iType: 'select', txt: 'Type of Enquiry', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 13247, lSize: 1, iSize: 3, iType: 'select', txt: 'Territory', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 13203, lSize: 1, iSize: 2, iType: 'text', txt: 'Start Time', bDiv: true, eDiv: true, lClass: '', iClass: ' dtp', lType: 'label', beginFs: false, beginSp: false },

{ map: 13202, lSize: 1, iSize: 3, iType: 'text', txt: 'Registered', bDiv: true, eDiv: true, lClass: '', iClass: 'dtp', lType: 'label', beginFs: true, beginSp: true },

{ map: 13229, lSize: 1, iSize: 3, iType: 'select', txt: 'Lead Source', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 13226, lSize: 1, iSize: 3, iType: 'select', txt: 'Rating', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 13224, lSize: 1, iSize: 3, iType: 'select', txt: 'Active State', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 13227, lSize: 1, iSize: 3, iType: 'text', txt: 'Entered by', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 13207, lSize: 1, iSize: 3, iType: 'text', txt: 'Asigned To', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: false, beginSp: false },

{ map: 13252, lSize: 1, iSize: 3, iType: 'text', txt: 'Competitors', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 11302, lSize: 1, iSize: 3, iType: 'text', txt: 'Categories', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: false },

{ map: 13296, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: '', beginFs: true, beginSp: true },

{ map: 13290, lSize: 1, iSize: 3, iType: 'text', txt: 'Created By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },

{ map: 13291, lSize: 1, iSize: 3, iType: 'text', txt: 'Created On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },

{ map: 13292, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 13293, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },

{ map: 11394, lSize: 1, iSize: 3, iType: 'text', txt: 'Record ID', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false }


            ];
            }
            else if (options.entity == 'support') {
                $mapids = [
{ map: 17201, lSize: 1, iSize: 3, iType: 'text', txt: 'Subject', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 17246, lSize: 1, iSize: 3, iType: 'text', txt: 'Linked To', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: true, beginSp: false },
{ map: 11276, lSize: 1, iSize: 3, iType: 'text', txt: 'Mobile:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 11208, lSize: 1, iSize: 3, iType: 'text', txt: 'Email:', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17225, lSize: 1, iSize: 3, iType: 'select', txt: 'Status', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 17248, lSize: 1, iSize: 3, iType: 'select', txt: 'Time of Day', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17226, lSize: 1, iSize: 3, iType: 'select', txt: 'Priority', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17230, lSize: 1, iSize: 3, iType: 'select', txt: 'Contact Via', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17202, lSize: 1, iSize: 3, iType: 'text', txt: 'Date Registered', bDiv: true, eDiv: true, lClass: '', iClass: ' dtp', lType: 'label', beginFs: true, beginSp: true },
{ map: 17205, lSize: 1, iSize: 3, iType: 'text', txt: 'Duration', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17203, lSize: 1, iSize: 3, iType: 'text', txt: 'Start Date', bDiv: true, eDiv: true, lClass: '', iClass: ' dtp', lType: 'label', beginFs: false, beginSp: false },
{ map: 17207, lSize: 1, iSize: 3, iType: 'text', txt: 'Assigned', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17204, lSize: 1, iSize: 3, iType: 'text', txt: 'Closed Date', bDiv: true, eDiv: true, lClass: '', iClass: ' dtp', lType: 'label', beginFs: false, beginSp: false },
{ map: 17246, lSize: 1, iSize: 3, iType: 'text', txt: 'Asigned To', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: false, beginSp: false },
{ map: 17224, lSize: 1, iSize: 3, iType: 'select', txt: 'Contract Type', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 17247, lSize: 1, iSize: 3, iType: 'select', txt: 'Department', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17229, lSize: 1, iSize: 3, iType: 'select', txt: 'Source', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 17302, lSize: 1, iSize: 3, iType: 'text', txt: 'Categories', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'button', beginFs: false, beginSp: false },
{ map: 17257, lSize: 1, iSize: 3, iType: 'comments', txt: 'Comments', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 17290, lSize: 1, iSize: 3, iType: 'text', txt: 'Created By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: true },
{ map: 17291, lSize: 1, iSize: 3, iType: 'text', txt: 'Created On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17292, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified By', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false },
{ map: 17293, lSize: 1, iSize: 3, iType: 'text', txt: 'Modified On', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: false, beginSp: false },
{ map: 17294, lSize: 1, iSize: 3, iType: 'text', txt: 'Record ID', bDiv: true, eDiv: true, lClass: '', iClass: '', lType: 'label', beginFs: true, beginSp: false}];

            }


            return $mapids;
        },

        _entityMapid: function (entity) {
            var $mapids;
            switch (entity) {
                case 'appointment':
                    {
                        $mapids = [15217, 15223, 15210, 15214, 15207, 15201, 15202, 15224, 15222, 15261, 15299];
                        return $mapids;
                    }
                case 'contact':
                    {
                        $mapids = [11250, 11256, 11222, 11301, 11223, 11207, //general
                        11331, 11332, 11333, 11230, 11248, 11227, 11233, 11231, 11232, 11234, //Phone and Email
                        11235, 11237, 11238, 11236, 11239, 11240, //Job and Personal

                        11302, 11224, 11225, 11226, 11229, 11228, //financial and marketin

                        11306, //comments
                        11299 //properties
                        ];
                        return $mapids;
                    }
            }
        },

        _computeOptions: function () {
        }


    });

    $.extend($.ui.smartForm, {
        version: '1.0.1',
        defaults: {
            entity: 'appointment',
            isNew: false,
            readOnly: false,
            owner: undefined
        }
    });
})(jQuery);
            
            
