/*
 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.html or http://ckeditor.com/license
 */

(function () {
    function a(e, f) {
        var g;
        try {
            g = e.getSelection().getRanges()[0];
        } catch (h) {
            return null;
        }
        g.shrink(CKEDITOR.SHRINK_TEXT);
        return g.getCommonAncestor().getAscendant(f, 1);
    };
    var b = function (e) {
        return e.type == CKEDITOR.NODE_ELEMENT && e.is('li');
    }, c = {a: 'lower-alpha', A: 'upper-alpha', i: 'lower-roman', I: 'upper-roman', 1: 'decimal', disc: 'disc', circle: 'circle', square: 'square'};

    function d(e, f) {
        var g = e.lang.list;
        if (f == 'bulletedListStyle')return{title: g.bulletedTitle, minWidth: 300, minHeight: 50, contents: [
            {id: 'info', accessKey: 'I', elements: [
                {type: 'select', label: g.type, id: 'type', align: 'center', style: 'width:150px', items: [
                    [g.notset, ''],
                    [g.circle, 'circle'],
                    [g.disc, 'disc'],
                    [g.square, 'square']
                ], setup: function (i) {
                    var j = i.getStyle('list-style-type') || c[i.getAttribute('type')] || i.getAttribute('type') || '';
                    this.setValue(j);
                }, commit: function (i) {
                    var j = this.getValue();
                    if (j)i.setStyle('list-style-type', j); else i.removeStyle('list-style-type');
                }}
            ]}
        ], onShow: function () {
            var i = this.getParentEditor(), j = a(i, 'ul');
            j && this.setupContent(j);
        }, onOk: function () {
            var i = this.getParentEditor(), j = a(i, 'ul');
            j && this.commitContent(j);
        }}; else if (f == 'numberedListStyle') {
            var h = [
                [g.notset, ''],
                [g.lowerRoman, 'lower-roman'],
                [g.upperRoman, 'upper-roman'],
                [g.lowerAlpha, 'lower-alpha'],
                [g.upperAlpha, 'upper-alpha'],
                [g.decimal, 'decimal']
            ];
            if (!CKEDITOR.env.ie || CKEDITOR.env.version > 7)h.concat([
                [g.armenian, 'armenian'],
                [g.decimalLeadingZero, 'decimal-leading-zero'],
                [g.georgian, 'georgian'],
                [g.lowerGreek, 'lower-greek']
            ]);
            return{title: g.numberedTitle, minWidth: 300, minHeight: 50, contents: [
                {id: 'info', accessKey: 'I', elements: [
                    {type: 'hbox', widths: ['25%', '75%'], children: [
                        {label: g.start, type: 'text', id: 'start', validate: CKEDITOR.dialog.validate.integer(g.validateStartNumber), setup: function (i) {
                            var j = i.getFirst(b).getAttribute('value') || i.getAttribute('start') || 1;
                            j && this.setValue(j);
                        }, commit: function (i) {
                            var j = i.getFirst(b), k = j.getAttribute('value') || i.getAttribute('start') || 1;
                            i.getFirst(b).removeAttribute('value');
                            var l = parseInt(this.getValue(), 10);
                            if (isNaN(l))i.removeAttribute('start'); else i.setAttribute('start', l);
                            var m = j, n = k, o = isNaN(l) ? 1 : l;
                            while ((m = m.getNext(b)) && n++) {
                                if (m.getAttribute('value') == n)m.setAttribute('value', o + n - k);
                            }
                        }},
                        {type: 'select', label: g.type, id: 'type', style: 'width: 100%;', items: h, setup: function (i) {
                            var j = i.getStyle('list-style-type') || c[i.getAttribute('type')] || i.getAttribute('type') || '';
                            this.setValue(j);
                        }, commit: function (i) {
                            var j = this.getValue();
                            if (j)i.setStyle('list-style-type', j); else i.removeStyle('list-style-type');
                        }}
                    ]}
                ]}
            ], onShow: function () {
                var i = this.getParentEditor(), j = a(i, 'ol');
                j && this.setupContent(j);
            }, onOk: function () {
                var i = this.getParentEditor(), j = a(i, 'ol');
                j && this.commitContent(j);
            }};
        }
    };
    CKEDITOR.dialog.add('numberedListStyle', function (e) {
        return d(e, 'numberedListStyle');
    });
    CKEDITOR.dialog.add('bulletedListStyle', function (e) {
        return d(e, 'bulletedListStyle');
    });
})();
