Array.prototype.size = function(){ return this.length;}
Array.prototype.elementAt = function(pos){ return this[pos];}
Array.prototype.indexOf = function(elm){var res=-1;	for(var i=0;i<this.size() && res<0;i++){if(elm == this[i]) res=i;};return res;}
Array.prototype.lastElement = function(){ return this[this.length-1];}
Array.prototype.contains = function (elm){ return this.indexOf(elm)>-1;}
Array.prototype.emptyArray = function(){ this.length = 0;}
Array.prototype.addElement = function(elm){	this[this.size()] = elm;return elm;}
Array.prototype.insertElementAt = function(elm,pos){if(pos>=this.size()){this.addElement(elm);}else{	for(var i=this.size()-1;i>=pos;i--)	this[i+1] = this[i];this[pos] = elm;};return elm;}
Array.prototype.push = function() {	for(i = 0 ; i<arguments.length; i++) this[this.length] = arguments[i];return this.length;}
Array.prototype.pop = function() {lastElm = this[this.length-1];this.length = Math.max(this.length-1,0);return lastElm;}
Array.prototype.shift = function() { elm0 = this[0]; this.reverse(); this.length = Math.max(this.length-1,0); this.reverse(); return elm0;}
Array.prototype.unshift = function() { this.reverse(); for(var i=arguments.length-1; i>=0; i--){this[this.length] = arguments[i];}; this.reverse(); return this.length;}
Array.prototype.removeElementAt = function(pos){var elm = this.elementAt(pos);for(var i=pos; i < this.size()-1; i++){this[i] = this[i+1];};this.length--;	return elm;}
Array.prototype.removeElement = function(elm){var idx = this.indexOf(elm);if (idx>-1) return this.removeElementAt(idx);	return null;}
Array.prototype.swap = function(idx0,idx1) { var idx1value = this[idx1]; this[idx1] = this[idx0]; this[idx0] = idx1value; return this; }
Array.prototype.clone = function() { var cloned = new Array(); for(var i=0; i < this.size(); i++) {cloned.addElement(this[i]);}; return cloned;}
Array.prototype.subIndex = function(elm){var res = -1;	for(i = 0 ; i < this.length ; i++){	if(this[i].contains(elm)) res = i;};return res;}
Array.prototype.findSubIndex = function(elm){var res=-1;for(i = 0 ; i < this.length ; i++){	if(this[i].contains(elm)){ for(i = 0 ; i < eval(elm).length ; i++){	tmp = eval(elm);eval("go"+tmp[2]+"("+tmp[1]+",true);");};}}}
Array.prototype.splice = function(start,del) { var arg = arguments; if (typeof(start)!='number') start=0; if (start < 0) start = Math.max(0, this.length + start); if (start > this.length) {if (arg.length > 2) {start = this.length;} else {return [];};}; if (arg.length < 2) del = this.length - start; del = (typeof(del) == 'number')? Math.max(0,del) : 0; var removeArray = this.slice(start,start+del); var endArray = this.slice(start+del); this.length = start; for (var i=2; i < arg.length; i++) {this[this.length] = arg[i];}; for (var i=0; i < endArray.length; i++) {this[this.length] = endArray[i];}; return removeArray;}