﻿$(document).ready(function() {

    //*******************************************************************************
    // Expander
    //*******************************************************************************

    // init
    $('.expander> .body').hide();
    $('.expander> .preview .open').show();
    $('.expander> .body .close').show();
    $('.expander').css('cursor', 'pointer');
    $('.expander> .body .close').css('display', 'block');
    $('.expander .divider:last-child').hide();

    // a click on preview section
    $('.expander> .preview').click(function() {
        $(this).find('.open').toggle();
        $(this).next('.body').slideToggle('fast')
        .siblings('.body:visible').slideUp('fast').prev().find('.open').show(); ;
    })

    // a click on body section
    $('.expander> .body').click(function() {
        $(this).slideUp('fast').prev().find('.open').toggle();
    })

    //     <div class="expander">
    //        <div class="preview">
    //            <h2>
    //               the head
    //            </h2>
    //            The ingress
    //        </div>
    //        <div class="body">
    //            the main text
    //        </div>
    //        <div class="preview">
    //            <h2>
    //               the head
    //            </h2>
    //            The ingress
    //        </div>
    //        <div class="body">
    //            the main text
    //        </div>
    //    </div>

    //*******************************************************************************
    // Rotator
    //*******************************************************************************

    // Init
    init();

    // Rotator next function
    $('.rotator .toolContainer .next').click(function(e) {
        intervalFn('stop');
        next(autoToggleSpeed);

        this.blur();
        return false;
    })

    // Rotator prev function
    $('.rotator .toolContainer .prev').click(function(e) {
        intervalFn('stop');
        previus(autoToggleSpeed);

        this.blur();
        return false;
    })

    // Play function
    $('.rotator .toolContainer .play').click(function(e) {
        next(autoToggleSpeed);
        intervalFn('start');

        this.blur();
        return false;
    })


    // stop function
    $('.rotator .toolContainer .stop').click(function(e) {
        intervalFn('stop');

        this.blur();
        return false;
    })

    //    <div class="rotator">
    //        <div class="bodyContainer">
    //            <div class="body">
    //                Första rotator objeket.</div>
    //            <div class="body">
    //                <img alt="" src="/treetop.se/PageFiles/328/guld-till-webb_treetop_innovation_ab.gif">
    //                Andra rotator objektet</div>
    //            <div class="body">
    //                tredje rotator objektet</div>
    //        </div>
    //        <div class="toolContainer">
    //            <a class="prev">
    //                &lt;&lt;</a>
    //            <a class="play">
    //                &gt;</a>
    //            <a class="next">
    //                &gt;&gt;</a>
    //        </div>
    //    </div>


});

//*******************************************************************************
// Rotator helper functions
//*******************************************************************************

var body;
var interval;
var intervalSpeed = 11000;
var toggleSpeed = 3500;
var autoToggleSpeed = 200;

function init() {
    var bodyCount = $('.rotator .bodyContainer .body').length;
    var startIndex = 0;
    
    if (bodyCount > 0) {
        body = $('.rotator');
        body.find('.bodyContainer .body:first').addClass('first');
        body.find('.bodyContainer .body:last').addClass('last');
    }

    if (bodyCount > 1) {
        startIndex = getRandomIndex(bodyCount);

        body.find('.bodyContainer .body').each(function(i) {
            if (i == startIndex)
                $(this).hide();
            else
                $(this).show();
        });
        
        body.css('height', '180px');
        body.find('.toolContainer').show();
   
        intervalFn('start');
    }
}

function getRandomIndex(upper) {
    return Math.floor(Math.random() * upper);
}
 
function intervalFn(t) {
    if (t == 'start' && interval == undefined) {
        body.find('.toolContainer .play').hide();
        body.find('.toolContainer .stop').show();
        interval = setInterval("next(toggleSpeed);", intervalSpeed);
    }
    else {
        body.find('.toolContainer .play').show();
        body.find('.toolContainer .stop').hide();
        interval = clearInterval(interval);
    }
}

function previus(toggleSpeed) {
    var o = body.find('.bodyContainer .body:visible');
    var n = o.prev('.body');

    if (o.is('.first'))
        n = body.find('.body.last');

    o.fadeToggle(toggleSpeed, function() {
        n.fadeToggle(toggleSpeed);
    });
}

function next(toggleSpeed) {
    var o = body.find('.bodyContainer .body:visible');
    var n = o.next('.body');

    if (o.is('.last'))
        n = body.find('.body.first');

    o.fadeToggle(toggleSpeed, function() {
        n.fadeToggle(toggleSpeed);
    });
}


//*******************************************************************************
// Misc helper functions
//*******************************************************************************

$.fn.fadeToggle = function(speed, easing, callback) {
    return this.animate({ opacity: 'toggle' }, speed, easing, callback);
}; 