﻿function adjustSliderLength() {
    var right = jQuery("#footer-right").position().left + 125;
    jQuery("#content-slider").css("width", right.toString() + "px");
}

var canreturnhome = false;

jQuery(document).ready(function() {

    adjustSliderLength();

    // always try and match the handle size to the footer text after resize
    jQuery(window).bind('resize', function() {
        adjustSliderLength();
    });

    jQuery("#content-slider").slider({
        animate: true,
        change: handleSliderChange,
        slide: handleSliderSlide,
        stop: handleSliderStop,
        max: 650

    });

    var draggingScroll = false;
    var dragPosX;

    jQuery("#content-scroll img").mousedown(function() {
        draggingScroll = true;
        return false;
    });

    // dragging disabled in this iteration...

    /*  jQuery("#content-scroll").mousedown(function() {
    draggingScroll = true;
    }).mouseup(function() {
    draggingScroll = false;
    }).mouseout(function() {
    //draggingScroll = false;
    }).mousemove(function(e) {

        var diff = dragPosX - e.pageX;
    dragPosX = e.pageX;

        if (draggingScroll) {
    var scrollLeft = jQuery("#content-scroll").scrollLeft();
    jQuery("#content-scroll").scrollLeft(scrollLeft + (diff * 2));
    }
    });*/

    jQuery(".ui-slider-handle").mousedown(function() {
        if (jQuery(".ui-slider-handle").css('background-image').indexOf('clickclickme') != -1) {
            var value = jQuery("#content-slider").slider('value');
            if (value > 640) {
                canreturnhome = true;
            }
        }
    });

    jQuery(".ui-slider-handle").mouseup(function() {
        if (canreturnhome) {
            slideHome();
            canreturnhome = false;
        }
    });
});

var slideSpeed = 0.0;
var oldTime = 0;
var date = new Date();
var oldPos = 0;

function slideHome() {
    var value = jQuery("#content-slider").slider('value');
    if (value > 0) {
        jQuery("#content-slider").slider('value', value - 50)        
        setTimeout(slideHome, 25);
    }
    else {
        jQuery("#content-slider").slider('value', 0);
    }
}


function handleSliderChange(e, ui) {    
    var maxScroll = jQuery("#content-scroll").attr("scrollWidth") - jQuery("#content-scroll").width();
    jQuery("#content-scroll").scrollLeft(ui.value * (maxScroll / 650));

    if (ui.value < 640) {
        canreturnhome = false;
    }
}

function handleSliderSlide(e, ui) {            
    
    var maxScroll = jQuery("#content-scroll").attr("scrollWidth") - jQuery("#content-scroll").width();
    
    jQuery("#content-scroll").scrollLeft(ui.value * (maxScroll / 650));    

    /* calculate acceleration from differentials
     * unfortunately we can't get even vaguely accurate 
     * timer information from browsers so we just have
     * to assume that this function is running every 15ms or so 
     * In the next iteration we'll collate the value over a longer period of time */

    var diffPos = ui.value - oldPos;

    slideSpeed = diffPos;

    if (ui.value < 640) {
        canreturnhome = false;
    }
        
    oldPos = ui.value;
}

function slideAnimation() {
    var value = jQuery("#content-slider").slider('value');
    jQuery("#content-slider").slider('value', value + slideSpeed);

    if (slideSpeed > 0)
        slideSpeed--;
    else slideSpeed++;

    slideSpeed = slideSpeed * 0.95;

    if (Math.round(slideSpeed) != 0) {
        setTimeout(slideAnimation, 25);
    }
    else {
        if (value > 640) {
            jQuery(".ui-slider-handle").css('background-image', 'url(../../images/clickclickme.jpg)');
        }
    }
}

function handleSliderStop(e, ui) {

    if (ui.value > 640) {
        jQuery(".ui-slider-handle").css('background-image', 'url(../../images/clickclickme.jpg)')
    }
    else {
        jQuery(".ui-slider-handle").css('background-image', 'url(../../images/slideme.jpg)')
        canreturnhome = false;
    }

    if (Math.abs(slideSpeed) < 3) {
        slideSpeed = 0;
        if (ui.value > 640) {
            jQuery(".ui-slider-handle").css('background-image', 'url(../../images/clickclickme.jpg)');
        }
    }
    else {
        slideSpeed = slideSpeed / 2;
        setTimeout(slideAnimation, 25);
    }
}
