﻿if (!window.SLWebGallery)
    window.SLWebGallery = {};

var mainCanvas = null;

SLWebGallery.Page = function() {
}

SLWebGallery.Page.prototype =
{
    handleLoad: function(control, userContext, rootElement) {
        this.control = control;
        rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handleMouseDown));
    },
    handleMouseDown: function(sender, eventArgs) {

        // The following line of code shows how to find an element by name and call a method on it.
        // this.control.content.findName("Storyboard1").Begin();
    }
}
var tmediaType;
var loaderintro;
var loader;
var currPage;
var maxPage;
var imageNavType = "Next";
var activeTop = 0;
var imageTop = 0;
var imageCenter = 0;
var activeHeight = 0;
var screenWidth;
var ActiveImage;
var activeMovie;
var MovieControls;
var ImageNav;
var ActiveImageName;
var debug;
var sortBtnUHL;
var sortBtnHL;
var ImageCanvas;
var pagesCanvas;
var ImageFadeIn;
var sortHighlight;
var sortUnHighlight;
var AnimationNextPage;
var NextPage;
var pageIndex = 1;
var currentPage = 1;
var activeLeft = 0;
var leftAdjust = 0;
var leftPos = 0;
var imgData;
var loading = 0;
var baseline_height = 68
var plugin;
var activeIndex = 0;
var captionText;
var imageWidth;
var imageHeight;
var albumTitle;
var pageState;
var pageNumLeft = 0;
var imageBorder;
var imageBorder_Shadow;
var imagePlacement;
var NextOver_In;
var NextOver_Out;
var PrevOver_In;
var PrevOver_Out;
var imageChange_Start;
var imageChange_End;
var nextPage;
var prevPage;
var lastPage;
var firstPage;
var sortAnim;
var sortAnim_Back;
var imageOpen;
var pageOne = -1;
var pageSound;
var controlArray;
var totalCount = 0;
var finalCount = 0;
var animationloop;


function CanvasLoaded(sender, args) {

    plugin = sender.getHost();



    pageState = "scatter";
    mainCanvas = sender;
    debug = mainCanvas.findName("debug");
    debug.Visibility = "Collapsed";
    pageSound = mainCanvas.findName("pageSound_mp3");
    pageSound.Stop();
    loaderintro = mainCanvas.findName("loaderintro");
    animationloop = mainCanvas.findName("animationloop");
    loader = mainCanvas.findName("loader");
    sortText = mainCanvas.findName("sortText");
    currPage = mainCanvas.findName("currPage");
    maxPage = mainCanvas.findName("maxPage");
    nextPage = mainCanvas.findName("nextPage");
    prevPage = mainCanvas.findName("prevPage");
    firstPage = mainCanvas.findName("firstPage");
    lastPage = mainCanvas.findName("lastPage");
    imageChange_Start = mainCanvas.findName("imageChange_Start");
    imageChange_End = mainCanvas.findName("imageChange_End");
    imageBorder = mainCanvas.findName("imageBorder");
    imageBorder_Shadow = mainCanvas.findName("imageBorder_Shadow");
    imagePlacement = mainCanvas.findName("imagePlacement");
    pagesAnim = mainCanvas.findName("pagesAnim");
    pagesAnimBack = mainCanvas.findName("pagesAnimBack");
    PrevOver_In = mainCanvas.findName("PrevOver_In");
    PrevOver_Out = mainCanvas.findName("PrevOver_Out");
    NextOver_In = mainCanvas.findName("NextOver_In");
    NextOver_Out = mainCanvas.findName("NextOver_Out");
    sortHighlight = mainCanvas.findName("sortHighlight");
    sortUnHighlight = mainCanvas.findName("sortUnHighlight");
    sortBtnUHL = mainCanvas.findName("sortBtnUHL");
    sortBtnHL = mainCanvas.findName("sortBtnHL");
    ImageCanvas = mainCanvas.findName("ImageCanvas");
    ImageFadeIn = sender.findName("ImageFadeIn");
    ImageFadeOut = sender.findName("ImageFadeOut");
    NextPage = sender.findName("NextPage");
    AnimationNextPage = sender.findName("AnimationNextPage");
    sortAnim = sender.findName("sortAnim");
    sortAnim_Back = sender.findName("sortAnim_Back");
    screenWidth = mainCanvas.findName("ThumbCanvas").Width;
    screenHeight = mainCanvas.findName("ThumbCanvas").Height;
    activeMovie = mainCanvas.findName("activeMovie");
    MovieControls = mainCanvas.findName("MovieControls");
    ImageNav = mainCanvas.findName("ImageNav");
    ActiveImage = mainCanvas.findName("ActiveImage");
    ActiveImageName = mainCanvas.findName("selectImage");
    captionText = mainCanvas.findName("captionText");
    this.totalCount = 0;
    this.imgData = new Object();
    this.imgData.chapters = new Array();
    get_mediainfo(0, this);
}

function addControl(sender, activeIndex) {
    try {
        var imageControl = sender.getHost().content.createFromXaml(controlXaml(), true);

        controlArray[activeIndex] = imageControl;

        maxPage.Text = pageIndex.toString();
        var ext = "";
        var path = this.imgData.chapters[activeIndex].imageUrl;
        var extGif = path.substring(path.lastIndexOf(".") + 1, path.length).toLowerCase();
        if (extGif == "jpg" || extGif == "wmv" || extGif == "png") {
            ext = this.imgData.chapters[activeIndex].type;
        }
        else {
            return;
        }

        var rectangle = imageControl.findName("rectangle");
        var Shadow = imageControl.findName("Shadow");
        var moviePNG = imageControl.findName("moviePNG");
        var movieIcon = imageControl.findName("movieIcon");
        var imageElement = imageControl.findName("ImageElement");
        var imageLabel = imageControl.findName("ImageName");
        imageLabel.Text = this.imgData.chapters[activeIndex].filename;
        var caption = imageControl.findName("caption");
        caption.Text = this.imgData.chapters[activeIndex].Caption;
        var page = imageControl.findName("page");

        albumTitle.Text = this.imgData.chapters[activeIndex].Catalog;

        mainCanvas.FindName("pagesCanvas").children.add(imageControl);

        imageElement.Source = this.imgData.chapters[activeIndex].previewUrl;

        Shadow.Height = this.imgData.chapters[activeIndex].thumbHeight;
        Shadow.Width = this.imgData.chapters[activeIndex].thumbWidth;
        moviePNG.Height = this.imgData.chapters[activeIndex].thumbHeight;
        moviePNG.Width = this.imgData.chapters[activeIndex].thumbWidth;
        imageElement.Height = this.imgData.chapters[activeIndex].thumbHeight;
        imageElement.Width = this.imgData.chapters[activeIndex].thumbWidth;
        rectangle.Height = this.imgData.chapters[activeIndex].thumbHeight;
        rectangle.Width = this.imgData.chapters[activeIndex].thumbWidth;
        imageControl.Height = this.imgData.chapters[activeIndex].thumbHeight;
        imageControl.Width = this.imgData.chapters[activeIndex].thumbWidth;



        pagesCanvas.Width = pageIndex * mainCanvas.findName("ThumbCanvas").Width;

        var thumbRotate = imageControl.findName("canvasRotateThumb");
        var rotateScene = imageControl.findName("rotateScene");

        if (activeLeft + imageControl.Width > screenWidth) {
            activeTop = activeTop + activeHeight + 24;
            activeLeft = 0;
        }
        if (activeTop > screenHeight) {
            pageIndex = pageIndex + 1;
            activeTop = 0;

        }
        if (pageIndex > 1) {
            leftAdjust = 975 * (pageIndex - 1);
        }
        if (activeHeight != 0) {
            imageTop = activeHeight - imageElement.Height;
            imageElement["Canvas.Top"] = imageTop;
            rectangle["Canvas.Top"] = imageTop;
            Shadow["Canvas.Top"] = imageTop + 5;
            movieIcon["Canvas.Top"] = activeHeight - 20;
            movieIcon["Canvas.Left"] = this.imgData.chapters[activeIndex].thumbWidth - 20;
        }

        if (imageControl.Height > activeHeight) activeHeight = imageControl.Height;

        imageCenter = (imageControl.Width - imageElement.Width) / 2;
        imageElement["Canvas.Left"] = imageCenter;
        rectangle["Canvas.Left"] = imageCenter;
        Shadow["Canvas.Left"] = imageCenter + 5;


        imageControl["Canvas.Left"] = activeLeft + leftAdjust;
        imageControl["Canvas.Top"] = activeTop;

        var rand_no = (Math.random() * 90) - 45;

        thumbRotate.Angle = rand_no;

        activeIndex = activeIndex + 1;
        activeLeft = activeLeft + imageControl.Width + 5;

        var adjustedIndex = activeIndex - 1;
        var imageIndex = imageControl.findName("imageIndex");
        imageIndex.Text = adjustedIndex.toString();

        var mediaType = imageControl.findName("mediaType");
        mediaType.Text = ext.toString();
        if (ext != "Video") {
            movieIcon.Visibility = "Collapsed";
        }
        page.Text = pageIndex.toString();
        debug.Text = totalCount.toString() + " + " + this.imgData.chapters.length.toString();
    }
    catch (err) {
        return;
    }
    finalCount = this.totalCount;

}




function controlXaml() {
    var rand = (Math.random() * 90) - 45;
    var xaml_str = '';
    xaml_str += '<Canvas Name="Scene" Width="100" Height="100" Cursor="Hand" MouseEnter="RollOver_In" Canvas.ZIndex="1" MouseLeave="RollOver_Out" MouseLeftButtonUp="onImageClick" RenderTransformOrigin="0.5,0.5">';
    xaml_str += '         <Canvas.RenderTransform>';
    xaml_str += '           <TransformGroup>';
    xaml_str += '                   <ScaleTransform ScaleX="1" ScaleY="1"/>';
    xaml_str += '	                <SkewTransform AngleX="0" AngleY="0"/>';
    xaml_str += '                   <RotateTransform Name = "canvasRotateThumb" CenterX="0" CenterY="0" Angle="-15"/>';
    xaml_str += '	                <TranslateTransform X="0" Y="0"/>';
    xaml_str += '           </TransformGroup>';
    xaml_str += '         </Canvas.RenderTransform>';
    xaml_str += '<Canvas.Resources>';
    xaml_str += '<Storyboard Name="RollOver_InScatter">';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Scene" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="0" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '<Storyboard Name="RollOver_OutScatter">';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Scene" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="' + rand + '" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '<Storyboard Name="RollOver_In">';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0.016,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0.016,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ImageElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ImageElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:01" Value="#00000000"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Shadow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Shadow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1.2" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '<Storyboard Name="RollOver_Out">';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ImageElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ImageElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:01" Value="#25000000"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Shadow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '	<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Shadow" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">';
    xaml_str += '		<SplineDoubleKeyFrame KeyTime="00:00:01" Value="1" KeySpline="0,1,1,1"/>';
    xaml_str += '	</DoubleAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '<Storyboard Name="ThumbFade_In">';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="#AB000000" KeySpline="0,1,1,1"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="#7FFFFFFF" KeySpline="0,1,1,1"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '<Storyboard Name="ThumbFade_Out">';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="#23000000"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '	<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="rectangle" Storyboard.TargetProperty="(Shape.Stroke).(SolidColorBrush.Color)">';
    xaml_str += '		<SplineColorKeyFrame KeyTime="00:00:00.5000000" Value="#FFFFFFFF"/>';
    xaml_str += '	</ColorAnimationUsingKeyFrames>';
    xaml_str += '</Storyboard>';
    xaml_str += '</Canvas.Resources>	';
    xaml_str += '<Rectangle Width="100" Height="100" Fill="#AA1C1C1C" Canvas.Top="5.119" Canvas.Left="5.119" Name="Shadow" RenderTransformOrigin="0.5,0.5">';
    xaml_str += '	<Rectangle.RenderTransform>';
    xaml_str += '		<TransformGroup>';
    xaml_str += '			<ScaleTransform ScaleX="1" ScaleY="1"/>';
    xaml_str += '			<SkewTransform AngleX="0" AngleY="0"/>';
    xaml_str += '			<RotateTransform Angle="0"/>';
    xaml_str += '			<TranslateTransform X="0" Y="0"/>';
    xaml_str += '		</TransformGroup>';
    xaml_str += '	</Rectangle.RenderTransform>';
    xaml_str += '</Rectangle>';
    xaml_str += '<Image Name="ImageElement" Width="100" Height="100" RenderTransformOrigin="0.5,0.5">';
    xaml_str += '	<Image.RenderTransform>';
    xaml_str += '		<TransformGroup>';
    xaml_str += '			<ScaleTransform ScaleX="1" ScaleY="1"/>';
    xaml_str += '			<SkewTransform AngleX="0" AngleY="0"/>';
    xaml_str += '			<RotateTransform Angle="0"/>';
    xaml_str += '			<TranslateTransform X="0" Y="0"/>';
    xaml_str += '		</TransformGroup>';
    xaml_str += '	</Image.RenderTransform>';
    xaml_str += '</Image>';
    xaml_str += '<TextBlock Width="100" Height="100" Text="ImageName" TextWrapping="Wrap" Foreground="#FFFFFFFF" Name="ImageName" Visibility="Collapsed"/>';
    xaml_str += '<Rectangle Width="100" Height="100" Fill="#24000000" Stroke="#FFFFFFFF" Opacity="1" StrokeThickness=".5" RenderTransformOrigin="0.5,0.5" Name="rectangle">';
    xaml_str += '	<Rectangle.RenderTransform>';
    xaml_str += '		<TransformGroup>';
    xaml_str += '			<ScaleTransform ScaleX="1" ScaleY="1"/>';
    xaml_str += '			<SkewTransform AngleX="0" AngleY="0"/>';
    xaml_str += '			<RotateTransform Angle="0"/>';
    xaml_str += '			<TranslateTransform X="0" Y="0"/>';
    xaml_str += '		</TransformGroup>';
    xaml_str += '	</Rectangle.RenderTransform>';
    xaml_str += '</Rectangle>';
    xaml_str += '<TextBlock Width="100" Height="100" Text="TESTXAMLIMAGE" TextWrapping="Wrap" Name="imageIndex" Visibility="Collapsed"/>';
    xaml_str += '<TextBlock Width="100" Height="100" Text="TESTXAMLIMAGE" TextWrapping="Wrap" Name="mediaType" Visibility="Collapsed"/>';
    xaml_str += '<TextBlock Width="100" Height="100" Text="TESTXAMLIMAGE" TextWrapping="Wrap" Name="caption" Visibility="Collapsed"/>';
    xaml_str += '<TextBlock Width="100" Height="100" Text="TESTXAMLIMAGE" TextWrapping="Wrap" Name="page" Visibility="Collapsed"/>';
    xaml_str += '<Canvas Width="100" Height="100" Name="moviePNG">';
    xaml_str += '	<Image Width="13.332" Height="14.665" Name="movieIcon" Source="Controls/PhotoAndVideoControl/assets/movie-icon.png" Stretch="Fill" Canvas.Top="77.335" Canvas.Left="78.668"/>';
    xaml_str += '</Canvas>';
    xaml_str += '</Canvas> ';
    return xaml_str;

}

function Control_Send(host, control_path) {
    var downloader = host.createObject("downloader");
    downloader.addEventListener("completed", Control_DownloaderCompleted);
    downloader.open("GET", control_path);
    downloader.send();
}

function Control_DownloaderCompleted(sender, e) {
    var xamlItem = sender.getResponseText("");
    var host = sender.getHost();
    var page = host.content.findName("ThumbCanvas");
}
function RollOver_In(sender, args) {
    sender.findName("RollOver_In").Begin();
    sender["Canvas.ZIndex"] = 2;
    ActiveImageName.Text = sender.findName("ImageName").Text;
    if (pageState == "scatter") sender.findName("RollOver_InScatter").Begin();
}
function RollOver_Out(sender, args) {
    sender.findName("RollOver_Out").Begin();
    sender["Canvas.ZIndex"] = 0;
    if (pageState == "scatter") sender.findName("RollOver_OutScatter").Begin();
    if (imageOpen == false) {
        captionText.Text = "";
        ActiveImageName.Text = "";
    }
}

function onImageClick(sender, args) {
    tmediaType = "";
    loader.Visibility = "Visible";
    loaderintro.Begin();
    imageOpen = true;
    var imageIndex = sender.findName("imageIndex").Text;
    var width = this.imgData.chapters[imageIndex].imageWidth;
    var height = this.imgData.chapters[imageIndex].imageHeight;

    if (sender.findName("mediaType").Text == "Video") {
        MovieControls.Visibility = "Visible";
        activeMovie.Visibility = "Visible";
        activeMovie.Height = height;
        activeMovie.Width = width;
        ImageNav["Canvas.Top"] = parseInt(height) + 8;
        ImageNav["Canvas.Left"] = (parseInt(width) / 2) - (ImageNav.Width / 2);
        var imageIndex = sender.findName("imageIndex").Text;
        activeMovie.Source = this.imgData.chapters[imageIndex].imageUrl;
        activeMovie.Stop();
        tmediaType = "movie";
    } else {
        tmediaType = "image";
        ActiveImage.Source = this.imgData.chapters[imageIndex].imageUrl; // "source/image/oceanboat.307.jpg";
        ActiveImageName.Text = sender.findName("ImageName").Text;
        captionText.Text = sender.findName("caption").Text;
        activeMovie.Visibility = "Collapsed";
        MovieControls.Visibility = "Collapsed";
        ImageNav["Canvas.Top"] = parseInt(height) + 8;
        ImageNav["Canvas.Left"] = (parseInt(width) / 2) - (ImageNav.Width / 2);
    }

    ImageCanvas.Height = height;
    ImageCanvas.Width = width;
    ImageCanvas.Visibility = "Visible";

    ActiveImage.Height = height;
    ActiveImage.Width = width;
    imageBorder.Height = parseInt(height) + 12;
    imageBorder.Width = parseInt(width) + 12;
    imageBorder_Shadow.Height = parseInt(height) + 10;
    imageBorder_Shadow.Width = parseInt(width) + 22;
    MovieControls["Canvas.Top"] = height - MovieControls.Height + 12;
    imagePlacement["Canvas.Top"] = 1000 - parseInt(height) - 520;
    imagePlacement["Canvas.Left"] = ((mainCanvas.Height - parseInt(width)) / 2) - (ImageCanvas["Canvas.Left"] / 2);
    activeIndex = imageIndex;
    var nCount = pagesCanvas.children.count;
    for (i = 0; i < nCount; i++) {
        var child = pagesCanvas.children.getItem(i);
        if (child.ToString() == "Canvas") {
            child.findName("ThumbFade_In").Begin();
        }

    }

    if (activeIndex == 0) {
        mainCanvas.findName("prevCanvas").Visibility = "Collapsed";
        PrevOver_Out.Begin();
    } else {
        mainCanvas.findName("prevCanvas").Visibility = "Visible";
    }
    if (parseInt(activeIndex) == finalCount + 1) {
        mainCanvas.findName("nextCanvas").Visibility = "Collapsed";
        NextOver_Out.Begin();
    } else {
        mainCanvas.findName("nextCanvas").Visibility = "Visible";
    }
    if (pagesCanvas.children.count == 1) {
        mainCanvas.findName("nextCanvas").Visibility = "Collapsed";
        mainCanvas.findName("prevCanvas").Visibility = "Collapsed";
    }

    debug.Text = finalCount.toString() + "+" + totalCount.toString();
}

function onImageOut(sender, args) {
    imageOpen = false;
    ImageFadeOut.Begin();
    sender.findName("backRectangle").IsHitTestVisible = false;
    mainCanvas.IsHitTestVisible = false;
    activeMovie.Stop();
    tmediaType = "";
    var nCount = pagesCanvas.children.count;
    for (i = 0; i < nCount; i++) {
        var child = pagesCanvas.children.getItem(i);
        if (child.ToString() == "Canvas") {
            child.findName("ThumbFade_Out").Begin();
        }

    }
}

function FadeOut(sender, args) {
    ImageCanvas.Visibility = "Collapsed";
    sender.findName("backRectangle").IsHitTestVisible = true;
    mainCanvas.IsHitTestVisible = true;
    ActiveImage.Source = "";
    ActiveImageName.Text = "";

}


function onPlay() {
    activeMovie.Play();
}
function onPause() {
    activeMovie.Pause();
}
function onStop() {
    activeMovie.Stop();
}
function nextOver_In() {
    NextOver_In.Begin();
}
function nextOver_Out() {
    NextOver_Out.Begin();
}
function prevOver_In() {
    if (activeIndex != 0) {
        PrevOver_In.Begin();
    }
}
function prevOver_Out() {
    PrevOver_Out.Begin();
}

function changeImage(sender, args) {
    loader.Visibility = "Visible";
    loaderintro.Begin();



    if (imageNavType == "Next") {

        var ext;
        var path = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
        var extGif = path.substring(path.lastIndexOf(".") + 1, path.length).toLowerCase();
        if (extGif == "jpg" || extGif == "wmv" || extGif == "png") {
            ext = this.imgData.chapters[activeIndex].type;
        }
        else {
            imageFailed();
        }
        var width = this.imgData.chapters[parseInt(activeIndex)].imageWidth;
        var height = this.imgData.chapters[parseInt(activeIndex)].imageHeight;
        if (ext == "Video") {
            tmediaType = "movie";
            activeMovie.Height = height;
            activeMovie.Width = width;
            ActiveImage.Visibility = "Collapsed";
            MovieControls.Visibility = "Visible";
            activeMovie.Visibility = "Visible";
            activeMovie.Source = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
            activeIndex = (parseInt(activeIndex)).toString();
            activeMovie.Stop();
        } else {
            tmediaType = "image";
            activeMovie.Visibility = "Collapsed";
            MovieControls.Visibility = "Collapsed";
            activeMovie.Stop();
            ActiveImage.Visibility = "Visible";
            ActiveImage.Source = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
            activeIndex = (parseInt(activeIndex)).toString();
        }
        if (controlArray[(activeIndex)].findName("page").Text != "TESTXAMLIMAGE") {
            if (currentPage != pageIndex) {
                if (currentPage != parseInt(controlArray[parseInt(activeIndex)].findName("page").Text)) {
                    onNextPage();
                }

            }
        }

        if (activeIndex == 0) {
            mainCanvas.findName("prevCanvas").Visibility = "Collapsed";
            PrevOver_Out.Begin();
        } else {
            mainCanvas.findName("prevCanvas").Visibility = "Visible";
        }

        if (parseInt(activeIndex) == finalCount + 1) {
            mainCanvas.findName("nextCanvas").Visibility = "Collapsed";
            NextOver_Out.Begin();
        } else {
            mainCanvas.findName("nextCanvas").Visibility = "Visible";
        }

        captionText.Text = this.imgData.chapters[parseInt(activeIndex)].Caption;
        ActiveImageName.Text = this.imgData.chapters[parseInt(activeIndex)].filename;
        ImageCanvas.Height = height;
        ImageCanvas.Width = width;
        MovieControls["Canvas.Top"] = height - MovieControls.Height + 12;
        ImageNav["Canvas.Top"] = parseInt(height) + 8;
        ImageNav["Canvas.Left"] = (parseInt(width) / 2) - (ImageNav.Width / 2);
        ActiveImage.Height = height;
        ActiveImage.Width = width;
        imageBorder_Shadow.Height = parseInt(height) + 10;
        imageBorder_Shadow.Width = parseInt(width) + 22;
        imageBorder.Height = parseInt(height) + 12;
        imageBorder.Width = parseInt(width) + 12;
        imagePlacement["Canvas.Top"] = 1000 - parseInt(height) - 520;
        imagePlacement["Canvas.Left"] = ((mainCanvas.Height - parseInt(width)) / 2) - (ImageCanvas["Canvas.Left"] / 2);

    }
    else {
        var ext;
        var path = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
        var extGif = path.substring(path.lastIndexOf(".") + 1, path.length).toLowerCase();
        if (extGif == "jpg" || extGif == "wmv" || extGif == "png") {
            ext = this.imgData.chapters[activeIndex].type;
        }
        else {
            imageFailed();
        }

        var width = this.imgData.chapters[parseInt(activeIndex)].imageWidth;
        var height = this.imgData.chapters[parseInt(activeIndex)].imageHeight;
        if (ext == "Video") {
            ActiveImage.Visibility = "Collapsed";
            activeMovie.Height = height;
            activeMovie.Width = width;
            MovieControls.Visibility = "Visible";
            activeMovie.Visibility = "Visible";
            activeMovie.Source = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
            activeIndex = (parseInt(activeIndex)).toString();
            activeMovie.Stop();
            tmediaType = "movie";
        } else {
            tmediaType = "image";
            activeMovie.Visibility = "Collapsed";
            MovieControls.Visibility = "Collapsed";
            activeMovie.Stop();
            ActiveImage.Visibility = "Visible";
            ActiveImage.Source = this.imgData.chapters[parseInt(activeIndex)].imageUrl;
            activeIndex = (parseInt(activeIndex)).toString();
        }
        if (controlArray[(activeIndex)].findName("page").Text != "TESTXAMLIMAGE") {
            if (currentPage != parseInt(controlArray[parseInt(activeIndex)].findName("page").Text)) {
                onPrevPage();
            }
        }

        if (activeIndex == 0) {
            mainCanvas.findName("prevCanvas").Visibility = "Collapsed";
            PrevOver_Out.Begin();
        } else {
            mainCanvas.findName("prevCanvas").Visibility = "Visible";
        }
        if (parseInt(activeIndex) == finalCount + 1) {
            mainCanvas.findName("nextCanvas").Visibility = "Collapsed";
            NextOver_Out.Begin();
        } else {
            mainCanvas.findName("nextCanvas").Visibility = "Visible";
        }


        captionText.Text = this.imgData.chapters[parseInt(activeIndex)].Caption;
        ActiveImageName.Text = this.imgData.chapters[parseInt(activeIndex)].filename;
        ImageCanvas.Height = height;
        ImageCanvas.Width = width;
        MovieControls["Canvas.Top"] = height - MovieControls.Height + 12;
        ImageNav["Canvas.Top"] = parseInt(height) + 8;
        ImageNav["Canvas.Left"] = (parseInt(width) / 2) - (ImageNav.Width / 2);
        ActiveImage.Height = height;
        ActiveImage.Width = width;
        imageBorder_Shadow.Height = parseInt(height) + 10;
        imageBorder_Shadow.Width = parseInt(width) + 22;
        imageBorder.Height = parseInt(height) + 12;
        imageBorder.Width = parseInt(width) + 12;
        imagePlacement["Canvas.Top"] = 1000 - parseInt(height) - 520;
        imagePlacement["Canvas.Left"] = ((mainCanvas.Height - parseInt(width)) / 2) - (ImageCanvas["Canvas.Left"] / 2);
    }
}

function onNextImage() {
    if (activeIndex + 1 != "null") {
        imageNavType = "Next";
        imageChange_Start.Begin();
        activeIndex = (parseInt(activeIndex) + 1).toString();
    }

}
function onPrevImage() {

    if (activeIndex != 0) {
        imageNavType = "Prev";
        imageChange_Start.Begin();
        activeIndex = (parseInt(activeIndex) - 1).toString();
    }

}


function nextOver() {
    if (currentPage < pageIndex) {
        nextPage.Opacity = 1;
    }
}
function nextOut() {
    nextPage.Opacity = .33;
}
function prevOver() {
    if (currentPage > 1) {
        prevPage.Opacity = 1;
    }

}
function prevOut() {
    prevPage.Opacity = .33;
}
function firstOver() {
    if (currentPage != 1) {
        firstPage.Opacity = 1;
    }
}
function firstOut() {
    firstPage.Opacity = .33;
}
function lastOver() {
    if (currentPage < pageIndex) {
        lastPage.Opacity = 1;
    }
}
function lastOut() {
    lastPage.Opacity = .33;
}
function onFirstPage() {
    if (currentPage > 1) {
        pageSound.Stop();
        pagesAnim.findName("pageChange").By = 975 * (currentPage - 1);
        pagesAnim.Begin();
        currentPage = 1;
        mainCanvas.isHitTestVisible = false;
        currPage.Text = currentPage.toString();

        pageSound.Play();
    }
}
function onLastPage() {
    if (currentPage < pageIndex) {
        pageSound.Stop();
        pagesAnim.findName("pageChange").By = -975 * (pageIndex - currentPage);
        pagesAnim.Begin();
        currentPage = pageIndex;
        mainCanvas.isHitTestVisible = false;
        currPage.Text = currentPage.toString();

        pageSound.Play();
    }
}

function onNextPage() {


    if (pageIndex > currentPage) {
        pageSound.Stop();
        pagesAnim.findName("pageChange").By = -975;
        pagesAnim.Begin();
        currentPage = currentPage + 1;
        mainCanvas.isHitTestVisible = false;
        currPage.Text = currentPage.toString();
        pageSound.Play();
    }

}
function pagesAnimCompleted() {
    mainCanvas.isHitTestVisible = true;
}
function onPrevPage() {
    if (currentPage > 1) {
        pageSound.Stop();
        pagesAnimBack.findName("pageChangeBack").By = 975;
        pagesAnimBack.Begin();
        currentPage = currentPage - 1;
        mainCanvas.isHitTestVisible = false;
        currPage.Text = currentPage.toString();
        pageSound.Play();
    }
}
function pagesAnimBackCompleted() {
    mainCanvas.isHitTestVisible = true;
}
function onSort() {
    if (pageState == "scatter") {

        var nCount = pagesCanvas.children.count;
        for (i = 0; i < nCount; i++) {
            var child = pagesCanvas.children.getItem(i);
            if (child.ToString() == "Canvas") {
                child.findName("RollOver_InScatter").Begin();
            }

        }
        pageState = "sorted";
        sortAnim.Begin();
    }
    else {
        var nCount = pagesCanvas.children.count;
        for (i = 0; i < nCount; i++) {
            var child = pagesCanvas.children.getItem(i);
            if (child.ToString() == "Canvas") {
                child.findName("RollOver_OutScatter").Begin();
            }

        }
        pageState = "scatter";
        sortAnim_Back.Begin();
    }
}
function sortMouseEnter() {
    sortHighlight.Begin();
}
function sortMouseLeave() {
    sortUnHighlight.Begin();
}

function downloadProgressChanged(sender, args) {

    if (sender.downloadProgress == 1.0) {

        imageChange_End.Begin();
        ImageFadeIn.Begin();
        loaderintro.Stop();
        animationloop.Stop();
        loader.Visibility = "Collapsed";
        if (tmediaType == "movie") {
            activeMovie.Play();
        }
    }
}
function imageLoaded(sender, args) {

}
function imageFailed(sender, args) {


    if (imageNavType == "Next") {
        activeIndex = (parseInt(activeIndex) + 1).toString();
    } else {
        activeIndex = (parseInt(activeIndex) - 1).toString();
    }
    changeImage();
}
function loaderLoaded(sender, args) {
    animationloop.Begin();
}
	  

