function ArrayList_Add(element){
    var newArray = new Array(this.array.length + 1);
    for (var i=0; i<this.array.length; i++){
        newArray[i] = this.array[i];
    }
    newArray[this.array.length] = element;
    this.array = newArray;
}
function ArrayList_RemoveAt(index){
    var newArray = new Array(this.array.length - 1);
    var flag = 0;
    for (var i=0; i<this.array.length; i++){
        if (flag == 1){
            newArray[i-1] = this.array[i];
        }else{
            if (i==index){
                flag = 1;
            }else{
                newArray[i] = this.array[i];
            }
        }
    }
    this.array = newArray;
}
function ArrayList_Remove(element){
    var newArray = new Array(this.array.length - 1);
    var flag = 0;
    for (var i=0; i<this.array.length; i++){
        if (flag == 1){
            newArray[i-1] = this.array[i];
        }else{
            if (this.array[i]==element){
                flag = 1;
            }else{
                newArray[i] = this.array[i];
            }
        }
    }
    this.array = newArray;
}
function ArrayList_Get(index){
    return this.array[index];
}
function ArrayList_Set(index, value){
    this.array[index] = value;
}
function ArrayList_Length(){
    return this.array.length;
}
function ArrayList_RemoveAll(){
    this.array = new Array(0);
}
function ArrayList_merge(separator){
    var mergedValues = "";
    for (var i=0; i<this.array.length; i++){
        if (i!=0){
            mergedValues += separator;
        }
        mergedValues += this.array[i];
    }
    return mergedValues;
}
function ArrayList(){
    this.array = new Array(0);
    this.add = ArrayList_Add;
    this.remove = ArrayList_Remove;
    this.get =  ArrayList_Get;
    this.length = ArrayList_Length;
    this.removeAt = ArrayList_RemoveAt;
    this.removeAll = ArrayList_RemoveAll;
    this.merge = ArrayList_merge;
    this.set = ArrayList_Set;

}
