Mask/dynamic resizing conflict

Alright, here’s what’s up. I’ve got a movie clip that acts as a button. Essentially, there’s an onEnterFrame bit that constantly checks for variables sent by the RollOver/RollOut so that it can resize the button. There’s more to it (as is pretty clear by the mess of script), but I think this is enough to get the problem.

Speaking of which, this is the problem: Since I have a masked image (which is larger than the button) inside the button, when the AS attempts to modify the button’s scale or placement, it seems to get confused by the masked image’s size, and then proceeds to sort of generally botch the whole operation. This is the code for the button:

 
btn1.onEnterFrame = function() {
 if (btnselect == 1) {
  //if this button is already selected, go to the last frame
  this.gotoAndStop(this._totalframes);
 } else if (this.masker.hitTest(_root._xmouse, _root._ymouse) && this.up == true) {
  //if it is not selected, but the button is raised, play the button's animation
  this.nextFrame();
 } else if (currentup != 1) {
  //if the button is not up, play button animation backwards to idle state
  this.prevFrame();
 }
 //constantly check for variables to scale the button, which are sent with RollOvers/Outs
 //scaling difference is calculated by taking the sent scale value (targetwidth), subtracting
 //present scale, and multiplying the result by an easing value
 this._yscale = this._xscale += (this.targetwidth-this._xscale)*this.easing;
 //in this button's case, X is always set to 0
 this._x = 0;
 //initial Y value is 310, but as the height is affected by scale changes, the new Y location
 //is found by subtracting the button's present height from its initial height (80)
 this._y = 310-(this._height-80);
};
btn1.onRollOver = function() {
 //do not send any variables if button is already selected
 if (btnselect != 1) {
  //send this to top
  this.swapDepths(_root.getNextHighestDepth()+1);
  //set local variable "up" to true
  this.up = true;
  //set broad variable "currentup" to this button's designating number, which is 1
  currentup = 1;
  //dim all other buttons
  otherdim();
  //declare this button's new scaling value (for the EnterFrame resizing)
  this.targetwidth = 120;
  //declare easing value
  this.easing = .2;
 }
};
btn1.onRollOut = function() {
 //set local variable "up" to false
 this.up = false;
 //set broad variable "currentdown" to this button's identifier, which is 1
 currentdown = 1;
 //un-dim all dimmed buttons
 otherbrighten();
 //declare this button's new scaling factor, which the EnterFrame event will use to resize
 this.targetwidth = 100;
 //declare this button's new easing value
 this.easing = .5;
 //set broad variable "currentup" to 0, denoting no buttons being raised
 currentup = 0;
};

Sorry for the crap code – I haven’t yet gone through the whole efficiency bit. There’s a lot more going on that the other variables play a role in (it’s not as redundant as it looks, I promise, haha), but this is all that I think makes a difference for now.

Can anybody help me? I’m just trying to figure out how to get the AS to not be confused by the presence of the image. I’ve got a sample SWF attached here, with one button (the first) with the image, showing how it’s reacting. The second button is how they’re supposed to work – it has no image in it.

Thanks for your help in advance!