[AS2]Advanced image gallery continous loop scroll help required

Hi,

I just downloaded Blue Chi’s advanced image gallery few days back and converted into grid gallery in AS2.
However I am stuck with 2 things:

  1. How to make the gallery endlessly scrollable in a efficient way. I used duplication method but the trick used is noticeable when it axis matches with stage mask

  2. Also, I am not able to control mouseOver and mouseOut scrolling.

Any help at coding level will be greatly appreciated.

import mx.transitions.Tween; 
import mx.transitions.easing.*; 

var myGalleryXML = new XML(); 
myGalleryXML.ignoreWhite = true; 
myGalleryXML.load("gallery2.xml"); 

var y_counter =0; 
var x_counter =0; 
var y_counter1 =0; 
var x_counter1 =0; 
var rows; 

myGalleryXML.onLoad = function() { 

_root.gallery_x = myGalleryXML.firstChild.attributes.gallery_x; 
_root.gallery_y = myGalleryXML.firstChild.attributes.gallery_y; 
_root.gallery_width = myGalleryXML.firstChild.attributes.gallery_width; 
_root.gallery_height = myGalleryXML.firstChild.attributes.gallery_height; 

_root.myImages = myGalleryXML.firstChild.childNodes; 
_root.myImagesTotal = myImages.length; 

_root.thumb_height = myGalleryXML.firstChild.attributes.thumb_height; 
_root.thumb_width = myGalleryXML.firstChild.attributes.thumb_width; 

_root.full_x = myGalleryXML.firstChild.attributes.full_x; 
_root.full_y = myGalleryXML.firstChild.attributes.full_y; 
_root.rows = myGalleryXML.firstChild.attributes.rows; 

callThumbs(); 
createMask(); 
scrolling(); 
}; 

// CALLS THUMBNAILS INTO CONTAINER 
function callThumbs(){ 
     
_root.createEmptyMovieClip("container_mc",_root.getNextHighestDepth()); 
_root.createEmptyMovieClip("container_mc1",_root.getNextHighestDepth()); 
container_mc._x = _root.gallery_x; 
container_mc._y = _root.gallery_y; 
container_mc1._x = container_mc._width; 
container_mc1._y = container_mc._height; 
// INITIALLY DARKENS CONTAINER 
container_mc._alpha = 80; 
container_mc1._alpha = 80; 

var clipLoader = new MovieClipLoader(); 
var preloader = new Object(); 
clipLoader.addListener(preloader); 

for (i=0; i<_root.myImagesTotal; i++) { 

thumbURL = myImages*.attributes.thumb_url; 
myThumb_mc = container_mc.createEmptyMovieClip(i, container_mc.getNextHighestDepth() ); 
myThumb_mc._x = (_root.thumb_width-10)*x_counter; 
myThumb_mc._y = (_root.thumb_height-10)*y_counter; 

        if (y_counter+1 < rows) { 
            y_counter++; 
        } else { 
            y_counter = 0; 
            x_counter++; 
        } 

myThumb_mc1 = container_mc1.createEmptyMovieClip(i, container_mc1.getNextHighestDepth() ); 
myThumb_mc1._x = (_root.thumb_width-10)*x_counter1; 
myThumb_mc1._y = (_root.thumb_height-10)*y_counter1; 

        if (y_counter1+1 < rows) { 
            y_counter1++; 
        } else { 
            y_counter1 = 0; 
            x_counter1++; 
        }         
clipLoader.loadClip("thumbs/"+thumbURL,myThumb_mc); 
clipLoader.loadClip("thumbs/"+thumbURL,myThumb_mc1); 


// THUMBNAIL PRELOADER 
preloader.onLoadStart = function(target) { 
target.createTextField("my_txt",target.getNextHighestDepth,0,0,100,20); 
target.my_txt.selectable = false; 
}; 

preloader.onLoadProgress = function(target, loadedBytes, totalBytes) { 
target.my_txt.text = Math.floor((loadedBytes/totalBytes)*100); 
}; 

preloader.onLoadComplete=function(target){ 
    new Tween(target, "_alpha", Strong.easeOut, 0, 100, .5, true); 
    target.my_txt.removeTextField(); 
target.onRelease=function(){ 
//clipLoader.removeEventListener(Event.CLICK,callFullImage(this._name)); 
callFullImage(this._name); 
} 
           // ROLLOVER - THUMB ALPHA and ACTIVE FUNCTION 
            target.onRollOver = function() { 
                this._alpha = 200; 
                _root.scroll_active=true; 
            }; 

            target.onRollOut = function() { 
                this._alpha = 100; 
                _root.scroll_active=false; 
            };   
} 

} 

} 

// CALLS FULL IMAGE ON THUMBNAIL CLICK 
function callFullImage(myNumber) { 

myURL = myImages[myNumber].attributes.full_url; 
myTitle = myImages[myNumber].attributes.title; 

_root.createEmptyMovieClip("fullImage_mc",_root.getNextHighestDepth()); 
fullImage_mc._x = _root.full_x; 
fullImage_mc._y = _root.full_y; 
fullImage_mc.buttonMode = true; 
var fullClipLoader = new MovieClipLoader(); 
var fullPreloader = new Object(); 
fullClipLoader.addListener(fullPreloader); 

fullPreloader.onLoadStart = function(target) { 
target.createTextField("my_txt",fullImage_mc.getNextHighestDepth,0,0,200,20); 
target.my_txt.selectable = false; 
}; 


//fullImage_mc.onPress = function(target){ 
//    new Tween(target, "_alpha", Strong.easeIn, 100, 0, .5, true); 
//}; 

fullPreloader.onLoadProgress = function(target, loadedBytes, totalBytes) { 
target.my_txt.text = Math.floor((loadedBytes/totalBytes)*100); 
}; 

fullPreloader.onLoadComplete = function(target) { 
new Tween(target, "_alpha", Strong.easeIn, 0, 100, .5, true); 
target.my_txt.text = myTitle; 

target.onPress = function() 
{ 
//    target.visible = false; 
//trace(target); 
//            new Tween(target, "_alpha", Strong.easeOut, 100, 0, .5, true); 
fullClipLoader.unloadClip(target); 

} 

}; 
fullClipLoader.loadClip("full_images/"+myURL,fullImage_mc); 

} 


// MASK FUNCTION CUT-OFF POINT OF CONTAINER 
function createMask() { 
     
_root.createEmptyMovieClip("mask_mc",_root.getNextHighestDepth()); 

mask_mc._x = _root.gallery_x; 
mask_mc._y = _root.gallery_y; 

mask_mc.beginFill(0x000000,100); 
mask_mc.lineTo(_root.gallery_width,0); 
mask_mc.lineTo(_root.gallery_width,_root.gallery_height); 
mask_mc.lineTo(0,_root.gallery_height); 
mask_mc.lineTo(0,0); 


container_mc.setMask(mask_mc); 
} 

// SCROLLING FUNCTION HORIZONTAL 
function scrolling() { 

    _root.onEnterFrame = function() { 
            // SCROLL ONLY WHEN ON CONTAINER 

    centerX = Number(_root.gallery_width); 
    scrollerWidth = Number(container_mc._width); 
    //trace(thumbnails.width); 
    speed = (-0.008 * (centerX/2 - _xmouse)); 
    //trace(speed); 
     
    container_mc._x += speed; 
    container_mc1._x = container_mc._x + scrollerWidth+10 ; 
    //trace(container_mc._x); 
    //trace(container_mc1._x); 

    if (container_mc._x > 0) { 
        container_mc._x = (-scrollerWidth - 10); 
    } 
    if (container_mc._x < (-scrollerWidth -10)) { 
        container_mc._x = 0; 

} 
} 
}