File: D:/HostingSpaces/SBogers10/pvg.komma-mediadesign.nl/wwwroot/public/js/elevator.class.js
function Elevator()
{
var t = this;
var $el;
var file = '../../app/js_update_elevator.php';
// Init
t.init = function()
{
// Build
build();
// Update elevator on every link click
$('a.update').click(function(e)
{
var a = $(this);
// Prevent default
e.preventDefault();
// Update Session
updateSession($('#elevator_offset').html(), $(a).attr('href'));
});
};
var build = function()
{
// new element
$el = $('<div/>');
$el.addClass('elevator');
// add doors
var doors = '<div class="door left"></div>';
doors += '<div class="door right"></div>';
$el.html(doors);
// set top
var $tracker = $('#elevator_offset');
var floorTop;
// If exists welcome holder, place the elevator outside viewport
if($('#welcome_holder').length > 0)
{
floorTop = -100;
$tracker.html(floorTop);
}
else if($tracker.html().replace(' ','') == '')
{
floorTop = $('.floors li.active').offset().top;
var em = parseInt($('body').css('fontSize'));
floorTop = floorTop - 1.7 * em;
$tracker.html(floorTop);
}
else
{
floorTop = $tracker.html();
}
$el.css({ top: floorTop+'px' });
$('.elevator_holder.left').prepend($el);
};
t.slide = function()
{
// Find target top
var $activeFloor = $('.floors li.active');
if($activeFloor.length > 0)
{
var targetTop = $activeFloor.offset().top - $('html,body').scrollTop();
var em = parseInt($('body').css('fontSize'));
targetTop = Math.round(targetTop - 1.7 * em);
}
else
{
targetTop = -100;
}
// Calculate speed
var currentTop = Math.round($('#elevator_offset').html());
var distance = Math.abs(targetTop - currentTop);
var extra = 820 - (distance*2);
if(extra < 0) extra = 0;
var speed = distance * 5 + extra;
// Update tracker
var intv = setInterval(function()
{
// Update tracker
var $tracker = $('#elevator_offset');
$tracker.html( $el.offset().top - $('html,body').scrollTop() );
},1);
// Animate to target top
$el.stop().animate({ top: targetTop+'px'},speed, 'easeInOutQuart', function()
{
clearInterval(intv);
// Update session
updateSession($el.offset().top - $('html,body').scrollTop());
});
};
var updateSession = function(offset,href)
{
// Create div to load php file
var $jsLoad = $('<div/>');
$jsLoad.css({ display: 'none'});
$jsLoad.attr('id','js_load');
$('body').append($jsLoad);
// Load php file
$('#js_load').load(file + '?offset=' + offset,function()
{
if( href != null)
{
window.location.href = href;
}
});
}
}