as3 QR Code reader

Not to sure how to work this QR Scanner I’ve installed it on my s2,
The camera View is all Messed up can barley make out the image.
I’ve skimmed through the code but I’m not to sure where the problem is.


import com.logosware.event.QRdecoderEvent;
	import com.logosware.event.QRreaderEvent;
	import com.logosware.utils.QRcode.QRdecode;
	import com.logosware.utils.QRcode.GetQRimage;
	
	import net.hires.debug.Stats;
	
	import com.bit101.components.*;
	import flash.media.Sound;
	import flash.display.*;
	import flash.media.Camera;
	import flash.media.Video;
	import flash.events.*;
	import flash.utils.Timer;
	import flash.desktop.NativeApplication;
	import flash.geom.Rectangle;
	
	public class ReadQrSimple extends Sprite 
	{	
  private var detectionRate = 10;
  
  private var getQRimage:GetQRimage;
  private var qrDecode:QRdecode;
  
  //string to save first decoded
  private var qrDecodedDataOld:String; 
  
  private var cam:Camera;
  private var video:Video;
  
  private var markerArea;
  private var markerAreaRect:Rectangle;
  var holder:Holder = new Holder();
  private var markerGuide:Sprite;
  private var txt:TextArea;
  private var refreshTimer:Timer;
  private var timesCompleted = 0;
  private var btnclear:BtnClear = new BtnClear();
  private var quit:Quit = new Quit();
  var snd:Sound = new camerasound();
  var readSuccess:Number = 0;
  
  public function ReadQrSimple():void 
  {	
   displayDebugText();
         
   // initialize the webcam   
   cam = Camera.getCamera();
   
   if(cam != null)
   {	
    cam.setMode(320,240,30);
    video = new Video(cam.width, cam.height);
    
    holder.x = 240;
    holder.y = 290;
    holder.rotation = 90;
    holder.scaleX = 1.3;
    holder.scaleY = 1.3;
    addChild(holder);
    
    video.attachCamera(cam);
    video.x = -160;
    video.y = -120;
    video.scaleX = 1;
    video.scaleY = 1;
    holder.addChild(video);
    
    btnclear.x= 70;
    btnclear.y = 770;
    addChild(btnclear);
    btnclear.buttonMode = true;
    
    btnclear.addEventListener(MouseEvent.CLICK, onClear);
    
    quit.x= 250;
    quit.y = 770;
    
    addChild(quit);
    quit.buttonMode = true;
    quit.addEventListener(MouseEvent.CLICK, QuitApplication);
    
    markerArea = 200;
    markerAreaRect = new Rectangle((cam.width-markerArea)/2,(cam.height-markerArea)/2,markerArea,markerArea);
    
    getQRimage = new GetQRimage(video);
    
    // run onQrImageReadComplete when the QR Code is found 
    getQRimage.addEventListener(QRreaderEvent.QR_IMAGE_READ_COMPLETE, onQrImageReadComplete);
    
    // setup QRdecoder object
    qrDecode = new QRdecode();
    
    // invoked when QR Code is found  
    qrDecode.addEventListener(QRdecoderEvent.QR_DECODE_COMPLETE, onQrDecodeComplete);
	
    // check the image n times a second (n = detectionRate)
    refreshTimer = new Timer(1000/detectionRate);  
    refreshTimer.addEventListener(TimerEvent.TIMER, refresh);
    refreshTimer.start();
   }
   else
   { txt.text = "Didn't find a webcam
";
   }
   
   // display a guide where to put the marker	
   displayMarkerGuide();
   
   // add Mr. Doobs Hi-ReS! stats 
   //addChild( new Stats() );
  }
  
  function onClear(event:MouseEvent):void{
   
   trace("clear");
   myQRText.text = "   ";
   readSuccess = 0;
   
  }
  
  private function refresh( event:Event ):void
  {	// process webcam image and check for QRcode
   getQRimage.process();
  }
  
  private function onQrImageReadComplete(e:QRreaderEvent):void
  {	
   qrDecode.setQR(e.data);
   qrDecode.startDecode();  
  }
  
  private function onQrDecodeComplete(e:QRdecoderEvent):void
  {	// e.data is the string decoded from QR Code  
   timesCompleted++; // number times of recognition since start of program
   
   var decodedDataNew = e.data;
   var compare = decodedDataNew.localeCompare(qrDecodedDataOld);
   
   if(compare==0 && readSuccess == 0)
   { txt.text = String(timesCompleted)+"	 data: "+e.data+"
"+txt.text;
   
   snd.play();
   myQRText.text = String(e.data);
   readSuccess = 1;
   }
   else
   { txt.text = String(timesCompleted)+"	 ERROR 
"+txt.text;
   }
   
   qrDecodedDataOld = decodedDataNew;
  }
  
  private function displayMarkerGuide():void
  {	markerGuide = new Sprite();
   
   var guideLW:int = 5;
   var guideColor:uint = 0xFFFFFF;
   
   // make the MarkerGuide smaller than the markerArea
   // in this case users don't have to put the marker that precise in the area for detection
   var mRect = markerAreaRect;
   mRect.inflate(-40,-40)
   
   with(markerGuide.graphics) 
   {	lineStyle(guideLW, guideColor, 1, false, LineScaleMode.NONE, CapsStyle.SQUARE, JointStyle.MITER);
    drawRect(mRect.x,mRect.y,mRect.width,mRect.height);
    lineStyle();
    beginFill(guideColor);
    drawRect(mRect.x,mRect.y,10,10);
    drawRect(mRect.x+mRect.width-(guideLW*2), mRect.y,10,10);
    drawRect(mRect.x, mRect.y+mRect.height-(guideLW*2),10,10);
    endFill();
   }
   markerGuide.alpha = 0.7;
   markerGuide.scaleX = 2.6;
   markerGuide.scaleY = 2.0;
   markerGuide.x = -420;
   markerGuide.y = -240;
   
   holder.addChild(markerGuide);	
  }
  
  private function displayDebugText():void
  {	txt = new TextArea();
   
   txt.editable = false;
   txt.width = stage.stageWidth-20;
   txt.height = stage.stageHeight-700;
   txt.x=10;
   //txt.y=stage.stageHeight-txt.height-10;
   txt.y=750;
   //addChild(txt);
  }
  
  function QuitApplication(e:Event):void
  {
   trace("quit");
   holder.removeChild(video);
   cam = null;
   NativeApplication.nativeApplication.exit();
  }
	}
}