function CVector2(iX,iY){
    
    var x;
    var y;
    
    this._init = function(iX,iY){
        x = iX;
        y = iY;
    };
    
    this.add = function( vx, vy ){
        x += vx;
        y += vy; 
    };		
		
    this.addV = function( v ){
        x += v.getX();
        y += v.getY(); 
    };
		
    this.scalarDivision = function( n ) {
        x /= n;
        y /= n;		
    };
		
    this.subV = function( v ){
        x -= v.getX();
        y -= v.getY(); 
    };	
		
    this.scalarProduct = function( n ){
        x*=n;
        y*=n;
    };
		
    this.invert = function(){
        x*=-1;
        y*=-1;		
    };
		
    this.dotProduct = function( v){
        return ( x*v.getX()+ y*v.getY()  );
    };
		
    this.set = function( fx, fy ){
        x = fx;
        y = fy;
    };
		
    this.setV = function( v ){
        x = v.getX();
        y = v.getY();
    };
		
    this.length = function(){
        return Math.sqrt( x*x+y*y );
    };
		
    this.length2 = function(){
        return x*x+y*y;
    };	
		
    this.normalize = function(){
        var len = this.length();
        if (len > 0 ){
                x/= len; y/=len; 
        }
    };
		
    this.getNormalize = function( outV ) {
        var len = this.length();
        outV.set(x,y);
        outV.normalize();
    };
		
    this.rot90CCW = function(){
        var a = x;
        x = -y;
        y = a;
    };
		
    this.rot90CW = function(){
        var a = x;
        x = y;
        y = -a;
    };

    this.getRotCCW = function( outV ) {
        outV.set( x, y );
        outV.rot90CCW();
    };
		
    this.getRotCW = function( outV ) {
            outV.set( x, y );
            outV.rot90CW();
    };
		
    this.ceil = function(){
        x = Math.ceil( x );
        y = Math.ceil( y );
    };
		
    this.round = function(){
        x = Math.round( x );
        y = Math.round( y );		
    };

    this.toString = function(){
        return "Vector2: " + x + ", " + y;
    };
		
    this.print = function(){
        trace( "Vector2: " + x + ", " + y + "" );
    };
    
    this.getX = function(){
        return x;
    };
    
    this.getY = function(){
        return y;
    };
    
    this._init(iX,iY);
}