Rotate on drag not mouse position

hi all,

trying to work something out here, and the solution seems to be eluding me totally!
:diss:

i have some script that creates a rotating video wall/carousel effect that rotates left and right depending on where the mouse is.

I want the carousel to only rotate when the mouse is down and dragging - but just can’t seem to work out what i need to change.

how do I define the drag action instead of the current +x & -x co-ordinates??

here is the full script for the entire carousel

*/
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.materials.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import flash.display.Sprite;
import flash.events.MouseEvent;


var container:Sprite = new Sprite();
container.x = 400;
container.y = 325;
addChild(container);

var scene:Scene3D = new MovieScene3D(container);
var cam:Camera3D = new Camera3D();
cam.zoom = 6;

tipp.tn_title.text = "";
tipp.tn_desc.text = "";
tipp.tn_url.text = "";
var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 1, 0, 0.6, true);

var p_dict:Dictionary=new Dictionary();
var pc:Plane = new Plane();
pc.visible = false;
cam.target = pc;

var numOfRotations:Number = 3;
var yPos:Number = 0;
var angle:Number = 0;

var filename_list = new Array();
var url_list = new Array();
var url_target_list:Array = new Array();
var rel_list:Array = new Array();
var title_list = new Array();
var description_list = new Array();
var folder:String = "thumbnails/";

var i:Number;
var j:Number = 0;
var k:Number = 0;
var l:Number = 0;
var m:Number = 0;
var total:Number;
var flashmo_xml:XML = new XML();
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("thumbnail_list_3.xml"));
loader.addEventListener(Event.COMPLETE, create_thumbnail);

function create_thumbnail(e:Event):void 
{
	flashmo_xml = XML(e.target.data);
	total = flashmo_xml.thumbnail.length();
	var anglePer:Number = ((Math.PI*2) * numOfRotations) / total;
	
	for( i = 0; i < total; i++ )
	{
		url_list.push( flashmo_xml.thumbnail*.@url.toString() );
		url_target_list.push( flashmo_xml.thumbnail*.@target.toString() );
		rel_list.push( flashmo_xml.thumbnail*.@rel.toString() );
		title_list.push( flashmo_xml.thumbnail*.@title.toString() );
		description_list.push( flashmo_xml.thumbnail*.@description.toString() );
		
		var bfm:BitmapFileMaterial = new BitmapFileMaterial(
			folder + flashmo_xml.thumbnail*.@filename.toString());
		bfm.oneSide = false;
		bfm.smooth = true;
		var p:Plane = new Plane(bfm, 140, 105, 2, 2);
		scene.addChild(p);
var p_container:Sprite = p.container;
		p_container.name = "flashmo_" + i;
		p_dict[p_container] = p;
		p_container.buttonMode = true;
		p_container.addEventListener( MouseEvent.ROLL_OVER, p_rollover );
		p_container.addEventListener( MouseEvent.ROLL_OUT, p_rollout );
		p_container.addEventListener( MouseEvent.CLICK, p_click );
		
		p.rotationY = (-i*anglePer) * (180/Math.PI) + 90;
		p.x = Math.cos(i * anglePer) * 480;
		p.z = Math.sin(i * anglePer) * 480;
		p.y = yPos;

		if( (i+1) % 20 == 0 )
		{
			 yPos += 115;
		}
	}
}

function p_rollover(me:MouseEvent) 
{
	var sp:Sprite = me.target as Sprite;
	var tw:Tween = new Tween(sp, 'alpha', Strong.easeOut, 0.5, 1, 0.6, true);
	var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 0, 1, 0.6, true);
	var s_no:Number = parseInt(sp.name.slice(8,10));
	tipp.tn_title.text = title_list[s_no];
	tipp.tn_desc.text = description_list[s_no];
	tipp.tn_url.text = url_list[s_no];
}
function p_rollout(me:MouseEvent) 
{
	var sp:Sprite = me.target as Sprite;
	var tw:Tween = new Tween(sp, 'alpha', Strong.easeOut, 1, 0.5, 0.6, true);
	var tw:Tween = new Tween(tipp, 'alpha', Strong.easeOut, 1, 0, 0.6, true);
tipp.tn_title.text = "";
	tipp.tn_desc.text = "";
	tipp.tn_url.text = "";
}

var script:XML =
<script>
    <![CDATA[
             function(url, title_list, description_list, rel_list)
             {
                myLightWindow.activateWindow({href: url,
                                             title: title_list});
             }
             ]]>
</script>;

function p_click(me:MouseEvent)  
{  
    var sp:Sprite = me.target as Sprite;
    var s_no:Number = parseInt(sp.name.slice(8,10));
    trace("rel is '"+rel_list[s_no]+"'");ExternalInterface.call(script, url_list[s_no], title_list[s_no], description_list[s_no], rel_list[s_no]);
} 
addEventListener(Event.ENTER_FRAME, render);

function render(e:Event):void
{
	var dist2:Number = ((stage.mouseX) - 400) * 0.0001;
	angle += dist2;
	cam.x = - Math.cos(angle) * 150;
	cam.z = Math.sin(angle) * 150;
	var new_zoom = 5; 
	cam.zoom += ( new_zoom - cam.zoom ) * 0.06;
	scene.renderCamera(cam);
}

this is the block that (I think) controls the rotation at the moment but maybe a more experienced pair of eyes can see something else in there!

addEventListener(Event.ENTER_FRAME, render);

function render(e:Event):void
{
	var dist2:Number = ((stage.mouseX) - 400) * 0.0001;
	angle += dist2;
	cam.x = - Math.cos(angle) * 150;
	cam.z = Math.sin(angle) * 150;
	var new_zoom = 5; 
	cam.zoom += ( new_zoom - cam.zoom ) * 0.06;
	scene.renderCamera(cam);
}

Be grateful for any pointers/advice/help that you good folks can offer me.
crosses fingers