try {

    if (top.location.href != window.location.href) {
        App.Renderer = top.App.Renderer;
        throw('exit');
    }

    App.Renderer = {

        customerStatus: function(in_value)
        {
            var status;

            if (in_value == 'Y') {
                status = 'active';
            } else if (in_value == 'S') {
                status = 'suspended';
            } else if (in_value == 'H') {
                status = 'onhold';
            } else {
                status = 'inactive';
            }

            return String.format('<div class="icon-small-customer-status-{0}"></div>', status);
        },

        ticketEscalation: function(in_value)
        {
            var escalation;

            if (in_value == '1 - high') {
                escalation = 'high';
            } else if (in_value == '2 - elevated') {
                escalation = 'elevated';
            } else if (in_value == '3 - normal') {
                escalation = 'normal';
            } else {
                escalation = 'low';
            }

            return String.format('<div class="icon-small-ticket-escalation-{0}"></div>', escalation);
        },

        status: function(in_value)
        {
            var status;

            if (in_value == 'Y' || in_value === true || in_value == 1) {
                status = 'true';
            } else {
                status = 'false';
            }

            return String.format('<div class="icon-small-{0}"></div>', status);
        },

        customerStatusAsText: function(in_value)
        {
            var status;

            if (in_value == 'Y') {
                return '<span style="color: green">Active</a>';
            } else if (in_value == 'S') {
                return 'Suspended';
            } else if (in_value == 'H') {
                return 'On Hold';
            } else {
                return 'Inactive';
            }
        },

        phone: function(in_value)
        {
            in_value = in_value + '';

            if (in_value.length < 10) {
                return in_value;
            }

            return "(" + in_value.substring(0, 3) + ") "
                 + in_value.substring(3, 6) + "-"
                 + in_value.substring(6, 10)
                 + (in_value.lenght > 10 ? ' - ' + in_value.substring(10) : '');
        },

        percent: function(in_value)
        {
            return (Math.round(in_value * 10) / 10) + '%';
        },

        numberOrDash: function(in_value)
        {
            return in_value > 0 ? in_value : '-';
        },

        money: function(in_value)
        {
            return Ext.util.Format.usMoney(in_value);
        },

        address: function(in_values)
        {
            if (!in_values.city && !in_values.state && !in_values.zip) {
                return null;
            }
            var parts = [];
            if (in_values.addr1 && in_values.addr1.length > 0) {
                parts.push(in_values.addr1);
            }
            if (in_values.addr2 && in_values.addr2.length > 0) {
                parts.push(in_values.addr2);
            }

            parts.push(in_values.city + ', ' + in_values.state + ' ' + in_values.zip);

            return parts.join('<br />');
        },

        date: function(in_value, in_includeTime)
        {
            var format = 'M j Y';

            if (in_includeTime == true) {
                format += ' g:i a';
            }

            return Ext.util.Format.date(in_value, format);
        },

        dateTime: function(in_value)
        {
            return App.Renderer.date(in_value, true);
        },

        date2: function(in_value)
        {
          if ( in_value === null)
              return "";
          var dd = in_value.split(" ");
          return "" + dd[0] + " " + dd[1] + " " + dd[2];
        },

        mac: function(value) {
            value = value+'';
            if (value.length < 12)
                return value;
            else {
                /*  format: IEEE 802 */
                value = value.substring(0,2)+ ":" +
                    value.substring(2,4) + ":" +
                    value.substring(4,6) + ":" +
                    value.substring(6,8) + ":" +
                    value.substring(8,10) + ":" +
                    value.substring(10,12);

                /* optional formatting */
        /*      value = value.substring(0,4)+ "." +
                    value.substring(4,8) + "." +
                    value.substring(8,12);
        */
                return String.format('<span class="mac_addr">{0}</span>', value).toLowerCase();
            }
        },

        email: function(value){
            if(value.length)
                return String.format('<a href="mailto:{0}"><strong>{0}</strong></a>', value);
            else
                return value;
        },

        bold: function(value){
            return String.format('<b>{0}</b>', value);
        },

        big: function(value){
            return String.format('<span class="big">{0}</span>', value);
        },

        topicPlain: function(value){
            return String.format('<b><i>{0}</i></b>', value);
        },

        last: function(value, p, r){
            return String.format('{0}<br/>by {1}', value.dateFormat('M j, Y, g:i a'), r.data['author']);
        },

        zeroNull: function(value){
            return String.format(value==0?'':value);
        },

        lastPlain: function(value){
            return value.dateFormat('M j, Y, g:i a');
        },

        topic: function(value, p, record){
            return String.format('<b>{0}</b>{1}', value, record.data['excerpt']);
        },

        topicPlain: function(value){
            return String.format('<b><i>{0}</i></b>', value);
        },

        last: function(value, p, r){
            return String.format('{0}<br/>by {1}', value.dateFormat('M j, Y, g:i a'), r.data['author']);
        }
    }
} catch (err) {}
