diff options
| author | Jesse Morgan <jesse@jesterpm.net> | 2013-08-04 16:09:29 -0700 | 
|---|---|---|
| committer | Jesse Morgan <jesse@jesterpm.net> | 2013-08-04 16:09:29 -0700 | 
| commit | 52539d7aaba96b7997a3c5a07e4a1ad234af7d04 (patch) | |
| tree | 2686f56bc37656c0824a05e28472f7334ed39028 /web/scripts/growth.js | |
| parent | 69e2512750dd75fce43a21226979996c3cd7da1d (diff) | |
Committing everything since its long overdue.
Diffstat (limited to 'web/scripts/growth.js')
| -rw-r--r-- | web/scripts/growth.js | 175 | 
1 files changed, 174 insertions, 1 deletions
diff --git a/web/scripts/growth.js b/web/scripts/growth.js index c4091ed..b9a36b0 100644 --- a/web/scripts/growth.js +++ b/web/scripts/growth.js @@ -1,17 +1,117 @@ +$(document).ready(function() +{ +    $('.slider').draggable({ +        axis:"x",  +        containment:"parent",  +        cursor:"pointer", +        stop: function (event, ui) {  +            var range = $(ui.helper).parent().width() - 46; +            var value = (ui.position.left + range / 2) / range; +            $("#answerField").val(value); +        } +    }); + +    $('.quad .selector').draggable({ +        containment:"parent",  +        cursor:"pointer", +        stop: function (event, ui) {  +            updateQuadAnswer(ui.position.left, ui.position.top); +        }, +        drag: function (event, ui) { +            var x = ui.position.left - 125; +            var y = -(ui.position.top - 125); +            var signY = y<0?-1:1; +            var signX = x<0?-1:1; +            ui.position.left = signX * Math.min(signX*x, 125) + 125; +            x = ui.position.left - 125; +            ui.position.top = -(signY * Math.min(Math.abs(y), Math.abs(Math.sqrt(125*125 - x*x))) - 125); +        } +    }); +    $('.quad').mousedown(function(e) { +        var x = e.offsetX - 135; +        var y = -(e.offsetY - 135); +        if (Math.sqrt(x*x+y*y) < 135) { +            $(this).children('.selector').offset({left: e.pageX - 10, top: e.pageY - 10}); +            updateQuadAnswer(e.offsetX - 10, e.offsetY - 10); +        } +    }); +     +    var previousAnswer = $("#answerField").val(); +    if (!isNaN(previousAnswer)) { +        var range = $('.sliderQuestion .sliderbar').width() - 46; +        var left = previousAnswer * range - range / 2; +        $('.sliderQuestion .slider').css('left', left); +    } else { +        var index = previousAnswer.indexOf(',') +        if (index != -1) { +            var x = previousAnswer.substr(0, index); +            var y = previousAnswer.substr(index + 1); +            if (!isNaN(x) && !isNaN(y)) { +                var posX = x * 125 + 125; +                var posY = -y * 125 + 125; +                $('.quadQuestion .selector').css({left:posX,top:posY}); +            } + +        } +    } + +    $('.imageQuestion img.answer').hover(function (e) { +        // Enter +        if (!$(e.target).hasClass('selected')) { +            var url = e.target.src; +            e.target.src = url.replace('.jpg', '-hover.jpg'); +        } +    }, +    function (e) { +        // Exit +        if (!$(e.target).hasClass('selected')) { +            var url = e.target.src; +            e.target.src = url.replace('-hover.jpg', '.jpg'); +        } +    }); +}); +  function notice(msg)  { -    alert(msg); +    $('#noticebox p').html(msg) +    $('#noticebox').slideDown(); +} + +function updateQuadAnswer(offsetX, offsetY) +{ +    var x = (offsetX - 125) / 125; +    var y = -(offsetY - 125) / 125; +    var value = x + "," + y; +    $("#answerField").val(value);  }  function selectAnswer(element)  { +    // Cleanup image selections +    $(element).parent('.imageQuestion').children('.selected').each(function(i, e) { +            var url = e.src; +            e.src = url.replace('-hover.jpg', '.jpg'); +        }); +      $(element).siblings('.selected').removeClass('selected');      $(element).addClass('selected');      $("#answerField").val(element.id);  } +function previousQuestion() +{ +    $("#direction").val("previous"); +    sendAnswer(); +} +  function nextQuestion()  { +    $("#direction").val("next"); +    sendAnswer(); +} + +function sendAnswer() +{      var selectedAnswer = $("#answerField").val();      if (selectedAnswer == '') { @@ -21,3 +121,76 @@ function nextQuestion()      $("#questionForm").submit();  } + +function playVideo(videoId) +{ +    $.ajax({ +        type: "GET", +        url: "videos/" + videoId + ".json", +        dataType: "json" +    }).done(function(data) { +        if (data == null) { +            notice("Unable to load the video at this time. Please check your internet connection and try again later. If the problem persists, please contact us."); +            return; +        } + +        var player = $('#videoplayer video')[0]; +        for (var i in data.urls) { +            var video = data.urls[i]; +            if (player.canPlayType(video.type) != '') { +                player.src = video.src; +                player.load(); +                player.play(); +                player.addEventListener('ended', function(){ reportVideoComplete(data); }); +                displayPlayer(); +                return; +            } +        } + +        notice("We could not find a video format that will work with your browser. Please try another browser or contact us."); +    }).error(function(jqXHR, error) { +        notice('Could not load video due to ' + error + '. If the problem persists, please contact us.');     +    }); +} + +function displayPlayer() +{ +    // Display Player +    $("#content").fadeOut(100); +    $("body").animate({backgroundColor: '#181818'}, 500, 'linear', function(){ +        $("#videoplayer").fadeIn(200); +    }); +} + +function reportVideoComplete(data) +{ +    notice("You finished \u201C" + data.title + ".\u201D"); +    $('#' + data.id).addClass('completed'); + +    var completed = $('#videos article .completed').length; +    var total = $('#videos article').length; +    var percent = Math.floor(completed * 100 / total) + "%"; +    $('#chapterprogress .progress').width(percent); +    $('#chapterprogress .progresslabel').css('left', percent); +    $('#chapterprogress .progresslabel').html(percent); + +    closeVideo(); + +    if (completed == total) { +        chapterComplete(); +    } +} + +function closeVideo() +{ +    $("#videoplayer video")[0].pause(); +    $("#videoplayer").fadeOut(100); +    $("body").animate({backgroundColor: '#FFFFFF'}, 500, 'linear', function(){ +        $("#content").fadeIn(200); +    }); +} + +function chapterComplete() +{ +    notice("You've completed this chapter!"); +}  | 
