Hi,
I found this tutorial and code on a website Flash and Math. It does what I want but I would like to make it work with movieclips. You can paste this script in an AS3 file and make a swf., it does everything.
Code:

//Part I -- Set up the graphics



var holder:Sprite = new Sprite();

var block1:Sprite = new Sprite();

var block2:Sprite = new Sprite();

var block3:Sprite = new Sprite();



this.addChild(holder);

this.addChild(block1);

this.addChild(block2);

this.addChild(block3);



holder.graphics.beginFill(0xDDDDDD);

holder.graphics.lineStyle(2,0);

holder.graphics.moveTo(0,0);

holder.graphics.lineTo(0,300);

holder.graphics.lineTo(100,300);

holder.graphics.lineTo(100,0);

holder.graphics.endFill();

holder.x = 350;

holder.y = 50;



block1.graphics.beginFill(0xDDDDFF);

block1.graphics.lineStyle(0,0);

block1.graphics.moveTo(0,0);

block1.graphics.drawRect(0,0,100,100);

block1.graphics.endFill();

block1.x = 50;

block1.y = 50;



block2.graphics.beginFill(0xFFDDDD);

block2.graphics.lineStyle(0,0);

block2.graphics.moveTo(0,0);

block2.graphics.drawRect(0,0,100,100);

block2.graphics.endFill();

block2.x = 50;

block2.y = 200;



block3.graphics.beginFill(0xDDFFDD);

block3.graphics.lineStyle(0,0);

block3.graphics.moveTo(0,0);

block3.graphics.drawRect(0,0,100,100);

block3.graphics.endFill();

block3.x = 175;

block3.y = 100;

// Global variables to keep up with things



var movingBlock:Sprite;

var startingPt:Point = new Point();

var placed:int = 0;





// Part II -- Add drag and drop functionality



block1.addEventListener(MouseEvent.MOUSE_DOWN, startBlockMove);

block2.addEventListener(MouseEvent.MOUSE_DOWN, startBlockMove);

block3.addEventListener(MouseEvent.MOUSE_DOWN, startBlockMove);



function startBlockMove(evt:MouseEvent):void {

movingBlock = Sprite(evt.currentTarget);

startingPt.x = movingBlock.x;

startingPt.y = movingBlock.y;

stage.addEventListener(MouseEvent.MOUSE_MOVE, moveBlock);

}



function moveBlock(e:MouseEvent):void {

movingBlock.x = stage.mouseX;

movingBlock.y = stage.mouseY;

}



stage.addEventListener(MouseEvent.MOUSE_UP, stopMotion);



function stopMotion(evt:MouseEvent):void {

stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveBlock);

snapInPlace();

movingBlock = new Sprite();

startingPt = new Point();

}



function snapInPlace():void {

if (holder.hitTestObject(movingBlock)) {

movingBlock.x = holder.x;

movingBlock.y = holder.y + 100*placed;

placed++;

movingBlock.removeEventListener(MouseEvent.MOUSE_D OWN, startBlockMove);

}

else {

movingBlock.x = startingPt.x;

movingBlock.y = startingPt.y;

}

}