﻿var currentSlideIndx = 1;
var targetSlideIndx = 0;
var slideWaitDuration = 800;
var slideSpeed = 'fast';
var lockSlideEvent = false;
var isSliding = false;
var endEventChecker = new Date();

//when document is ready
$(document).ready(function() {

    var intervals = setInterval(autoSlideContent, 5000);

    //bind all click events first
    clickBindings();

    function autoSlideContent() {
        var currentSlide = $("#messageArea .slideShow:visible").attr("id");
        if (currentSlide != "slide6")
            showNextSlide(currentSlide, "nextHomeSlide");
        else
            $(".one").trigger("click");
    }

    function showSlide(slide, slideIndicator) {
        $("#" + slide).animate({ opacity: "show" }, 1000);
        $("." + slideIndicator + " a").addClass("selected");
        if (slideIndicator == "six") {
            //hide next button
            $(".nextButton").hide();
            $(".backButton").show();
        }
        else if (slideIndicator == "one") {
            //hide next button
            $(".backButton").hide();
            $(".nextButton").show();
        }
        else {
            $(".nextButton").show();
            $(".backButton").show();
        }
    }

    function showNextSlide(currentSlide, mode) {
        //remove all .selected
        removeAllSelectedClass();
        setTimeout(function() {
            if (mode == "nextHomeSlide") {
                if (currentSlide == "slide1")
                    showSlide("slide2", "two");
                else if (currentSlide == "slide2")
                    showSlide("slide3", "three");
                else if (currentSlide == "slide3")
                    showSlide("slide4", "four");
                else if (currentSlide == "slide4")
                    showSlide("slide5", "five");
                else if (currentSlide == "slide5") {
                    showSlide("slide6", "six");
                }
                //shouldn't fall here but incase    
                else
                    showSlide("slide6", "six");
            }
            else {
                if (currentSlide == "slide2")
                    showSlide("slide1", "one");
                else if (currentSlide == "slide3")
                    showSlide("slide2", "two");
                else if (currentSlide == "slide4")
                    showSlide("slide3", "three");
                else if (currentSlide == "slide5")
                    showSlide("slide4", "four");
                else if (currentSlide == "slide6")
                    showSlide("slide5", "five");
                else
                //shouldn't fall here but incase    
                    showSlide("slide1", "one");
            }
        }, 600);
    }

    function removeAllSelectedClass() {
        $("#messageArea .slideShow:visible").animate({ opacity: "hide" }, 500);
        $(".one a").removeClass("selected");
        $(".two a").removeClass("selected");
        $(".three a").removeClass("selected");
        $(".four a").removeClass("selected");
        $(".five a").removeClass("selected");
        $(".six a").removeClass("selected");
    }

    function clickedActionShowSlide() {
        //reset interval timer
        clearInterval(intervals);
        intervals = setInterval(autoSlideContent, 5000);
    }

    //effects functions for next/prev button hover
    $(".nextButton, .backButton").hover(
        function() { $(this).animate({ top: "-=5px" }, 150); },
        function() { $(this).animate({ top: "104px" }, 250); }
    );

    function clickUnBind() {
        $(".one, .two, .three, .four, .five, .six, #nextHomeSlide, #prevHomeSlide").unbind("click");
        //bind all click events to prevent default
        $(".one, .two, .three, .four, .five, .six, #nextHomeSlide, #prevHomeSlide").click(function(e) {
            e.preventDefault();
        });
        setTimeout(function() {
            //rebind
            clickBindings();
        }, 2000);
    }

    function clickBindings() {
        $(".one, .two, .three, .four, .five, .six, #nextHomeSlide, #prevHomeSlide").unbind("click");
        $(".one, .two, .three, .four, .five, .six, #nextHomeSlide, #prevHomeSlide").click(clickedActionShowSlide);

        $("#nextHomeSlide").click(function() {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            showNextSlide(currentSlide, $(this).attr("id"));
        });

        $("#prevHomeSlide").click(function() {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            showNextSlide(currentSlide, $(this).attr("id"));
        });

        $('.one').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide1") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide1", "one"); }, 550);
            e.preventDefault();
        });
        $('.two').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide2") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide2", "two"); }, 550);
            e.preventDefault();
        });
        $('.three').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide3") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide3", "three"); }, 550);
            e.preventDefault();
        });
        $('.four').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide4") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide4", "four"); }, 550);
            e.preventDefault();
        });
        $('.five').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide5") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide5", "five"); }, 550);
            e.preventDefault();
        });
        $('.six').click(function(e) {
            clickUnBind();
            var currentSlide = $("#messageArea .slideShow:visible").attr("id");
            if (currentSlide == "slide6") return false;
            removeAllSelectedClass();
            setTimeout(function() { showSlide("slide6", "six"); }, 550);
            e.preventDefault();
        });

    }

});

    //====Himmy's work on development====
/*    autoSlideHomeContent();

    function autoSlideHomeContent() {
        setInterval(getCurrentSlide, 5000);
    }

    function autoslide() {
        //get current slide
        //var step = getCurrentSlide();
        //slideto next
    }
*/

/*
    $('.one').click(function(e) {
        $(this).showSlide(1);
        e.preventDefault();
    });
    $('.two').click(function(e) {
        $(this).showSlide(2);
        e.preventDefault();
    });
    $('.three').click(function(e) {
        $(this).showSlide(3);
        e.preventDefault();
    });
    $('.four').click(function(e) {
        $(this).showSlide(4);
        e.preventDefault();
    });
    $('.five').click(function(e) {
        $(this).showSlide(5);
        e.preventDefault();
    });
    $('.six').click(function(e) {
        $(this).showSlide(6);
        e.preventDefault();
    });

    $('#messageArea').children().each(function() {
        var $active = $(this);
        var $next = $(this).next();
        var $previous = $(this).prev();

        $active.children('.nextButton').click(SlidShowNext);
        $active.children('.backButton').click(SlidShowBack);
    });
});

$.fn.showSlide = function(targetSlide) {
    if (lockSlideEvent)
        return;

    targetSlideIndx = targetSlide;

    if (parseInt(currentSlideIndx) != parseInt(targetSlide))
        MoveToSlide();
}

function MoveToSlide() {
    if (!lockSlideEvent) {
        lockSlideEvent = true;
        TimerMoveToSlide(true);
    }
    else
        TimerMoveToSlide(false);

}
function TimerMoveToSlide(isTimer) {
    if (lockSlideEvent && !isTimer)
        return;

    if (parseInt(currentSlideIndx) != parseInt(targetSlideIndx)) {

        lockSlideEvent = true;
        isSliding = true;

        var ckButton;

        if (parseInt(currentSlideIndx) > parseInt(targetSlideIndx)) {
            slideWaitDuration = parseInt(800 / (parseInt(currentSlideIndx) - parseInt(targetSlideIndx)));
            ckButton = " .backButton";
        }
        else {
            ckButton = " .nextButton";
            slideWaitDuration = parseInt(800 / (parseInt(targetSlideIndx) - parseInt(currentSlideIndx)));
        }

        if (slideWaitDuration < 400)
            slideSpeed = "fast";
        else if (slideWaitDuration < 700)
            slideSpeed = "medium";
        else
            slideSpeed = "slow";

        $("#slide" + currentSlideIndx + ckButton).trigger("click");

        setTimeout(function() { TimerMoveToSlide(true); }, (parseInt(slideWaitDuration) + 150));
    }
    else {
        ReleaseSlideLock(false);
        slideWaitDuration = 800;
        slideSpeed = "slow";
        isSliding = false;
    }
}

function SlidShowNext(e) {


    lockSlideEvent = true;
    endEventChecker = new Date();

    var $active = $(this).parent();
    var $next = $active.next();

    // handling nav highlight changes.
    $currentNav = $('#messageNav A.selected');
    if ($currentNav.length <= 1) {
        $nextNav = $currentNav.parent().next().children('A');

        //Call fadeout of current page and then fadein of the new one
        $active.animate({ left: '-948px', opacity: 0 }, slideWaitDuration, function() {
            $active.hide();
            $next.css('left', '948px')
                        .show()
            //.css('margin-left', '0px')
                            .animate({ left: 0, marginRight: 0, opacity: 100 }, slideSpeed);

            $currentNav.removeClass('selected');
            $nextNav.addClass('selected');
        });

        currentSlideIndx = currentSlideIndx + 1;
        ReleaseSlideLock(true);
    }
    e.preventDefault();
}
function SlidShowBack(e) {
    lockSlideEvent = true;
    endEventChecker = new Date();

    // handling nav highlight changes.
    $currentNav = $('#messageNav A.selected');
    if ($currentNav.length <= 1) {
        $previousNav = $currentNav.parent().prev().children('A');
        var $active = $(this).parent();
        var $previous = $active.prev();

        //Call fadeout of current page and then fadein of the new one
        $active.animate({ left: '948px', opacity: 0 }, slideWaitDuration, function() {

            $active.hide()
            $previous.css('left', '-948px');
            $previous.show();
            $previous.animate({ left: 0, opacity: 100 }, slideSpeed);

            $currentNav.removeClass('selected');
            $previousNav.addClass('selected');
        });

        currentSlideIndx = currentSlideIndx - 1;
        ReleaseSlideLock(true);
    }
    e.preventDefault();
}
function ReleaseSlideLock(checkSliding) {
    if (checkSliding && isSliding)
        return;
    setTimeout(function() { lockSlideEvent = false; EndSlidingChecker(); }, 800);
}

function EndSlidingChecker() {
    var now = new Date();
    var differ = now - endEventChecker;

    if (parseInt(differ / 12) > 170) {
        var mapNum = "";
        var selSlide = $("div[id^=slide]").each(function() {
            if ($(this).css("display") != "none") {
                var selectIdx = parseInt(($(this).get(0).id).replace(/slide/gi, ""));

                switch (selectIdx) {
                    case 2:
                        mapNum = "two";
                        currentSlideIndx = 2;
                        break;
                    case 3:
                        mapNum = "three";
                        currentSlideIndx = 3;
                        break;
                    case 4:
                        mapNum = "four";
                        currentSlideIndx = 4;
                        break;
                    case 5:
                        mapNum = "five";
                        currentSlideIndx = 5;
                        break;
                    case 6:
                        mapNum = "six";
                        currentSlideIndx = 6;
                        break;
                    default:
                        mapNum = "one";
                        currentSlideIndx = 1;
                        break;

                }
            }
        });
        $('#messageNav li').each(function() {
            var currLiClass = $(this).attr("class");
            var selA = $(this).find("A[class='selected']");
            if (selA.length == 0 && mapNum == currLiClass)
                $(this).find("A").addClass('selected');

            if (selA.length > 0 && mapNum != currLiClass)
                $(this).find("A").removeClass('selected');
        });
    }
    else
        setTimeout(EndSlidingChecker, 1000);
}

*/
