      this.format = this.schema.format;
      if(!this.format && this.schema.media && this.schema.media.type) {
        this.format = this.schema.media.type.replace(/(^(application|text)\/(x-)?(script\.)?)|(-source$)/g,'');
-@@ -2040,7 +2117,22 @@
+@@ -2014,7 +2091,7 @@
+       ) {
+         this.input_type = this.format;
+         this.source_code = true;
+-        
++
+         this.input = this.theme.getTextareaInput();
+       }
+       // HTML5 Input type
+@@ -2028,7 +2105,7 @@
+       this.input_type = 'text';
+       this.input = this.theme.getFormInputField(this.input_type);
+     }
+-    
++
+     // minLength, maxLength, and pattern
+     if(typeof this.schema.maxLength !== "undefined") this.input.setAttribute('maxlength',this.schema.maxLength);
+     if(typeof this.schema.pattern !== "undefined") this.input.setAttribute('pattern',this.schema.pattern);
+@@ -2040,17 +2117,31 @@
      else {
        if(this.options.input_width) this.input.style.width = this.options.input_width;
      }

+                          if((typeof model[i][0] === 'object' || typeof model[i][model[i].length - 1] === 'object') && (!isNumber(delPro) || i == rootLevel)){
+                              for(var k = 0; k < model[i].length; k++){
+                                  if(i == rootLevel){
+                                      if(k == objLevel){ 
+                                          if(model[i][k][delPro] !== undefined){
+                                              arrayObjStack = i;
+                                          }
+                                          self.removeKeyFromStack(model[i][k], parentLevelObj,delPro,objLevel,rootLevel,objectDelete);
+                                       }
+                                      if(objectDelete){
+                                          delete  model[i][delPro]; 
+                                          model[i][delPro] = '';
+                                       }
+                                  }else{

     this.control = this.theme.getFormControl(this.label, this.input, this.description);
     this.container.appendChild(this.control);
 
@@ -4993,12 +5737,97 @@
       if(this.schema.options && this.schema.options.select2_options) options = $extend(options,this.schema.options.select2_options);
       this.select2 = window.jQuery(this.input).select2(options);
       var self = this;
