root_class.as 22.5 KB
package {

	import com.videoplayer.*;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.display.Stage;
	import flash.display.StageDisplayState;
	import flash.events.FullScreenEvent;
	import flash.events.SecurityErrorEvent;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLVariables;
	import flash.net.URLRequestMethod;
	import flash.net.navigateToURL;
	import flash.display.DisplayObject;
	import flash.geom.ColorTransform;
	import flash.external.ExternalInterface;
    //import flash.system.Security;

	public class root_class extends MovieClip {

		private var urlArray:Array=["video/Shannon_micro.flv","video/Jacquie_micro.flv","video/Crooks_micro.flv"];
		private var normColorHex:uint=0x5E9732;
		private var selColorHex:uint=0x006857;
		private var clickTag:String = "http://www.libro.ca/contact/contactus.html";// if nothing is passed in, it will go here
		private var rulesURL:String = "http://www.libro.ca/beLibro/rules.html";
		private var form1URL:String = "http://www.libro.ca/applications/fallCampaign09/FinancialQuestion.aspx";
		private var form2URL:String = "http://www.libro.ca/applications/fallCampaign09/SendEmails.aspx";
		//private var form1URL:String = "http://mmc.ca/share/form1.php";
		//private var form2URL:String = "http://mmc.ca/share/form2.php";
		private var streamingServer:String = null;//"rtmp://flash.streamingmediahosting.com/tenzingcom/"

		private var client:Object;// client object to use for the NetStream object
		private var idx:uint=0;//index of the currently playing video
		private var uldr:URLLoader;
		private var vidplyr:VideoPlayer;
		private var selectedIcon:MovieClip;
		// forms
		private var form1:Object;
		private var form2:Object;
		private var id:String;
		private var myRoot:MovieClip;


		public function root_class() {
			
			// clickTag
			if (!(root.loaderInfo.parameters.clicktag==null)) {
				clickTag=root.loaderInfo.parameters.clicktag;
			} else if (!(root.loaderInfo.parameters.clickTAG==null)) {
				clickTag=root.loaderInfo.parameters.clickTAG;
			} else if (!(root.loaderInfo.parameters.Clicktag==null)) {
				clickTag=root.loaderInfo.parameters.Clicktag;
			} else if (!(root.loaderInfo.parameters.clickTag==null)) {
				clickTag=root.loaderInfo.parameters.clickTag;
			} else if (!(root.loaderInfo.parameters.ClickTag==null)) {
				clickTag=root.loaderInfo.parameters.ClickTag;
			}
			
			myRoot=this.banner_mc;
			// define form fields
			var form_mc:MovieClip= myRoot.form1_mc;
			var myID={id:0,field:null,valInd:null,required:null,valType:null,val:null,type:"hidden", obj:null};
			var myName={id:1,field:form_mc.name_txt,valInd:form_mc.nameVal_mc,required:true,valType:"notEmpty",val:"",type:"regular", obj:null};
			var myEmail={id:2,field:form_mc.email_txt,valInd:form_mc.emailVal_mc,required:true,valType:"email",val:"",type:"regular", obj:null};
			var myCity={id:3,field:form_mc.city_txt,valInd:form_mc.cityVal_mc,required:true,valType:"notEmpty",val:"",type:"regular", obj:null};
			var myLibro={id:4,field:form_mc.libro_chk,valInd:form_mc.libroVal_mc,required:false,valType:null,val:"0",type:"check", obj:null};
			var myQuestion={id:5,field:form_mc.question_txt,valInd:form_mc.questionVal_mc,required:true,valType:"notEmpty",val:"",type:"multiline", obj:null};
			form1={fields:[myID,myName,myEmail,myCity,myLibro,myQuestion], ID:myID, name:myName, email:myEmail, city:myCity, libro:myLibro, question:myQuestion};
			
			form_mc= myRoot.form2_mc;
			var myFrEmail0={id:10,field:form_mc.email0_txt,valInd:form_mc.email0Val_mc,required:false,valType:"email",val:"",type:"regular", obj:null};
			var myFrEmail1={id:11,field:form_mc.email1_txt,valInd:form_mc.email1Val_mc,required:false,valType:"email",val:"",type:"regular", obj:null};
			var myFrEmail2={id:12,field:form_mc.email2_txt,valInd:form_mc.email2Val_mc,required:false,valType:"email",val:"",type:"regular", obj:null};
			var myFrEmail3={id:13,field:form_mc.email3_txt,valInd:form_mc.email3Val_mc,required:false,valType:"email",val:"",type:"regular", obj:null};
			var myFrEmail4={id:14,field:form_mc.email4_txt,valInd:form_mc.email4Val_mc,required:false,valType:"email",val:"",type:"regular", obj:null};
			form2={fields:[myFrEmail0,myFrEmail1,myFrEmail2,myFrEmail3,myFrEmail4], ID:myID, name:myName, friends:""};
			
		// prepare video jukebox
			vidplyr=new VideoPlayer(myRoot.jb_mc.moviePlayer_mc,streamingServer);
			vidplyr.autoPlay=true;
			vidplyr.scale("none");// scale values: none, fill, fit
			vidplyr.autoHideController=false;
			vidplyr.addEventListener(Event.COMPLETE, onVidComplete);
			myRoot.jb_mc.moviePlayer_mc.stage.addEventListener( FullScreenEvent.FULL_SCREEN, onFullScrn );
			myRoot.jb_mc.shadow_mc.mouseEnabled=false;
			// initiate jukebox icons
			for (var i=0; i<urlArray.length; i++) {
				//trace(this+" adding icon:"+i);
				var mc:MovieClip = myRoot.jb_mc["icon"+(i+1)+"_mc"];
				mc.vidURL=urlArray[i];
				mc.indx=i;
				mc.gotoAndStop(i+1);
				mc.addEventListener(MouseEvent.MOUSE_OVER, onIconOver);
				mc.addEventListener(MouseEvent.MOUSE_OUT, onIconOut);
				mc.addEventListener(MouseEvent.CLICK, onIconClick);
			}
			selectedIcon=myRoot.jb_mc.icon1_mc;
			myRoot.jb_mc.moviePlayer_mc.posterPlay.visible=false;
			//myRoot.jb_mc.closingCTA_mc.visible=false;
			//myRoot.jb_mc.moviePlayer_mc.controller_mc.info_mc.stop();
			//myRoot.jb_mc.moviePlayer_mc.controller_mc.fullscreenButton.visible=false;
			//myRoot.jb_mc.closingCTA_mc.addFrameScript(7,stateVid2CTA);
			//myRoot.jb_mc.closingCTA_mc.addFrameScript(90,stateWait); // 90 is 5 seconds
			//myRoot.jb_mc.closingCTA_mc.hit_mc.mouseEnabled = true;
			//myRoot.jb_mc.closingCTA_mc.hit_mc.buttonMode = true;
			//myRoot.jb_mc.closingCTA_mc.hit_mc.addEventListener(MouseEvent.CLICK, onContactClick);
			//myRoot.jb_mc.closingCTA_mc.gotoAndStop(1);

			//stateExpanding();
			stateWait();

			// prepare forms
			initForm(form1);
			myRoot.form1_mc.send_btn.addEventListener(MouseEvent.CLICK, onSendForm1);
			myRoot.form1_mc.rules_btn.addEventListener(MouseEvent.CLICK, onRulesClick);
			myRoot.form1_mc.visible=false;
			initForm(form2);
			myRoot.form2_mc.send_btn.addEventListener(MouseEvent.CLICK, onSendForm2);
			myRoot.form1_mc.visible=false;
			resetValidationIndicators();

			// prepare navigation
			myRoot.action_mc.ask_btn.addEventListener(MouseEvent.CLICK, onAskClick);
			myRoot.action_mc.choose_btn.addEventListener(MouseEvent.CLICK, onChooseClick);
			myRoot.action_mc.contact_btn.addEventListener(MouseEvent.CLICK, onContactClick);
			myRoot.action_mc.contact_btn.visible=false;
			myRoot.action_mc.contact_mc.visible=false;
			myRoot.action_mc.gotoAndStop(1);
			trackPage("home");

			myRoot.jb_mc.close_btn.addEventListener(MouseEvent.CLICK, closeExp);
			//this.addEventListener(MouseEvent.ROLL_OUT, closeExp);

		}
		// navigation events ///////////////////////////////////////////////////////
		private function onRulesClick(e:MouseEvent) {
			//trace(this+" onRulesClick clicked");
			trackEvent("microBtn", "click", "contestRules");
			navigateToURL(new URLRequest(rulesURL), '_self');
		}
		private function onChooseClick(e:MouseEvent) {
			trackEvent("microBtn", "click", "chooseVideo");
			//trace(this+" onChooseClick clicked");
			myRoot.action_mc.gotoAndStop(1);
			myRoot.form1_mc.visible=false;
			myRoot.form2_mc.visible=false;
			myRoot.formThanks_mc.visible=false;
			myRoot.jb_mc.visible=true;
			showCTA();
		}
		private function onAskClick(e:MouseEvent) {
			trackEvent("microBtn", "click", "askQuestion");
			//trace(this+" onAskClick clicked");
			myRoot.action_mc.gotoAndStop(2);
			resetValidationIndicators();
			myRoot.form1_mc.visible=true;
			myRoot.form2_mc.visible=false;
			myRoot.formThanks_mc.visible=false;
			myRoot.fail_mc.visible=false;
			myRoot.jb_mc.visible=false;
			showCTA();
		}
		private function onContactClick(e:MouseEvent) {
			trackEvent("microBtn", "click", "contact");
			//trace(this+" onContactClick clicked");
			navigateToURL(new URLRequest(clickTag), '_self');

		}
		private function showCTA() {
			myRoot.action_mc.contact_btn.visible=true;
			myRoot.action_mc.contact_mc.visible=true;
		}
		private function closeExp(e:MouseEvent) {
			trackEvent("microBtn", "click", "closeVideo");
			trace(this+" closeExp");
//			if (ExternalInterface.available) {
//				ExternalInterface.call("sendToJavaScript", "close");
//			}
			vidplyr.pauseVideo();
			stateWait();
		}
		private function trackEvent(category:String, action:String, id:String){
			 if (ExternalInterface.available) {
                try {
                    ExternalInterface.call("pageTracker._trackEvent", category, action, id);
                } catch (error:SecurityError) {
                    this.output_txt.appendText("A SecurityError occurred: " + error.message + "\n");
                } catch (error:Error) {
                    this.output_txt.appendText("An Error occurred: " + error.message + "\n");
                }
            } else {
                this.output_txt.appendText("External interface is not available for this container.");
            }
		}
		private function trackPage(id:String){
			 if (ExternalInterface.available) {
                try {
					ExternalInterface.call("pageTracker._trackPageview", ("/Be Libro Microsite/"+id) );   
                } catch (error:SecurityError) {
                    this.output_txt.appendText("A SecurityError occurred: " + error.message + "\n");
                } catch (error:Error) {
                    this.output_txt.appendText("An Error occurred: " + error.message + "\n");
                }
            } else {
                this.output_txt.appendText("External interface is not available for this container.");
            }
		}


		// video juke box functions ///////////////////////////////////////////////////
		private function onVidComplete(e:Event):void {
			trackEvent("microVid", "player", "videoComplete");
			trace(this + ": onVidComplete() called.");
			//stateVidCTA();
			stateWait();
		}
		private function tintMovieClip(mc:Sprite, colorNum:Number):void {
			var colorTransform:ColorTransform=mc.transform.colorTransform;
			colorTransform.color=colorNum;
			mc.transform.colorTransform=colorTransform;
		}
		private function onIconClick(e:MouseEvent) {
			trackEvent("microVid", "click", "icon");
			var mc:MovieClip=MovieClip(e.currentTarget);
			tintMovieClip(selectedIcon.back_mc, normColorHex);
			selectedIcon=mc;
			tintMovieClip(selectedIcon.back_mc, selColorHex);
			trace(this+" onIconClick - selectedIcon.vidURL"+selectedIcon.vidURL);
			vidplyr.setVideo(selectedIcon.vidURL);
			//jb_mc.moviePlayer_mc.controller_mc.info_mc.gotoAndStop(selectedIcon.indx+1);
			statePlay();
			showCTA();
		}
		private function onIconOver(e:MouseEvent) {
			var mc:MovieClip=MovieClip(e.currentTarget);
			myRoot.jb_mc.setChildIndex(mc, myRoot.jb_mc.numChildren-1);
		}
		private function onIconOut(e:MouseEvent) {
			var mc:MovieClip=MovieClip(e.currentTarget);
			//trace(this+" onIconOut - jb_mc.numChildren:"+jb_mc.numChildren); // this increases & decreases without my code adding/removing objects. Certain mcs were duplicated. When I removed all the frames except frame 1, then this worked.
			myRoot.jb_mc.setChildIndex(mc, 0);
		}
		private function onFullScrn(e:FullScreenEvent){
			if (stage.displayState == StageDisplayState.NORMAL){
				myRoot.jb_mc.close_btn.visible=true;
		   }else{
				trackEvent("microVid", "click", "fullscreen");
				myRoot.jb_mc.close_btn.visible=false;
		   }
		}

		// video state functions
		private function stateExpanding():void {
			//myRoot.jb_mc.closingCTA_mc.visible=false;
			myRoot.jb_mc.moviePlayer_mc.visible=false;
			myRoot.jb_mc.shadow_mc.visible=false;
			myRoot.jb_mc.icon1_mc.visible=false;
			myRoot.jb_mc.icon2_mc.visible=false;
			myRoot.jb_mc.icon3_mc.visible=false;
			myRoot.jb_mc.close_btn.visible=false;
		}
		private function stateVidCTA():void {
			//myRoot.jb_mc.closingCTA_mc.visible=true;
			//myRoot.jb_mc.closingCTA_mc.gotoAndPlay(1);
			myRoot.jb_mc.close_btn.visible=true;
		}
		private function stateVid2CTA():void {
			// happens a few frames after the first to allow for the tweening
			myRoot.jb_mc.moviePlayer_mc.visible=false;
			myRoot.jb_mc.shadow_mc.visible=false;
			myRoot.jb_mc.close_btn.visible=true;
		}
		private function stateWait():void {
			myRoot.jb_mc.moviePlayer_mc.visible=false;
			myRoot.jb_mc.shadow_mc.visible=false;
			//myRoot.jb_mc.closingCTA_mc.visible=false;
			myRoot.jb_mc.close_btn.visible=false;
			tintMovieClip(selectedIcon.back_mc, normColorHex);
		}
		private function statePlay():void {
			//myRoot.jb_mc.closingCTA_mc.visible=false;
			//myRoot.jb_mc.closingCTA_mc.gotoAndStop(1);
			myRoot.jb_mc.moviePlayer_mc.visible=true;
			myRoot.jb_mc.shadow_mc.visible=true;
			myRoot.jb_mc.close_btn.visible=true;
		}

		// form functions /////////////////////////////////////////////////////////////////
		private function initForm(form:Object):void {
			// set default values and tab index
			var f:Array=form.fields;
			for (var i:int=0; i<f.length; i++) {
				var t:String=f[i].type;
				if(!(t=="hidden")){
					f[i].obj = f[i];
					switch (t) {
						case "regular" :
							f[i].field.text=f[i].val;
							f[i].valInd.visible=false;
							f[i].field.tabIndex=i+1;
							break;
						case "check" :
							f[i].field.check_btn.addEventListener(MouseEvent.CLICK, onUncheckClick);
							f[i].field.uncheck_btn.addEventListener(MouseEvent.CLICK, onCheckClick);
							if (f[i].val=="0") {
								f[i].field.check_btn.visible=false;
							} else {
								f[i].field.uncheck_btn.visible=false;
							}
							break;
						case "multiline" :
							f[i].field.text=f[i].val;
							f[i].valInd.visible=false;
							f[i].field.tabIndex=i+1;
							break;
						default :
							trace(this+" initForm - Type of field could not be deterimined.");
					}
				}
			}
		}
		private function onSendForm1(e:MouseEvent) {
			//trace(this+" onSendForm1 clicked");
			trackEvent("microForm", "click", "send form1 not validated");
			resetValidationIndicators();
			if (validateForm(form1.fields)) {
				// collect data

				var loader:URLLoader=new URLLoader  ;
				var req:URLRequest=new URLRequest(form1URL);
				var variables:URLVariables=new URLVariables  ;
				//loader.dataFormat = URLLoaderDataFormat.VARIABLES;
				req.method=URLRequestMethod.POST;

				variables.name=escape(form1.fields[1].field.text);
				variables.email=escape(form1.fields[2].field.text);
				variables.city=escape(form1.fields[3].field.text);
				variables.libro=escape(form1.fields[4].val);
				variables.question=escape(form1.fields[5].field.text);
				req.data=variables;
				loader.load(req);
				loader.addEventListener(Event.COMPLETE, onSend1Complete);
				loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

			}
//				form1_mc.visible=false;
//				form2_mc.visible=true;

		}
		private function onSendForm2(e:MouseEvent) {
			trackEvent("microForm", "click", "send form2 not validated");
			//trace(this+" onSendForm2 clicked");
			resetValidationIndicators();
			// Find all non-hidden && non-empty fields
			var formFields:Array=form2.fields;
			var formValid:Boolean=true;
			var filledFields:Array=[];
			for (var i:int=0; i<formFields.length; i++) {
				var field:Object=formFields[i];
				if( !(field.type=="hidden")&&(field.field.text.length>1) ){
					filledFields.push(field);
				}
			}
			// validate non-empty fields (need at least one valid email address)
			if(filledFields.length==0){
				formValid=false;
				form2.fields[0].valInd.visible=true;
			}
			for (i=0; i<filledFields.length; i++) {
				field=filledFields[i];
				if (! fieldValidation(field)) {
					formValid=false;
					field.valInd.visible=true;
				}
			}			
			
			if (formValid) {
				// collect data

				var loader:URLLoader=new URLLoader  ;
				var req:URLRequest=new URLRequest(form2URL);
				var variables:URLVariables=new URLVariables  ;
				//loader.dataFormat = URLLoaderDataFormat.VARIABLES;
				req.method=URLRequestMethod.POST;

				variables.ID=escape(id);
				variables.name=escape(myRoot.form1_mc.name_txt.text);
				var emails:String = filledFields[0].field.text;
				for (i=1; i<filledFields.length; i++) {
					emails+= ",";
					emails+= filledFields[i].field.text;
				}			
				variables.friends=escape(emails);
				
				req.data=variables;
				loader.load(req);
				loader.addEventListener(Event.COMPLETE, onSend2Complete);
				loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			}else{
				myRoot.form2_mc.visible=true;
			}
		}
		private function onSend1Complete(e:Event):void {
			var stringArray:Array = e.target.data.split("<!DOCTYPE html");
			trace(this+" onSend1Complete - xml returned:"+stringArray[0]);
			var myXML:XML=new XML(stringArray[0]);
			id=myXML.ID.text()[0];
			if (int(id)>-1) {
				trackEvent("microForm", "click", "send form1 successful");
				myRoot.form1_mc.visible=false;
				myRoot.form2_mc.visible=true;
			} else {
				//show which fields failed
				myRoot.fail_mc.error_txt.text=this+" onSend1Complete:"+e.target.data;
				//form1_mc.question_txt.appendText( "\n"+"listing fields:");
				var invalidList=myXML.Invalid.Field;
				for (var i:int=0; i<invalidList.length();i++){
					var invalidField = invalidList[i].@name;
					//myRoot.form1_mc.question_txt.appendText("\n"+invalidField);
					//videosXML[idx].@url;
					try{
						myRoot.form1[invalidField].valInd.visible=true;
					}catch(e:Error){
						myRoot.fail_mc.visible=true;
						myRoot.fail_mc.error_txt.append(" Error Catch:"+e);
					}
				}
			}
		}
		private function onSend2Complete(e:Event):void {
			var stringArray:Array = e.target.data.split("<!DOCTYPE html");
			trace(this+" onSend1Complete - xml returned:"+stringArray[0]);
			var myXML:XML=new XML(stringArray[0]);
			var error=myXML.ErrorCode.text()[0];
			if (int(error)>-1) {
				trackEvent("microForm", "click", "send form2 successful");
				myRoot.form1_mc.visible=false;
				myRoot.form2_mc.visible=false;
				myRoot.formThanks_mc.visible=true;
			} else {
				//fail_mc.error_txt.text=this+" onSend2Complete:"+e.target.data;
				myRoot.fail_mc.error_txt.text="Error:";
				var invalidList=myXML.Invalid.Field;
				for (var i:int=0; i<invalidList.length();i++){
					var invalidField = invalidList[i].@name;
					if(invalidField=="friends"){
						// just highlight the first in the list
						try{
							//form1.fields[invalidField].valInd.visible=true;
							myRoot.form2.fields[0].valInd.visible=true;
							myRoot.form2.fields[1].valInd.visible=true;
							myRoot.form2.fields[2].valInd.visible=true;
							myRoot.form2.fields[3].valInd.visible=true;
							myRoot.form2.fields[4].valInd.visible=true;
							myRoot.form2_mc.visible=true;
						}catch(e:Error){
							myRoot.fail_mc.visible=true;
							myRoot.fail_mc.error_txt.append(" Error Catch:"+e);
						}
					}else{
						myRoot.fail_mc.visible=true;
						myRoot.fail_mc.error_txt.appendText("\nMissing:"+invalidField);
					}
				}
			}
		}
		private function validateForm(formFields:Array):Boolean {
			var formValid:Boolean=true;
			for (var i:int=0; i<formFields.length; i++) {
				var field:Object=formFields[i];
				if(!(field.type=="hidden") && field.required){
					if (! fieldValidation(field)) {
						formValid=false;
						field.valInd.visible=true;
						//trace(this+" Please make sure all your email addresses are valid.");
					}
				}
			}			
			return formValid;
		}
		private function fieldValidation(field:Object):Boolean{
			var fieldValid:Boolean=true;
			var valType:String = field.valType;
			switch (valType) {
				case "notEmpty" :
					fieldValid=field.field.text.length>1;
					break;
				case "email" :
					fieldValid=checkEmail(stripspaces(field.field.text));
					break;
				case "check" :
					// no validation required
					break;
				default :
					trace(this+" initForm - Type of validation could not be determined.");
			}
			return fieldValid;
		}
		private function resetValidationIndicators():void {
			resetValidationIndicatorsForm(form1.fields);
			resetValidationIndicatorsForm(form2.fields);
			myRoot.form2_mc.visible=false;
			myRoot.formThanks_mc.visible=false;
			myRoot.fail_mc.visible=false;
		}
		private function resetValidationIndicatorsForm(formFields:Array):void {
			for (var i:int=0; i<formFields.length; i++) {
				if(!(formFields[i].type=="hidden")){formFields[i].valInd.visible=false;}
			}
		}
		private function onCheckClick(e:MouseEvent) {
			trace(this+" onCheckClick clicked: "+e.currentTarget.name);
			myRoot.form1_mc.libro_chk.check_btn.visible=true;
			myRoot.form1_mc.libro_chk.uncheck_btn.visible=false;
			myRoot.form1.fields[4].val="1";
		}
		private function onUncheckClick(e:MouseEvent) {
			trace(this+" onUncheckClick clicked: "+e.currentTarget.name);
			myRoot.form1_mc.libro_chk.check_btn.visible=false;
			myRoot.form1_mc.libro_chk.uncheck_btn.visible=true;
			myRoot.form1.fields[4].val="0";
		}
		private function checkEmail(whichObj:String):Boolean {
			//check for @ and .
			//check @ preceeds last dot
			//check that @ is not first
			//email cannot have any spaces
			trace(this+" checkEmail: "+whichObj);
			var emailBool:Boolean;
			if (whichObj.indexOf("@")==-1||whichObj.indexOf("@")==0) {//not present or first
				emailBool=false;
			} else {
				emailBool=true;//if @ exists check for dot
				if (whichObj.lastIndexOf(".")==-1||whichObj.lastIndexOf(".")==whichObj.length-1) {//not present or at very end
					emailBool=false;
				} else {
					emailBool=true;//if both are true check @ preceeds dot
					if (whichObj.lastIndexOf(".")<whichObj.indexOf("@")||whichObj.lastIndexOf(".")==whichObj.indexOf("@")+1) {//not before and not directly after
						emailBool=false;
					} else {
						emailBool=true;
						//lastly check it has NO spaces in it
						for (var i:Number = 0; i < whichObj.length; i++) {
							if (whichObj.charAt(i)==" ") {//if the character is a space
								emailBool=false;
							}
						}
					}
				}
			}
			trace(this+" checkEmail -emailBool: " + emailBool);
			return emailBool;
		}
		private function stripspaces(originalstring:String):String {
			trace(this+"stripspaces: '"+originalstring+"'");
			var original:Array=originalstring.split(" ");
			return (original.join(""));
		}
		private function securityErrorHandler(e:SecurityErrorEvent):void {
			trace("securityErrorHandler: " + e);
			trackEvent("micro", "error", "securityErrorHandler: " + e);
			myRoot.fail_mc.visible=true;
			myRoot.fail_mc.error_txt.text=e;
		}
		private function ioErrorHandler(e:IOErrorEvent):void {
			trace("ioErrorHandler: " + e);
			trackEvent("micro", "error", "ioErrorHandler: " + e);
			myRoot.fail_mc.visible=true;
			myRoot.fail_mc.error_txt.text=this+" ioErrorHandler:"+e.text;
		}
		
	}
}