// JavaScript Document

Array.prototype.moveElement = function(element, pos){
    var i = this.length-1;
    var origIndex = null;
    while(origIndex == null && i >= 0){
        if(this[i] == element){
            origIndex = i;
        }
        i--;
    }
	newArray = this;
    if(origIndex != null && pos != origIndex){
        newArray = newArray.removeElement(element);
        newArray = newArray.insertElement(element, pos);
    }
    return newArray;
};


Array.prototype.insertElement = function(element, pos){
    var arr = new Array(this.length+1);
    var i = 0;
    //alert("Array: "+array+"\nElement: "+element+"\npos:"+pos);
    if(pos >= this.length){
        while(i <= this.length-1){
            arr[i] = this[i];
            i++;
        }
        arr[this.length] = element;
    }else{
        while(i <= this.length-1){
            
            if(i<pos){
                arr[i] = this[i];
            }else if(i == pos){
                arr[i] = element;
                arr[i+1] = this[i];
            }else if(i > pos){
                arr[i+1] = this[i];
            }
            //alert("Inserting: "+arr);
            i++;
        }
    }
    return arr;
};
Array.prototype.removeElement = function(element){
    var i = this.length-1;
    var index = null;
    while(index == null && i >= 0){
        if(this[i] == element){
            index = i;
        }
        i--;
    }
    return this.removeByIndex(index);
};

Array.prototype.removeByIndex = function(index){
	i = 0;
	var arr = new Array(this.length-1);
    while(i <= this.length-1){
        if(i<index){
            arr[i] = this[i];
        }else if(i > index){
            arr[i-1] = this[i];
        }
        i++;
    }
    return arr;
	
};
/*
Utils.arrayMoveElement = function(array, element, pos){
    var i = array.length-1;
    var origIndex = null;
    while(origIndex == null && i >= 0){
        if(array[i] == element){
            origIndex = i;
        }
        i--;
    }
    if(origIndex != null && pos != origIndex){
        array = Utils.arrayRemoveElement(array, element);
        array = Utils.arrayInsertElement(array, element, pos);
    }
    return array;
};


Utils.arrayInsertElement = function(array, element, pos){
    var arr = new Array(array.length+1);
    var i = 0;
    //alert("Array: "+array+"\nElement: "+element+"\npos:"+pos);
    if(pos >= array.length){
        while(i <= array.length-1){
            arr[i] = array[i];
            i++;
        }
        arr[array.length] = element;
    }else{
        while(i <= array.length-1){
            
            if(i<pos){
                arr[i] = array[i];
            }else if(i == pos){
                arr[i] = element;
                arr[i+1] = array[i];
            }else if(i > pos){
                arr[i+1] = array[i];
            }
            //alert("Inserting: "+arr);
            i++;
        }
    }
    return arr;
};
Utils.arrayRemoveElement = function(array, element){
    var i = array.length-1;
    var index = null;
    while(index == null && i >= 0){
        if(array[i] == element){
            index = i;
        }
        i--;
    }
    i = 0;
    var arr = new Array(array.length-1);
    while(i <= array.length-1){
        if(i<index){
            arr[i] = array[i];
        }else if(i > index){
            arr[i-1] = array[i];
        }
        i++;
    }
    return arr;
};
*/
