package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;

import flash.events.Event;
import flash.display.*;
public class proj5 extends Sprite {
private var flag1:Boolean = false;
//private var holder:Sprite = new Sprite();
private var xCal:int = 0;
private var yCal:int = 0;
private var wide:int =0;
private var high:int =0;
private var xHome:int =0;
private var yHome:int =0;
private var xNew:int =0;
private var yNew:int =0;
private var homeSet:Boolean=true;
private var inList:Boolean=false;

private var numOfVids:int =0;
private var sizeOfVid:int =75;

private var imgLoader:ImageLoader;
public var loaded:Boolean = false;
private var image:Bitmap;
private var imageB:Bitmap;
private var imageC:Bitmap;
private var holder:Sprite = new Sprite;
private var myTimer:Timer = new Timer(1, 0);
private var hoverTimer:Timer = new Timer(1, 0);
private var fileName:String = "";

private var OverlayOn:Boolean = true;

public function getSizeOfVid():int {
return sizeOfVid;
}
public function setInList(flag:Boolean):void {
inList = flag;
}
public function getInList():Boolean {
return inList;
}
public function isAbove(xPos:int, yPos:int):Boolean {
if ((getX()-1<xPos) && (getX()+getWidth()>xPos)) {
if ((getY()-1<yPos) && (getY()+getHeight()>yPos)) {
return true;
}
}
//getY();
//getWidth();
//getHeigth();
return false;
}
public function getThumbXPos():int {
return getX() + 35;
}
public function getThumbYPos():int {
return getY() + 45 + numOfVids++ * sizeOfVid;
}
public function getRootX():int {
return getX() + 35;
}
public function getRootY():int {
return getY() + 45;
}
public function proj5(xPos:int, yPos:int, a:int, b:int, imgName:Array) {
wide =a;
high =b;
//holder.graphics.beginFill(0x000000);
//holder.graphics.drawRect(wide*-.5, high*-.5, wide, high);
//holder.graphics.endFill();
holder.addEventListener(MouseEvent.MOUSE_DOWN, down1);
holder.addEventListener(MouseEvent.MOUSE_OVER, mouseOverEvent);
holder.addEventListener(MouseEvent.MOUSE_OUT, mouseOutEvent);
this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEvent);
//holder.x=xPos+wide*.5;
//holder.y=yPos+high*.5;
holder.x=xPos;
holder.y=yPos;

fileName = imgName[0];

addChild(holder);

imgLoader=new ImageLoader();
imgLoader.addEventListener(ImageLoader.IMGS_LOADED,allLoaded);
imgLoader.loadImgs(imgName);
}
public function mouseMoveEvent(event:MouseEvent):void {
trace("A MOVE click has occured - "+fileName);
overlayOut();
}
public function mouseOverEvent(event:MouseEvent):void {
trace("A OVER click has occured - "+fileName);
hoverTimer.start();
}
public function mouseOutEvent(event:MouseEvent):void {
trace("A OUT click has occured - "+fileName);
//overlayOut();
hoverTimer.reset();
}
public function goHome():void {
setPos(xHome,yHome);
//holder.x=xHome;
//holder.y=yHome;
}
public function up1(event:MouseEvent):void {
flag1 = false;
xCal = 0;
yCal = 0;
//trace(holder.x+" ,"+ holder.y);
}
public function down1(event:MouseEvent):void {
flag1 = true;
trace("Down 1 event has Occured.");
xCal = holder.x-mouseX;
yCal = holder.y-mouseY;
}
public function moveIt(event:MouseEvent):void {
//trace("m1"+mouseX);
if (flag1 && !inList) {
holder.x=int((mouseX+xCal)/10)*10;
holder.y=int((mouseY+yCal)/10)*10;
}
}
public function timerHandler(event:TimerEvent):void {
if (xNew<holder.x) {
holder.x--;
} else if (xNew>holder.x) {
holder.x++;
}
if (yNew<holder.y) {
holder.y--;
} else if (yNew>holder.y) {
holder.y++;
}
if ((yNew==holder.y)&&(xNew==holder.x)) {
myTimer.stop();
//trace("End move");
}
if (xNew<holder.x) {
holder.x--;
} else if (xNew>holder.x) {
holder.x++;
}
if (yNew<holder.y) {
holder.y--;
} else if (yNew>holder.y) {
holder.y++;
}
if ((yNew==holder.y)&&(xNew==holder.x)) {
myTimer.stop();
//trace("End move");
}
if (xNew<holder.x) {
holder.x--;
} else if (xNew>holder.x) {
holder.x++;
}
if (yNew<holder.y) {
holder.y--;
} else if (yNew>holder.y) {
holder.y++;
}
if ((yNew==holder.y)&&(xNew==holder.x)) {
myTimer.stop();
//trace("End move");
}
dispatchEvent(new Event("finishedMoving"));
}
public function removeVid():void {
numOfVids--;
}
public function setPos(xPos:int, yPos:int):void {

xNew = xPos;
yNew = yPos;

if (homeSet) {
xHome=xPos;
yHome=yPos;
homeSet = false;

}
myTimer.addEventListener("timer", timerHandler);
hoverTimer.addEventListener("timer", hoverHandler);
myTimer.start();

}
public function hoverHandler(event:TimerEvent):void {
trace("hoverHandelerEVENT - "+ hoverTimer.currentCount);
if (hoverTimer.currentCount>100) {
overlayIn();
}
}
public function getPos():String {
return String(holder.x) + String(holder.y);
}
public function getX():int {
return holder.x;
}
public function getY():int {
return holder.y;
}
public function getWidth():int {
return wide;
}
public function getHeight():int {
return high;
}
public function overlayIn():void {

addChild(imageB);
if (hoverTimer.currentCount==101)
dispatchEvent(new Event("moveMeUp"));
if (OverlayOn) {

if (imageB.alpha<1) {
imageB.alpha += .01;
}
}
}
public function overlayOut():void {

imageB.alpha =0;
if(contains(imageB))
removeChild(imageB);
}
public function disableOverlay():void {
OverlayOn = false;
}

private function allLoaded(e:Event):void {
//Create Prime Image
loaded = true;
image = Bitmap(imgLoader.bitmapsArray[0]);
image.x = xHome;
image.y = yHome;
image.alpha = .2;
image.width = wide;
image.height = high;

imageB = Bitmap(imgLoader.bitmapsArray[1]);
imageB.y = 0;
imageB.x = 0;
imageB.alpha = 0;
imageB.width = 630;
imageB.height = 410;

imageC = Bitmap(imgLoader.bitmapsArray[2]);
imageC.y = 0;
imageC.x = 0;
imageC.width = wide;
imageC.height = high;

addChild(image);
holder.addChild(imageC);
}
}
}
//IMG_1.JPG