2D vertical srolling carousel,

Hi Fellows

I have created a vertical scrolling 2d carousel which is managed through cms/xml.
The problem is when I add a new thumbnail on the XML(images.xml) list
the carousel doesn’t flow seamless, I either get gaps or overlapping.
At the moment i have tow move clips, when one has sroll down to the bottom of the screen it
get positioned at top again same applies for second movie clip.

you can see an example of it at http://overload.co.za/main.php
I have attached the source file as well, see source code below

one thing to note, the thumbnails have to be 115x115px

Any one with bright ideas, please assist

Thanks

//-----------------------------------------------------------------------ACTION SCRIPT
function loadXML(loaded) {
if (loaded) {
xmlNode = this.firstChild;
image = [];

	thumbnails = [];
	total = xmlNode.childNodes.length;
	for (i=0; i<total; i++) {
		image* = xmlNode.childNodes*.childNodes[0].firstChild.nodeValue;
		
		thumbnails* = xmlNode.childNodes*.childNodes[1].firstChild.nodeValue;
		thumbnails_fn(i);
	}
	firstImage();
	
} else {
	content = "file not loaded!";
}

}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;

xmlData.load(“images.xml”);
/////////////////////////////////////
listen = new Object();
listen.onKeyDown = function() {
if (Key.getCode() == Key.LEFT) {
prevImage();
} else if (Key.getCode() == Key.RIGHT) {
nextImage();
}
};

/////////////////////////////////////
p = 0;
this.onEnterFrame = function() {
filesize = picture.getBytesTotal();
loaded = picture.getBytesLoaded();
preloader._visible = true;
if (loaded != filesize) {
preloader.preload_bar._xscale = 100*loaded/filesize;
} else {
preloader._visible = false;
if (picture._alpha<100) {
picture._alpha += 10;
}
}
};
function nextImage() {
if (p<(total-1)) {
p++;
if (loaded == filesize) {
picture._alpha = 0;
this.getURL(image[p], “_self”, 1);
desc_txt.text = description[p];
picture_num();
}
}
}

function firstImage() {
if (loaded == filesize) {
picture._alpha = 0;
picture.loadMovie(image[0], 1);
desc_txt.text = description[0];
picture_num();
}
}
function picture_num() {
current_pos = p+1;
pos_txt.text = current_pos+" / "+total;
}

function thumbNailScroller() {
// thumbnail code!
this.createEmptyMovieClip(“tscroller”,1000);
scroll_speed = 10;
tscroller.onEnterFrame = function() {
if (thumbnail_mc._y>=-(xmlNode.childNodes.length)*215) {
thumbnail_mc._y = thumbnail_mc._y+4;
}

	if (thumbnail_mc._y&gt;= 480) {
		thumbnail_mc._y= thumbnail_mc._y=-(xmlNode.childNodes.length)*215
		}
	
};

}

thumbNailScroller();

//-------------------------------------------------------------------------DUPLICATE MOVIE TRIAL

function thumbNailScrollerdup() {
// thumbnail code!
this.createEmptyMovieClip(“tscroller2”,1003);
scroll_speed = 10;
tscroller2.onEnterFrame = function() {
if (newmc._y>=-(xmlNode.childNodes.length)*215) {
newmc._y = newmc._y+4;
}
if (newmc._y>= 480) {
newmc._y= newmc._y=-(xmlNode.childNodes.length)*215

	}
};

}

thumbNailScrollerdup();

function thumbnails_fn(k) {
thumbnail_mc.createEmptyMovieClip(“t”+k,thumbnail_mc.getNextHighestDepth());
newmc.createEmptyMovieClip(“t”+k,newmc.getNextHighestDepth());
tlistener = new Object();
tlistener.onLoadInit = function(target_mc) {
target_mc._y = hit_left._y+(target_mc._height+20)*k;
target_mc.pictureValue = k;
target_mc.onRelease = function() {
p = this.pictureValue-1;
nextImage();
};

	target_mc.onRollOver = function() {
		this._alpha = 50;

		//newmc._y = newmc._y+3
		delete tscroller.onEnterFrame;
		delete tscroller2.onEnterFrame;
		//dupMovie();






	};

	target_mc.onRollOut = function() {
		this._alpha = 100;
		thumbNailScroller();
		thumbNailScrollerdup();
		//removeMovieClip(newmc);



	};
};
image_mcl = new MovieClipLoader();
image_mcl.addListener(tlistener);
image_mcl.loadClip(thumbnails[k],"thumbnail_mc.t"+k);
image_mcl.loadClip(thumbnails[k],"newmc.t"+k);

}