PLZ HELP! My job depends on it!

OK, here goes…I know this is a long post, but I don’t have any other choice, I’m stuck!
If you consider yourself an AS3 PRO, plz take a look and lend me a hand and I will be eternally greatful! thx in advance for your help!

here’s the “loader.swf”:

import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.StatusEvent;
import flash.events.TimerEvent;
import fl.containers.ScrollPane;
//import fl.controls.*;
import flash.net.LocalConnection;
import flash.net.URLRequest;
import flash.events.ProgressEvent;
import flash.utils.Timer;
//import fl.events.*;
loader.addEventListener(Event.COMPLETE, resizeHandler);
loader.setSize(stage.stageWidth, stage.stageHeight);
//loader.addEventListener(ProgressEvent.PROGRESS, initialize);
loader.addEventListener(Event.INIT, initializeLoad);
loader.addEventListener(Event.COMPLETE, loadComplete);
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, resizeHandler);
//var receiver:LocalConnection = new LocalConnection();
//receiver.connect("comm");
//receiver.client = this;  closeConn
//var sender:LocalConnection = new LocalConnection();
//addEventListener(Event.UNLOAD, closeConn);
var preloader:preloaderCover = new preloaderCover();
preloader.y = 103.5;
addChild(preloader);
var req:URLRequest = new URLRequest();
req.url = "assets/flash/home.swf";
loader.load(req);
preloader.gotoAndStop("animOut");
var currPg = "home_btn";
var localFeatureNum:int = 0;
var pollTimer:Timer = new Timer(10);
header_mc.underline_mc.gotoAndStop(1);
header_mc.bg.logo_mc.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.home_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.feature_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.intro_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.valet_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.talk_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.listen_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.whats_hot_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.driven_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.trippin_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.blog_btn.addEventListener(MouseEvent.CLICK, handleClick);
header_mc.dropDown_mc.gallery_btn.addEventListener(MouseEvent.CLICK, handleClick);
//switch the swf loaded into main on nav button click
function handleClick(e:MouseEvent):void {
 localFeatureNum = 0;
 
 switch (e.target.name) {
  case "logo_mc" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(1);
    req.url = "assets/flash/home.swf";
    //loader.load(req);
    //loader.source = "assets/flash/home.swf";
    animIn();
    break;
   }
  case "home_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(1);
    req.url = "assets/flash/home.swf";
    //loader.load(req);
    //loader.source = "assets/flash/home.swf";
    animIn();
    break;
   }
  case "feature_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(2);
    req.url = "assets/flash/feature.swf";
    //loader.load(req);
    //loader.source = "assets/flash/feature.swf";
    animIn();
    break;
   }
  case "intro_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(3);
    req.url = "assets/flash/intro.swf";
    //loader.load(req);
    //loader.source = "assets/flash/intro.swf";
    animIn();
    break;
   }
  case "valet_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
//    sender.addEventListener(StatusEvent.STATUS, onStatus);
//    sender.send("ch", "closeConn");
    header_mc.underline_mc.gotoAndStop(4);
    req.url = "assets/flash/valet.swf";
    //loader.load(req);
    //loader.source = "assets/flash/valet.swf";
    animIn();
    break;
   }
  case "talk_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(5);
    req.url = "assets/flash/talk.swf";
    //loader.load(req);
    //loader.source = "assets/flash/talk.swf";
    animIn();
    break;
   }
  case "listen_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(6);
    req.url = "assets/flash/playlist.swf";
    //loader.load(req);
    //loader.source = "assets/flash/playlist.swf";
    animIn();
    break;
   }
  case "whats_hot_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(7);
    req.url = "assets/flash/cool_stuff.swf";
    //loader.load(req);
    //loader.source = "assets/flash/cool_stuff.swf";
    animIn();
    break;
   }
  case "driven_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(8);
    req.url = "assets/flash/driven.swf";
    //loader.load(req);
    animIn();
    //loader.source = "assets/flash/driven.swf";
    break;
   }
  case "trippin_btn" :
   if (currPg == e.target.name) {
    break;
   }
   else {
    header_mc.underline_mc.gotoAndStop(9);
    req.url = "assets/flash/road_trippin.swf";
    //loader.load(req);
    //loader.source = "assets/flash/road_trippin.swf";
    animIn();
    break;
   }
  case "blog_btn": 
   navigateToURL(new URLRequest("http://www.myspace.com"), "_blank");
   break;
  case "gallery_btn": 
   navigateToURL(new URLRequest("http://www.yahoo.com"), "_blank");
   break;
  default :
   break;
 }
 currPg = e.target.name;
}
function changePage(link:String):void {
 
 switch (link) {
  case "home" :
   req.url = "assets/flash/home.swf";
   header_mc.underline_mc.gotoAndStop(1);
   currPg = "home_btn";
   animIn();
   break;
/*  case "lets_talk" :
   header_mc.underline_mc.gotoAndStop(12);
   req.url = "assets/flash/lets_talk.swf";
   currPg = "lets_talk_btn";
   animIn();
   break;*/
  case "hot" :
   req.url = "assets/flash/cool_stuff.swf";
   currPg = "whats_hot_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(7);
   break;
  case "valet" :
//   sender.addEventListener(StatusEvent.STATUS, onStatus);
//   sender.send("ch", "closeConn");
   req.url = "assets/flash/valet.swf";
   currPg = "valet_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(4);
   break;
  case "listen" :
   req.url = "assets/flash/playlist.swf";
   currPg = "listen_btn";
   header_mc.underline_mc.gotoAndStop(6);
   animIn();
   break;
  case "driven" :
   req.url = "assets/flash/driven.swf";
   currPg = "driven_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(8);
   break;
  case "share" :
   header_mc.underline_mc.gotoAndStop(12);
   req.url = "assets/flash/share_ride.swf";
   currPg = "share_btn";
   animIn();
   break;
  case "trippin" :
   req.url = "assets/flash/road_trippin.swf";
   currPg = "trippin_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(9);
   break;
  case "feature" :
   req.url = "assets/flash/feature.swf";
   currPg = "feature_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(2);
   break;
  case "talk" :
   req.url = "assets/flash/talk.swf";
   currPg = "talk_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(5);
   break;
  case "intro" :
   req.url = "assets/flash/intro.swf";
   currPg = "intro_btn";
   animIn();
   header_mc.underline_mc.gotoAndStop(3);
   break;
  default :
   break;
 }
}
//////////////////////////////////////////////////////////////////////////////
function onStatus(e:StatusEvent):void {
 switch (e.level) {
  case "status" :
   //trace("LocalConnection.send() succeeded");
   break;
  case "error" :
   //trace("LocalConnection.send() failed");
   break;
 }
}
function sendFeature(featureNum:int):void {
 req.url = "assets/flash/feature.swf";
 currPg = "feature_btn";
 header_mc.underline_mc.gotoAndStop(2); 
 localFeatureNum = featureNum;
 animIn();
}
function initializeLoad(e:Event):void {
 //if
}
function loadComplete(e:Event):void {
 poll();
 //animOut();
}
function animIn():void {
 preloader.gotoAndPlay("animIn");
 preloader.req = req;
}
function animOut():void {
 preloader.gotoAndPlay("animOut");
}
//function closeConn(e:Event):void {
// receiver.close();
//}
function resizeHandler(e:Event):void {
 header_mc.x = (stage.stageWidth - 1000) / 2;
 loader.content.x = (stage.stageWidth - 1000) / 2;
 preloader.x = (stage.stageWidth - 1000) / 2;
 loader.setSize(stage.stageWidth, stage.stageHeight);
}
function poll():void {
 pollTimer.start();
 pollTimer.addEventListener(TimerEvent.TIMER, checkStatus);
}
function checkStatus(e:TimerEvent):void {
 if(loader.content.lockOne && loader.content.lockTwo && loader.content.lockThree && loader.content.lockFour && currPg == "home_btn") {
  animOut();
  pollTimer.removeEventListener(TimerEvent.TIMER, checkStatus);
 }
 else if( currPg != "home_btn"){
  animOut();
  pollTimer.removeEventListener(TimerEvent.TIMER, checkStatus);
 }
 else {
  return;
 }
 
}
/*function unloadContent(e:Event):void {
}*/

here’s the “home.swf” that loads by default:

import flash.text.TextFormat;
import flash.events.MouseEvent;
import flash.events.Event;
import fl.controls.ProgressBar;
import fl.controls.ProgressBarMode;
import fl.controls.ProgressBarDirection;
import flash.net.LocalConnection;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
/////////////////////////////////////////////////////////////////////////////////
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE, handleXMLLoad);
xmlLoader.load( new URLRequest( "assets/xml/home_page.xml" ) );
thumb1_img.addEventListener(Event.COMPLETE, thumbsComplete);
thumb2_img.addEventListener(Event.COMPLETE, thumbsComplete);
thumb3_img.addEventListener(Event.COMPLETE, thumbsComplete);
var lockOne:Boolean = false;
var lockTwo:Boolean = false;
var lockThree:Boolean = false;
var lockFour:Boolean = false;
featureSec_mc.vidPlayer.autoPlay = false;
featureSec_mc.mainCarImg.visible = false;
 var prog:ProgressBar = new ProgressBar();
 prog.mode = ProgressBarMode.EVENT;
 prog.direction = ProgressBarDirection.RIGHT;
 prog.x = prog.y = 280;
 prog.source = featureSec_mc.mainCarImg;
 addChild(prog);
//featureSec_mc.mainCarImg.addEventListener(Event.INIT, initializeImg);
prog.addEventListener(Event.COMPLETE, displayImg);
 var newProg:ProgressBar = new ProgressBar();
 addChild(newProg);
 newProg.visible = false;
ticker_btn.addEventListener(MouseEvent.CLICK, handleTickerClick);
var car1:Object = new Object();
var car2:Object = new Object();
var car3:Object = new Object();
overlay_btn.addEventListener(MouseEvent.CLICK, handleClick); 
//this is for the news text blurb
featureOverlay_btn.addEventListener(MouseEvent.CLICK, handleFeatureClick);
//this is for the feature btn that triggers the feature page; passes parameter for currFeature
var currFeature:int = 0;
thumb1_btn.addEventListener(MouseEvent.CLICK, handleThumbClick);
thumb2_btn.addEventListener(MouseEvent.CLICK, handleThumbClick);
thumb3_btn.addEventListener(MouseEvent.CLICK, handleThumbClick);
var sender:LocalConnection = new LocalConnection();
driven_btn.addEventListener(MouseEvent.CLICK, handleClick);
valet_mc.valet2_btn.addEventListener(MouseEvent.CLICK, handleClick);
blog2_btn.addEventListener(MouseEvent.CLICK, handleClick);
listen2_btn.addEventListener(MouseEvent.CLICK, handleClick);
whats_hot2_btn.addEventListener(MouseEvent.CLICK, handleClick);
function handleTickerClick(e:MouseEvent):void {
 sender.send("comm", "changePage", "intro");
}
//switch main img, title, and text for every thumbnail click
function handleThumbClick(e:MouseEvent):void {
 switch (e.target.name) {
  case "thumb1_btn" :
   if ( currMainImg == car1.mainImg ) {
    break;
   } else {
    featureSec_mc.mainCarImg.source = car1.mainImg;
    featureSec_mc.mainTitle.text =    car1.title;
    mainText.text =   car1.text;
    currMainImg = car1.mainImg;
    currFeature = 0;
 
     newProg.move(280, 280);
 newProg.mode = ProgressBarMode.EVENT;
 newProg.direction = ProgressBarDirection.RIGHT;
 newProg.source = featureSec_mc.mainCarImg;
 newProg.visible = true;
 newProg.addEventListener(Event.COMPLETE, displayImg);
    break;
   }
  case "thumb2_btn" :
   if ( currMainImg == car2.mainImg ) {
    break;
   } else {
    featureSec_mc.mainCarImg.source = car2.mainImg;
    featureSec_mc.mainTitle.text =    car2.title;
    mainText.text =   car2.text;
    currMainImg = car2.mainImg;
    currFeature = 1;
 
     newProg.move(280, 280);
 newProg.mode = ProgressBarMode.EVENT;
 newProg.direction = ProgressBarDirection.RIGHT;
 newProg.source = featureSec_mc.mainCarImg;
 newProg.visible = true;
 newProg.addEventListener(Event.COMPLETE, displayImg);
    break;
   }
  case "thumb3_btn" :
   if ( currMainImg == car3.mainImg ) {
    break;
   } else {
    featureSec_mc.mainCarImg.source = car3.mainImg;
    featureSec_mc.mainTitle.text =    car3.title;
    mainText.text =   car3.text;
    currMainImg = car3.mainImg;
    currFeature = 2;
 
     newProg.move(280, 280);
 newProg.mode = ProgressBarMode.EVENT;
 newProg.direction = ProgressBarDirection.RIGHT;
 newProg.source = featureSec_mc.mainCarImg;
 newProg.visible = true;
 newProg.addEventListener(Event.COMPLETE, displayImg);
    break;
   }
  default :
   break;
 }
}
function handleClick(e:MouseEvent):void {
 var link:String;
 switch (e.target.name) {
  case "driven_btn" :
   link = "driven";
   break;
  case "valet2_btn" :
   link = "valet";
   break;
  case "blog2_btn" :
   link = "talk";
   break;
  case "listen2_btn" :
   link = "listen";
   break;
  case "whats_hot2_btn" :
   link = "hot";
   break;
  case "overlay_btn":
   link = "intro";
   break;
  default :
   break;
 }
 sender.send("comm", "changePage", link);
}
function handleXMLLoad(e:Event):void {
 try {
  var home:XML = new XML( e.target.data );
  //initialize data
  car1.thumb = "assets/images/home/" + home.feature.car[0].thumb.toString();
  car1.mainImg = "assets/images/home/" + home.feature.car[0].main.toString();
  car1.title = home.feature.car[0].title.toString();
  car1.text = home.feature.car[0].text.toString();
  car2.thumb = "assets/images/home/" + home.feature.car[1].thumb.toString();
  car2.mainImg = "assets/images/home/" + home.feature.car[1].main.toString();
  car2.title = home.feature.car[1].title.toString();
  car2.text = home.feature.car[1].text.toString();
  car3.thumb = "assets/images/home/" + home.feature.car[2].thumb.toString();
  car3.mainImg = "assets/images/home/" + home.feature.car[2].main.toString();
  car3.title = home.feature.car[2].title.toString();
  car3.text = home.feature.car[2].text.toString();
  //load feature section
  featureSec_mc.mainCarImg.source = car1.mainImg;
  currMainImg = car1.mainImg;
  featureSec_mc.mainTitle.text = car1.title;
  mainText.text = car1.text;
  thumb1_img.source = car1.thumb;
  thumb2_img.source = car2.thumb;
  thumb3_img.source = car3.thumb;
  featureSec_mc.vidPlayer.source = "assets/video/" + home.media.video.toString();
//  featureSec_mc.vidPlayer.autoPlay = false;
  featureSec_mc.vidPlayer.skinAutoHide = true;
 
///////////////////////////////////////////////////////////////////////////////////
var format:TextFormat = new TextFormat();
format.bold = true;
format.font = "Arial";
format.size = 14;
///////////////////////////////////////////////////////////////////
 
  scrollTxt_mc.scrollMarquee.text = home.media.marquee;
  scrollTxt_mc.scrollMarquee.setTextFormat(format);
  scrollTxt_mc.gotoAndStop(2);
  news_txt.htmlText = "<a href='http://" + home.news.link.toString() + "'>" + home.news.text.toString() + "</a>";
  listen_mc.listen_img.source = "assets/images/home/" + home.listen.img.toString();
 } catch (e:TypeError) {
  trace("couldn't load xml");
  trace(e.message);
 }
}
function handleFeatureClick(e:MouseEvent):void {
 sender.send("comm", "sendFeature", currFeature);
}
function initializeImg(e:Event):void {
 //addChild(prog);
 //prog.addEventListener(ProgressEvent.PROGRESS, showProgress);
//prog.addEventListener(Event.COMPLETE, displayImg);
}
function displayImg(e:Event):void {
 featureSec_mc.mainCarImg.visible = true;
 e.target.visible = false;
 e.target.removeEventListener(Event.COMPLETE, displayImg);
 lockFour = true;
}
function thumbsComplete(e:Event):void {
 switch(e.target.name) {
  case "thumb1_img":
   lockOne = true;
   break;
  case "thumb2_img":
   lockTwo = true;
   break;
  case "thumb3_img":
   lockThree = true;
   break;
  default:
   break;
 }
}

and here’s “intro.swf” which loads if a user clicks on the intro button…everything is defined in my FLA’s, FYI:

import flash.display.Loader;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.utils.Timer;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE, handleXMLLoad);
xmlLoader.load( new URLRequest( "assets/xml/intro_page.xml" ) );
marcus_mc.marcus_btn.addEventListener(MouseEvent.CLICK, handleClick);
aj_mc.aj_btn.addEventListener(MouseEvent.CLICK, handleClick);
contact_mc.submit_btn.addEventListener(MouseEvent.CLICK, handleClick);
contact_mc.mask = contact_mask;
var outTimer:Timer = new Timer(1);
//var inTimer:Timer = new Timer(1);
vidLoader.autoPlay = false;
var thanks:TextField = new TextField();
thanks.text = "Thank you for your Submission!";
thanks.embedFonts = true;
thanks.autoSize = TextFieldAutoSize.LEFT;
thanks.x = -400;
thanks.y = 616.5;
var format:TextFormat = new TextFormat();
format.bold = true;
format.size = 16;
format.font = "NissanAG-Bold";
format.color = 0xF6F6F6;
thanks.setTextFormat(format);
addChild(thanks);
thanks.mask = contact_mask;
var xml:XML;
submission_error_mc.visible = false;
function handleXMLLoad(e:Event):void {
 try {
  xml = new XML( e.target.data );
  vidLoader.source = "assets/video/" + xml.intro_vid;
//  vidLoader.autoPlay = false;
  vidLoader.skinAutoHide = true;
  marcus_mc.marcus_loader.source = "assets/images/intro/" + xml.marcus_pic;
  aj_mc.aj_loader.source = "assets/images/intro/" + xml.aj_pic;
  descText.text = xml.general_text;
  marcus_mc.marcusEmail.border = false;
  marcus_mc.marcusEmail.htmlText = "<a href='mailto:marcus@motorrocks.com'>marcus@motorrocks.com</a>";
  aj_mc.ajEmail.border = false;
  aj_mc.ajEmail.htmlText = "<a href='mailto:aj@motorrocks.com'>aj@motorrocks.com</a>";
 } catch (e:TypeError) {
  trace("couldn't load xml");
  trace(e.message);
 }
}
function handleClick(e:MouseEvent):void {
 switch (e.target.name) {
  case "aj_btn" :
   descText.text = xml.aj_text;
   break;
  case "marcus_btn" :
   descText.text = xml.marcus_text;
   break;
  case "submit_btn" :
   if ( checkInput() ) {
    outTimer.addEventListener(TimerEvent.TIMER, handleTimer);
    outTimer.start();
    submission_error_mc.visible = false;
    var dataLoader:URLLoader = new URLLoader();
    dataLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
    var req:URLRequest = new URLRequest( "assets/scripts/intro_contact.php" );
    var variables:URLVariables = new URLVariables();
    variables.yourName = contact_mc.nameText.text;
    variables.yourEmail = contact_mc.emailText.text;
    variables.yourMessage = contact_mc.commentsText.text;
    req.data = variables;
    req.method = URLRequestMethod.POST;
    //dataLoader.addEventListener(Event.COMPLETE, handleLoad);
    dataLoader.load(req);
   }
   else {
    submission_error_mc.visible = true;
   }
   break;
  default :
   break;
 }
}
function checkInput():int {
 var expression:RegExp = / ^[A-Z0-9._%+-]+@[A-Z0-9._%+-]+ \. [A-Z]{2,4}$ /xi;
 if ( contact_mc.nameText.text != "" && expression.test( contact_mc.emailText.text ) ) {
  //trace("good");
  return 1;
 }
 else {
  //trace("no good");
  return 0;
 }
}
function handleTimer(e:TimerEvent):void {
 
 if ( contact_mc.x > -428 ) {
  contact_mc.x -= 12;
 }
 
 else if ( thanks.x < 42 ) {
  //trace("switching");
  thanks.x += 8;
 }
 else {
  outTimer.stop();
  outTimer.removeEventListener(TimerEvent.TIMER, handleTimer);
 }
}
/*function handleLoad(e:Event):void {
 inTimer.addEventListener(TimerEvent.TIMER, handleInTimer);
 inTimer.start();
}
function handleInTimer(e:TimerEvent):void {
 if ( thanks.x < 42 ) {
  //trace("switching");
  thanks.x += 12;
 }
 else {
  inTimer.stop();
  inTimer.removeEventListener(TimerEvent.TIMER, handleInTimer);
 }
}*/

if I test the loader.swf in Flash Player, everything loads fine, but if I load intro.swf via the intro button AND THEN go back and load “home.swf” via the home button AND try to close Flash Player, it crashes like crazy! It does this elsewhere in my sight too, but this should be a good enough example to see the issue I hope.

here’s the working example on the web:
< link removed >