﻿var PhotoViewer = new __PhotoViewer();

function __PhotoViewer() {}

(function()
{

    var CURRENT_PHOTO_POPUP = null;
    var ROTATION_DIRECTION = -1;
    var LAST_PHOTO = -1;
    var FIRST_PHOTO = -1;
    var LAST_POSITION = -1;
    var SPEED = 92;

    var CHANGED_DIRECTION = ROTATION_DIRECTION;
    var ANIMATION = true;
    
    __PhotoViewer.prototype.StopPhotoAnimation = function()
    {
        ANIMATION = false;
    }

    __PhotoViewer.prototype.StartPhotoAnimation = function()
    {
        ANIMATION = true;
    }

    __PhotoViewer.prototype.RotatePhoto = function()
    {
        var delay = 100;

        if(!ANIMATION)
        {
            setTimeout(PhotoViewer.RotatePhoto, delay);
            return;
        }
        
        var panel = document.getElementById("photoPanel");
        
        if(panel)
        {
            var img = panel.getElementsByTagName("img");

            if(img.length <= 3) return;

            if(LAST_PHOTO < 0) LAST_PHOTO = img.length - 1;
            if(FIRST_PHOTO < 0) FIRST_PHOTO = 0;
            if(LAST_POSITION < 0) LAST_POSITION = parseInt(img[img.length - 2].style.left);
            
            if(SPEED == 0) SPEED = 92;

            // Move images to wrap around
            if(SPEED == 92)
            {
                if(ROTATION_DIRECTION == 1)
                {
                    if(ROTATION_DIRECTION == CHANGED_DIRECTION)
                    {
                        img[LAST_PHOTO].style.left = (parseInt(img[FIRST_PHOTO].style.left) - img[LAST_PHOTO].offsetWidth) - 5 + "px";
                        LAST_PHOTO--;
                        if(LAST_PHOTO < 0) LAST_PHOTO = img.length - 1;
                        FIRST_PHOTO--;
                        if(FIRST_PHOTO < 0) FIRST_PHOTO = img.length - 1;
                    }
                }
                else if(ROTATION_DIRECTION == -1)
                {
                    if(ROTATION_DIRECTION == CHANGED_DIRECTION)
                    {
                        img[FIRST_PHOTO].style.left = (parseInt(img[LAST_PHOTO].style.left) + img[LAST_PHOTO].offsetWidth + 5) + "px";
                        LAST_PHOTO++;
                        if(LAST_PHOTO >= img.length) LAST_PHOTO = 0;
                        FIRST_PHOTO++;
                        if(FIRST_PHOTO >= img.length) FIRST_PHOTO = 0;
                    }
                }

                ROTATION_DIRECTION = CHANGED_DIRECTION;
            }

            // Rotate
            SPEED = Math.floor(SPEED / 2);

            for(var i=0; i<img.length; i++)
            {
                img[i].style.left = (parseInt(img[i].style.left) + (ROTATION_DIRECTION * (SPEED == 0 ? -1 : SPEED))) + "px";
            }

            // Next frame
            if(SPEED == 0)
            {
                delay = 5000;
            }
            setTimeout(PhotoViewer.RotatePhoto, delay);
        }
    }

    __PhotoViewer.prototype.Forward = function()
    {
        CHANGED_DIRECTION = -1;
    }
    
    __PhotoViewer.prototype.Back = function()
    {
        CHANGED_DIRECTION = 1;
    }
    
    __PhotoViewer.prototype.Popup = function(thumbNail, id)
    {
        if(!PAGE_LOADED) return;
        
        this.HidePopup();

        var panel = CURRENT_PHOTO_POPUP = CreatePopup();
        var img = document.createElement("img");

        thumbNail.onmousemove = function(e)
        {
            var x = 0, y = 0;
            
            if (window && window.event && window.event.clientX)
            {
                x = (window.event.clientX + document.documentElement.scrollLeft);
                y = (window.event.clientY + document.documentElement.scrollTop);
            }
            else
            {
                x = (e.pageX);
                y = (e.pageY);
            }
            
            if(x + 20 + panel.offsetWidth > Daedalus.Utility.GetWindowWidth())
            {
                //panel.childNodes[1].style.backgroundImage = "url(../App_Themes/" + SystemInfo.TemplateName + "/Images/Common/JobProfile/PhotoPopup/PhotoPopup_Middle2.gif)";
                panel.style.left = (x - panel.offsetWidth - 20) + "px";
            }
            else
            {
                //panel.childNodes[1].style.backgroundImage = "url(../App_Themes/" + SystemInfo.TemplateName + "/Images/Common/JobProfile/PhotoPopup/PhotoPopup_Middle.gif)";
                panel.style.left = (x + 20) + "px";
            }
            var top = (y - panel.offsetHeight / 2);
            if(top < 0) top = 0;
            panel.style.top = top + "px";
        }

        img.src = "../UserUploads/PhotoStorage/" + id + ".png";
        img.alt = "";

        panel.childNodes[0].appendChild(img);
        
        if(thumbNail.title.length > 0)
        {
            panel.childNodes[1].innerHTML = thumbNail.title;
            panel.childNodes[1].style.padding = "5px";
        }
        document.body.appendChild(panel);
    }
    
    __PhotoViewer.prototype.HidePopup = function()
    {
        if(CURRENT_PHOTO_POPUP != null)
        {
            document.body.removeChild(CURRENT_PHOTO_POPUP);
            CURRENT_PHOTO_POPUP = null;
        }
    }
    
    function CreatePopup()
    {
        var panel = document.createElement("div");
        //var top = document.createElement("div");
        var middle = document.createElement("div");
        var bottom = document.createElement("div");
        
        //top.style.width = bottom.style.width = "434px";
        //top.style.fontSize = bottom.style.fontSize = "1px";

        middle.style.backgroundImage = "url(../App_Themes/" + SystemInfo.TemplateName + "/Images/Common/JobProfile/PhotoPopup/PhotoPopup_Middle.gif)";
        middle.style.width = "385px";
        middle.style.textAlign = "center";
        middle.style.backgroundPosition = "center center";
        middle.style.backgroundRepeat = "repeat-y";
        
        bottom.style.textAlign = "center";
        
        panel.style.padding = "10px";
        panel.style.border = "dotted #ccc 1px";
        panel.style.backgroundColor = "#fff";

        //top.style.height = "16px";
        //bottom.style.height = "15px";
        
        //top.style.backgroundImage = "url(../App_Themes/" + SystemInfo.TemplateName + "/Images/Common/JobProfile/PhotoPopup/PhotoPopup_Top.gif)";
        //bottom.style.backgroundImage = "url(../App_Themes/" + SystemInfo.TemplateName + "/Images/Common/JobProfile/PhotoPopup/PhotoPopup_Bottom.gif)";
        
        //panel.appendChild(top);
        panel.appendChild(middle);
        panel.appendChild(bottom);
        
        panel.style.position = "absolute";
        
        return panel;
    }

})();