function Vector()
{
    this.data = new Array();
    this.add = Vector_add;
    this.remove = Vector_remove;
    this.elementAt = Vector_elementAt;
    this.setElementAt = Vector_setElementAt;
    this.insert = Vector_insert;
    this.contains = Vector_contains;
    this.length = Vector_length;
    this.toString = Vector_toString;
}function Vector_add( item )
{
    this.data[ this.data.length ] = item;
}function Vector_remove( index )
{
    var data = this.data;
    data[ index ] = null;
    var tmpdata = new Array();
    var newindex = 0;
    for( var i = 0; i < data.length; i++ )
    {
        if( data[ i ] != null )
        {
            tmpdata[ newindex ] = data[ i ];
            newindex++;
        }
    }
    this.data = tmpdata;
}function Vector_removeItem( item )
{
    var data = this.data;
    var tmpdata = new Array();
    var newindex = 0;
    for( var i = 0; i < data.length; i++ )
    {
        if( data[ i ] != item )
        {
            tmpdata[ newindex ] = data[ i ];
        }
        newindex++;
    }
    this.data = tmpdata;
}function Vector_elementAt( index )
{
    return this.data[ index ];
}function Vector_setElementAt( index, item )
{
    this.data[ index ] = item;
}function Vector_insert( index, item )
{
    if( index == this.data.length )
    {
        this.add( item );
        return;
    }
    var data = this.data;
    var tmpdata = new Array();
    var newindex = 0;
    for( var i = 0; i < data.length; i++ )
    {
        if( i == index )
        {
            tmpdata[ i ] = item;
            newindex++;
        }
        tmpdata[ newindex ] = data[ i ];
        newindex++;
    }
    this.data = tmpdata;
}function Vector_contains( item )
{
    for( var i = 0; i < this.data.length; i++ )
    {
        if( this.data[i] == item )
        {
            return true;
        }
    }
    return false;
}function Vector_length()
{
    return this.data.length;
}function Vector_toString()
{
    var dataString = "[ ";
    var data = this.data;
    for( var i = 0; i < data.length; i++ )
    {
        dataString += data[i] + " ";
    }
    dataString += "]";
    return dataString;
}