/* START spaghetti, undocumented js */
(function($) {
var container, parts, windowHeight, leftMargin, finalHeadingPos, heading, documentHeight;
var DISTANCE = 1800,
COMPETENT = (!$.browser.msie || $.browser.version > 7);
function init() {
container = $('#parts');
parts = container.find('img').not('#img-002_s1');
windowHeight = $(window).height();
$('#header').css('height', windowHeight - 50);
$('#footer').css('height', Math.max(windowHeight / 2, $('#footer .inner').height()) + 'px');
leftMargin = $('#header').offset().left;
heading = $('#header h1');
//headerThreshold = $('#footer').offset().top + 50 - heading.outerHeight();
finalHeadingPos = windowHeight / 2 - heading.height() - 50;
documentHeight = $('body').height();
heading.css({
position: 'fixed',
top: 0,
left: leftMargin + 'px'
});
var threshold = container.offset().top - windowHeight / 3;
var count = parts.length;
parts.each(function(i) {
var me = $(this),
posLeft = (parseInt(me.css('marginLeft')) + me.width() / 2) / container.width(),
posTop = (parseInt(me.css('marginTop')) + me.height() / 2) / container.height();
$(this).data('coords', {
top: DISTANCE * posTop,
left: DISTANCE * (posLeft - 0.5) * 4,
origLeft: posLeft,
origTop: posTop,
angle: (posLeft > 0.5 ? -1 : 1) * Math.round(parseInt(me.css('marginTop')) / container.height() * 60 + 0),
threshold: threshold + parseInt(me.css('marginTop'))
//threshold: (threshold * (i + 1) / count + threshold) / 2
});
});
parts.each(function() {
var part = $(this),
origLeft, origTop;
part.draggable({
start: function() {
part.data('moved', true);
},
scroll: true,
stop: function() {
part.css({
});
}
});
});
};
function ease(value, max) {
return Math.sin((value / max - 1) * Math.PI / 2) * max + max;
};
var locked = false;
function position() {
var scrollTop = $(window).scrollTop();
if (scrollTop >= documentHeight - windowHeight - 10) {
locked = true;
$('#footer input.text').focus();
} else if (scrollTop < 10 && locked) {
locked = false;
parts.each(function(i) {
var coords = $(this).data('coords');
$(this).stop().animate({
top: coords.top + 'px',
left: coords.left + 'px'
}, 1000);
});
}
if (locked) {
parts.css({
top: 0,
left: 0,
'-webkit-transform': 'rotate(0)',
'-moz-transform': 'rotate(0)'
});
} else {
// Bring in left-side parts from the left and vice versa, the further from
// the center, the further out the part starts. Parts at the top come in
// horizontally, further down bring them in on an angle.
parts.each(function(i) {
var coords = $(this).data('coords'),
factor = Math.max(0, coords.threshold - scrollTop) / coords.threshold,
easedFactor = ease(factor, 1),
deg = Math.round(coords.angle * easedFactor),
rotate = 'rotate(' + deg + 'deg)';
if ($(this).data('moved')) {
var func = 'css';
$(this).data('moved', false);
} else {
var func = 'css';
}
$(this).stop()[func]({
//opacity: 1 - easedFactor,
top: coords.top * easedFactor + 'px',
left: coords.left * easedFactor + 'px',
'-webkit-transform': rotate,
'-moz-transform': rotate
});
});
}
var headingFactor = ease(scrollTop / (documentHeight - windowHeight), 1);
heading.css({
top: finalHeadingPos * Math.max(headingFactor * 4 - 3, 0) + 'px'
});
$('#footer .inner').css({
top: 20 * ease(documentHeight - windowHeight - scrollTop, windowHeight) + 'px'
});
};
function touchInit() {
};
$(function() {
if ($('body').hasClass('home')) {
$('#footer').css({
height: $('#footer').height() + 'px'
});
$('#footer .inner').css({
position: 'absolute',
width: $('#footer').width() + 'px',
top: 0,
left: 0
});
if (Modernizr.touch) {
touchInit();
} else {
init();
$(window).resize(function() {
init();
if (COMPETENT) {
position();
}
});
if (COMPETENT) {
$(window).scroll(position);
position();
}
}
}
});
$(window).load(function() {
$('#header .loading').fadeOut(300, function() {
if ($(window).scrollTop() < 50) {
$('#parts').css({
top: ($(window).scrollTop() + 50) + 'px',
opacity: 1
}).animate({
top: 0
}, 300);
} else {
$('#parts').animate({
opacity: 1
}, 300);
}
$('#header .content').fadeIn(300);
});
$('body').removeClass('loading');
});
})(jQuery); /* END spaghetti, undocumented js */
/* START spaghetti, undocumented js */
(function($) {
var container, parts, windowHeight, leftMargin, finalHeadingPos, heading, documentHeight;
var DISTANCE = 1800,
COMPETENT = (!$.browser.msie || $.browser.version > 7);
function init() {
container = $('#parts');
parts = container.find('img').not('#img-002_s1');
windowHeight = $(window).height();
$('#header').css('height', windowHeight - 50);
$('#footer').css('height', Math.max(windowHeight / 2, $('#footer .inner').height()) + 'px');
leftMargin = $('#header').offset().left;
heading = $('#header h1');
//headerThreshold = $('#footer').offset().top + 50 - heading.outerHeight();
finalHeadingPos = windowHeight / 2 - heading.height() - 50;
documentHeight = $('body').height();
heading.css({
position: 'fixed',
top: 0,
left: leftMargin + 'px'
});
var threshold = container.offset().top - windowHeight / 3;
var count = parts.length;
parts.each(function(i) {
var me = $(this),
posLeft = (parseInt(me.css('marginLeft')) + me.width() / 2) / container.width(),
posTop = (parseInt(me.css('marginTop')) + me.height() / 2) / container.height();
$(this).data('coords', {
top: DISTANCE * posTop,
left: DISTANCE * (posLeft - 0.5) * 4,
origLeft: posLeft,
origTop: posTop,
angle: (posLeft > 0.5 ? -1 : 1) * Math.round(parseInt(me.css('marginTop')) / container.height() * 60 + 0),
threshold: threshold + parseInt(me.css('marginTop'))
//threshold: (threshold * (i + 1) / count + threshold) / 2
});
});
parts.each(function() {
var part = $(this),
origLeft,
origTop;
part.draggable({
start: function() {
part.data('moved', true);
},
scroll: true,
stop: function() {
part.css({
});
}
});
});
};
function ease(value, max) {
return Math.sin((value / max - 1) * Math.PI / 2) * max + max;
};
var locked = false;
function position() {
var scrollTop = $(window).scrollTop();
if (scrollTop >= documentHeight - windowHeight - 10) {
locked = true;
$('#footer input.text').focus();
}
else if (scrollTop < 10 && locked) {
locked = false;
parts.each(function(i) {
var coords = $(this).data('coords');
$(this).stop().animate({
top: coords.top + 'px',
left: coords.left + 'px'
}, 1000);
});
}
if (locked) {
parts.css({
top: 0,
left: 0,
'-webkit-transform': 'rotate(0)',
'-moz-transform': 'rotate(0)'
});
}
else {
// Bring in left-side parts from the left and vice versa, the further from
// the center, the further out the part starts. Parts at the top come in
// horizontally, further down bring them in on an angle.
parts.each(function(i) {
var coords = $(this).data('coords'),
factor = Math.max(0, coords.threshold - scrollTop) / coords.threshold,
easedFactor = ease(factor, 1),
deg = Math.round(coords.angle * easedFactor),
rotate = 'rotate(' + deg + 'deg)';
if ($(this).data('moved')) {
var func = 'css';
$(this).data('moved', false);
}
else {
var func = 'css';
}
$(this).stop()[func]({
//opacity: 1 - easedFactor,
top: coords.top * easedFactor + 'px',
left: coords.left * easedFactor + 'px',
'-webkit-transform': rotate,
'-moz-transform': rotate
});
});
}
var headingFactor = ease(scrollTop / (documentHeight - windowHeight), 1);
heading.css({
top: finalHeadingPos * Math.max(headingFactor * 4 - 3, 0) + 'px'
});
$('#footer .inner').css({
top: 20 * ease(documentHeight - windowHeight - scrollTop, windowHeight) + 'px'
});
};
function touchInit() {
};
$(function() {
if ($('body').hasClass('home')) {
$('#footer').css({
height: $('#footer').height() + 'px'
});
$('#footer .inner').css({
position: 'absolute',
width: $('#footer').width() + 'px',
top: 0,
left: 0
});
if (Modernizr.touch) {
touchInit();
}
else {
init();
$(window).resize(function() {
init();
if (COMPETENT) {
position();
}
});
if (COMPETENT) {
$(window).scroll(position);
position();
}
}
}
});
$(window).load(function() {
$('#header .loading').fadeOut(300, function() {
if ($(window).scrollTop() < 50) {
$('#parts').css({
top: ($(window).scrollTop() + 50) + 'px',
opacity: 1
}).animate({
top: 0
}, 300);
}
else {
$('#parts').animate({
opacity: 1
}, 300);
}
$('#header .content').fadeIn(300);
});
$('body').removeClass('loading');
});
})(jQuery);
/* END spaghetti, undocumented js */