package classes {
import flash.display.*;
import flash.geom.Point;
import flash.text.*;
import gs.TweenLite;
import fl.transitions.easing.Strong;
import flash.events.*;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.ui.Mouse;
public class ImageViewer extends Sprite{
private const maxWidth:Number = Root.imageViewerwWidth;
private const maxHeight:Number = Root.imageViewerHeight;
private var imageWidth:Number;
private var imageHeight:Number;
private var previewWidth:Number;
private var previewHeight:Number;
private var scale:Number;
private var imageHolder:Sprite = new Sprite ();
public var back:Shape = new Shape ();
private var image:Bitmap;
private var imageLabel:TextField = new TextField ();
private var format:TextFormat = new TextFormat ();
private var url:URLRequest;
private var arrow:Arrow = new Arrow ();
private var full:Fullscreen = new Fullscreen ();
private var scrollVert:Boolean;
private var styles:String = 'A:hover { text-decoration: underline; color: #FFFFFF; }';
public function ImageViewer () {
back = new Shape ();
back.graphics.beginFill (Root.imageViewerBorderColour);
back.graphics.drawRect (0, 0, maxWidth + 20, maxHeight + 20);
back.graphics.endFill ();
back.filters = [Root.glowFilter];
imageHolder.x = imageHolder.y = 10;
addChild (back);
format.align = TextFormatAlign.RIGHT;
format.color = 0xFFFFFF;
format.font = new GF ().fontName;
format.size = 14;
imageLabel.defaultTextFormat = format;
imageLabel.embedFonts = true;
imageLabel.antiAliasType = AntiAliasType.ADVANCED;
imageLabel.filters = [Root.thumbGlowFilter];
imageLabel.selectable = false;
imageLabel.autoSize = TextFieldAutoSize.RIGHT;
imageLabel.x = maxWidth - 10 - imageLabel.width;
imageLabel.y = maxHeight - 10 - imageLabel.height;
imageLabel.text = "Seleziona L'immagine desiderata";
//link
//imageLabel.addEventListener (TextEvent.LINK, jav);
var sheet:StyleSheet = new StyleSheet ();
sheet.parseCSS (styles);
imageLabel.styleSheet = sheet;
arrow.visible = false;
arrow.filters = [Root.thumbGlowFilter];
full.x = maxWidth - 10;
full.y = 10;
full.visible = false;
addChild (imageHolder);
addChild (imageLabel);
imageHolder.addChild (full);
imageHolder.addChild (arrow);
imageHolder.addEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.addEventListener (MouseEvent.MOUSE_OUT, out);
//fullimage
imageHolder.addEventListener (MouseEvent.CLICK, jav);
Root.stage.addEventListener (Event.RESIZE, stageResized);
}
public function jav(e:MouseEvent) {
var js:URLRequest=new URLRequest();
js.url="javascript
:show(0, '"+url+"');";
navigateToURL(js,'_self');
trace(url);
}
private function openImage (evt:TextEvent) : void {
navigateToURL (url, '_blanc');
}
public function showImage (src:Bitmap, name:String, url:String) : void {
this.url = new URLRequest (url);
//MI RESTITUISCE L'INDIRIZZO DI DOVE SI TROVA LA FOTO
trace(url);
//Tweener.addTween (image, { alpha:0, time:.7 } );
//Tweener.addTween (imageLabel, { alpha:0, time:.4 } );
TweenLite.to (image, .7, { alpha:0 } );
TweenLite.to (imageLabel, .4, { alpha:0 } );
imageWidth = src.width;
imageHeight = src.height;
scale = src.scaleX;
src.height = maxHeight;
src.scaleX = src.scaleY;
previewWidth = src.width;
previewHeight = src.height;
//Tweener.addTween (back, { , time:1.5, transition:"easeInOutExpo", onComplete

penImage } );
//Tweener.addTween (this, { , time:1.5, transition:"easeInOutExpo" });
//Tweener.addTween (full, { , transition:"easeInOutExpo" } );
TweenLite.to (back, 1.5, { width:src.width + 20, height:src.height + 20, ease:Strong.easeInOut, onComplete

penImage } );
TweenLite.to (this, 1.5, { x:int ((Root.stage.stageWidth - src.width - 20) * .5), ease:Strong.easeInOut } );
TweenLite.to (full, 1.5, { x:int (previewWidth - 10), ease:Strong.easeInOut } );
function openImage () : void {
imageHolder.removeEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.removeEventListener (MouseEvent.MOUSE_OUT, out);
//fullimage
imageHolder.removeEventListener (MouseEvent.CLICK, jav);
if (image != null) {
imageHolder.removeChild (image);
image = null;
}
image = src;
image.alpha = 0;
imageLabel.htmlText = name ;
imageHolder.addChildAt (image, 0);
imageLabel.x = image.width - imageLabel.width;
imageLabel.y = maxHeight - imageLabel.height;
//Tweener.addTween (image, { alpha:1, time:1 });
//Tweener.addTween (imageLabel, { alpha:1, time: .75 });
TweenLite.to (image, 1, { alpha:1 } );
TweenLite.to (imageLabel, 1, { alpha:1, onComplete:comps } );
function comps () : void {
imageHolder.addEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.addEventListener (MouseEvent.MOUSE_OUT, out);
//fullimage
imageHolder.addEventListener (MouseEvent.CLICK, jav);
}
}
}
private function over (evt:Event) : void {
full.visible = image != null;
}
private function out (evt:Event) : void {
full.visible = false;
}
private function down (evt:Event) : void {
if (image == null || imageWidth / scale < Root.stage.stageWidth || imageHeight / scale < Root.stage.stageHeight) {
navigateToURL (url, '_blanc');
return;
}
imageHolder.removeEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.removeEventListener (MouseEvent.MOUSE_OUT, out);
imageHolder.removeEventListener (MouseEvent.CLICK, jav);
if (image.height <= maxHeight) {
var p:Point = globalToLocal (new Point (0, 0));
var dimensions:Array = calcDimensions ();
full.gotoAndStop (2);
//Tweener.addTween (image, { , time:1.5, transition:"easeInOutExpo", onComplete:comp } );
//Tweener.addTween (imageHolder, { , time:1.5, transition:"easeInOutExpo"} );
//Tweener.addTween (imageLabel, { alpha:0, time:.7, onComplete:function () { imageLabel.visible = true }});
//Tweener.addTween (full, { x:Root.stage.stageWidth - 10, y:10, time:1.5, transition:"easeInOutExpo" });
TweenLite.to (image, 1.5, { width:dimensions [0], height:dimensions [1], onComplete:comp, ease:Strong.easeInOut } );
TweenLite.to (imageHolder, 1.5, { x

.x, y

.y, ease:Strong.easeInOut } );
TweenLite.to (imageLabel, .7, { alpha:0, onComplete:function () { imageLabel.visible = false } } );
TweenLite.to (full, 1.5, { x:int (stage.stageWidth - 10), y:10, ease:Strong.easeInOut } );
} else {
removeEventListener (Event.ENTER_FRAME, entFrame);
Root.thumbScroller.visible = Root.galleryChooser.visible = true;
arrow.visible = false;
arrow.stopDrag ();
Mouse.show ();
imageLabel.visible = true;
full.gotoAndStop (1);
/*Tweener.addTween (image, { x:0, y:0, width

reviewWidth, height

reviewHeight, time:1.5, transition:"easeInOutExpo" } );
Tweener.addTween (imageHolder, { x:10, y:10, time:1.5, transition:"easeInOutExpo"} );
Tweener.addTween (imageLabel, { alpha:1, time:.7, delay:1 } );
Tweener.addTween (full, { x

reviewWidth - 10, y: 10, time:1.5, transition:"easeInOutExpo" }); */
TweenLite.to (image, 1.5, { x:0, y:0, width

reviewWidth, height

reviewHeight, ease:Strong.easeInOut, onComplete:comps } );
TweenLite.to (imageHolder, 1.5, { x:10, y:10, ease:Strong.easeInOut } );
TweenLite.to (imageLabel, 1, { alpha:1, delay:1 } );
TweenLite.to (full, 1.5, { x:int (previewWidth - 10), y:10, ease:Strong.easeInOut } );
function comps () : void {
imageHolder.addEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.addEventListener (MouseEvent.MOUSE_OUT, out);
imageHolder.addEventListener (MouseEvent.CLICK, jav);
}
}
function comp () : void {
imageHolder.addEventListener (MouseEvent.MOUSE_OVER, over);
imageHolder.addEventListener (MouseEvent.MOUSE_OUT, out);
imageHolder.addEventListener (MouseEvent.CLICK, jav);
addEventListener (Event.ENTER_FRAME, entFrame);
Root.galleryChooser.visible = Root.thumbScroller.visible = false;
arrow.visible = true
arrow.startDrag (true);
Mouse.hide ();
}
}
private function calcDimensions () : Array {
var arr:Array = new Array ();
if (Root.stage.stageWidth / Root.stage.stageHeight > imageWidth / imageHeight) {
arr [0] = Root.stage.stageWidth;
arr [1] = arr [0] / imageWidth * imageHeight;
scrollVert = true;
} else {
arr [1] = Root.stage.stageHeight;
arr [0] = arr [1] / imageHeight * imageWidth;
scrollVert = false;
}
return arr;
}
private function entFrame (evt:Event) : void {
var pos:Point = new Point ();
pos.x = Root.stage.mouseX
pos.y = Root.stage.mouseY;
if (!scrollVert) {
image.x += int (((image.width - Root.stage.stageWidth) * ( -pos.x / Root.stage.stageWidth) - image.x) * Root.imageScrollSpeed);
arrow.rotation = Root.stage.mouseX > Root.stage.stageWidth * .5 ? 90 : -90;
} else {
image.y += int (((image.height - Root.stage.stageHeight) * ( -pos.y / Root.stage.stageHeight) - image.y) * Root.imageScrollSpeed);
arrow.rotation = Root.stage.mouseY > Root.stage.stageHeight * .5 ? 180 : 0;
}
}
private function stageResized (evt:Event) : void {
x = (Root.stage.stageWidth - back.width) * .5;
if (image.height > previewHeight) {
var pos:Point = imageHolder.globalToLocal (new Point (0, 0));
image.x = pos.x;
image.y = pos.y;
var arr:Array = calcDimensions ();
image.width = arr [0];
image.height = arr [1];
}
}
}
}
{