var nj = function(x) {
  this.array = function(x) {
    function dim(a) {
        var dim = [];
        for (;;) {
            dim.push(a.length);

            if (Array.isArray(a[0])) {
                a = a[0];
            } else {
                break;
            }
        }
        return dim;
    }

    this.insert = function() {
      var value = arguments[arguments.length - 1];

      // for (var i = 0; i < arguments.length - 1; i++) {
      //   alert(arguments[i]);
      // }

      x[arguments[0]][arguments[1]] = value;
    }

    this.matrix = x;
    this.shape = "(" + dim(x) + ")";
    this.type = typeof(x);

  };
}

@@ -16,16 +16,107 @@
 on(x) %7B%0A
+  /**%0A  * nj.array%0A  * Return a new array of given shape and type, filled with zeros.%0A  */%0A
   this.a
@@ -149,16 +149,20 @@
 unction 
+get_
 dim(a) %7B
@@ -158,26 +158,24 @@
 et_dim(a) %7B%0A
-  
       var di
@@ -188,18 +188,16 @@
 ;%0A      
-  
 for (;;)
@@ -195,28 +195,24 @@
  for (;;) %7B%0A
-    
         dim.
@@ -236,20 +236,16 @@
         
-    
 if (Arra
@@ -273,22 +273,16 @@
         
-      
 a = a%5B0%5D
@@ -291,20 +291,16 @@
         
-   
- 
 %7D else %7B
@@ -300,22 +300,16 @@
  else %7B%0A
-      
         
@@ -321,32 +321,26 @@
 ak;%0A        
-    %7D%0A  
+%7D%0A
       %7D%0A    
@@ -341,18 +341,16 @@
 %7D%0A      
-  
 return d
@@ -551,16 +551,26 @@
 %0A%0A      
+this.matri
 x%5Bargume
@@ -651,20 +651,34 @@
 = %22(%22 + 
-dim(
+get_dim(this.matri
 x) + %22)%22
@@ -711,11 +711,675 @@
 );%0A%0A  %7D;
+%0A%0A  /**%0A  * nj.zeros%0A  * Return a new array of given shape and type, filled with zeros.%0A  */%0A  this.zeros = function() %7B%0A    function get_dim(a) %7B%0A      var dim = %5B%5D;%0A      for (;;) %7B%0A        dim.push(a.length);%0A%0A        if (Array.isArray(a%5B0%5D)) %7B%0A          a = a%5B0%5D;%0A        %7D else %7B%0A          break;%0A        %7D%0A      %7D%0A      return dim;%0A    %7D%0A%0A    function set_zeros(dim) %7B%0A      var temp = %5B%5D;%0A%0A      for (var i = 0; i %3C dim%5B0%5D; ++i) %7B%0A        temp.push(dim.length == 1 ? 0 : set_zeros(dim.slice(1)));%0A      %7D%0A%0A      return temp;%0A    %7D%0A%0A    this.matrix = set_zeros(arguments%5B0%5D);%0A    this.shape = %22(%22 + get_dim(this.matrix) + %22)%22;%0A    this.type = typeof(x);%0A  %7D;
 %0A%7D%0A

Add zeros method