File: D:/HostingSpaces/SBogers45/smuldersinterieurprojecten.nl/wwwroot/js/main_back.js
/*
Javascript Document
Smulders Interieurprojecten.
Copyright Mike Ontwerpt 2011
*/
//global vars
var currentPage = 'welkom';
var justClicked = false;
var clickedInt = 0;
var titles = Array();
titles['welkom'] = 'Al jaren vakmanschap in maatwerk - Smulders Interieurprojecten';
var firstScrollBool = true;
var disabled = false;
var sp4ColHolderWidth = 0;
var sp6ColHolderWidth = 0;
var album5ColHolderWidth = 0;
$(document).ready(function(){
initBackgrounds();
initPhotoalbum();
hideSubMenu('subHideParticlier', 'subParticlier');
getSWFPage();
SWFAddress.onChange = function() { //on url change
try {
getSWFPage();
} catch(e) {}
}
setBoxes();
//set 2 foto columns
initSlide('sp4','left', 600, 1500);
initSlide('sp6','left', 600, 1500);
$('#sp4 .spColumn').each(function(){
sp4ColHolderWidth += 460;
});
$('#sp4 .spColumnHolder').css('width', sp4ColHolderWidth+'px');
$('#sp6 .spColumn').each(function(){
sp6ColHolderWidth += 460;
});
$('#sp6 .spColumnHolder').css('width', sp6ColHolderWidth+'px');
$('#album5 .albumColumn').each(function(){
album5ColHolderWidth += 960;
});
$('#album5 .albumColumnHolder').css('width', album5ColHolderWidth+'px');
//setup shadowbox
Shadowbox.init({
skipSetup: true,
continuous: true,
overlayOpacity: 0.8
});
});
function initBackgrounds(){
// ## B A C K G R O U N D S
var $scollpage = $('#scrollpage');
//for each background
$('.main-background').each(function(){
//get offset top
var $self = $(this),
$offsetCoords = $self.offset(),
topOffset = $offsetCoords.top;
//when scrolling
$scollpage.scroll(function(){
if ( ($scollpage.scrollTop() + $scollpage.height()) > ($offsetCoords.top) && ( ($offsetCoords.top + $self.height()) > $scollpage.scrollTop() ) ) {
yPos = -($scollpage.scrollTop() - $offsetCoords.top + $scollpage.height() ) * 0.4 + 200;
// If this element has a Y offset then add it on
if ($self.data('offsetY')) {
yPos += $self.data('offsetY');
}
//change menu
if($scollpage.scrollTop() >= (topOffset-300)){
if(justClicked == false){
if ($self.attr('data-linkname')) {
var linkname = $self.attr('data-linkname');
var title = $self.attr('data-title');
// ## CHECK SWF ADRESS
var path = SWFAddress.getPathNames(); //get&split url
if(path[0].substr(0,13) != 'particuliere-'){
$('#btn-' + currentPage).removeClass('activeMenu');
currentPage = linkname;
$('#btn-' + currentPage).addClass('activeMenu');
SWFAddress.setValue(currentPage);
}
}
}
}
// Put together our final background position
var coord = '0 ' + Math.ceil(yPos) + 'px';
// Move the background
$self.css({ backgroundPosition: coord });
}
});
});
}
function initSlide(boxId, dir,target,parked){
// ## S L I D E
var $scrollpage = $('#scrollpage');
//get offset top
var $self = $('#' + boxId),
$offsetCoords = $self.parent().offset(),
topOffset = $offsetCoords.top;
//when scrolling
$scrollpage.scroll(function(){
//if visible
if ( $scrollpage.scrollTop() > (topOffset- $self.parent().height()) ){
if($scrollpage.scrollTop() <= topOffset || boxId == 'blueBar1'){
//percentage y
var a = parseInt(( ( $scrollpage.scrollTop() - (topOffset - $self.parent().height()) ) * 100 ) / $self.parent().height());
//100% x distance in pixels
var b = parseInt((a * (parked - target) ) / 100);
//position in pixels
var imagePos = parked - b;
imagePos = Math.ceil(imagePos);
imagePos += 'px';
if(dir == 'top'){
$self.css('top', imagePos);
}
else{
$self.css('left', imagePos);
}
}
else{
//correct pos
if(dir == 'top'){
$self.css('top', target + 'px');
}
else{
$self.css('left', target + 'px');
}
}
}
});
}
function initPhotoalbum(){
// ## P H O T O A L B U M
var $scrollpage = $('#scrollpage');
$('.albumContainer').each(function(){
//get offset top
var $self = $(this),
$offsetCoords = $self.parent().offset(),
topOffset = $offsetCoords.top;
var center = $(window).width() / 2;
var factor = $self.width() / 2;
var left = center - factor;
//$self.css('left' , left);
//when scrolling
$scrollpage.scroll(function(){
//if visible
if ( $scrollpage.scrollTop() > (topOffset- $self.parent().height()) ){
var targetTop = 0;
var parkedTop = 600;
var thisId = $self.attr('id');
if($scrollpage.scrollTop() <= topOffset){
var count = 0;
$('#' + thisId + ' .albumThumb').each(function(){
var $thumb = $(this);
var factor = 300 - (count*50);
//percentage y
var a = parseInt(( ( $scrollpage.scrollTop() - (topOffset - ( $self.parent().height()) / 2 ) ) * 100 ) / ($self.parent().height() - factor) );
a = a*2;
if(a > 100){
a = 100;
}
//100% x distance in pixels
var b = parseInt((a * (parkedTop - targetTop) ) / 100);
//position top in pixels
var imageXpos = parkedTop - b;
imageXpos = Math.ceil(imageXpos);
imageXpos += 'px';
$thumb.css('top', imageXpos);
//opacity
$thumb.css('opacity', (a/100));
count++;
});
}
else{
$('#' + thisId + ' .albumThumb').each(function(){
var $thumb = $(this);
//correct top & opacity
$thumb.css('opacity', 1);
$thumb.css('top', targetTop);
});
}
}
});
});
}
function getSWFPage(){
Shadowbox.clearCache();
Shadowbox.setup("a.shadowbox");
// ## CHECK SWF ADRESS
var path = SWFAddress.getPathNames(); //get&split url
//if submenu ?
if(!empty(path[0])){
if(path[0].substr(0,13) == 'particuliere-'){
SWFAddress.setTitle(path[0] + ' - Smulders Interieurprojecten');
showSubMenu('subHideParticlier', 'subParticlier');
if(firstScrollBool) { firstScroll(1000); }
}
else{
//check scrollpos
switch(path[0]) {
case 'welkom':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Al jaren vakmanschap in maatwerk - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(0); }
break;
case 'particulier':
SWFAddress.setTitle('Particuliere keukens - Smulders Interieurprojecten');
showSubMenu('subHideParticlier', 'subParticlier');
if(firstScrollBool) { firstScroll(1000); }
break;
case 'zakelijk':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Uw zaak op maat ingericht - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(2000); }
break;
case 'totaalinrichting':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Totaalinrichting compleet verzorgd - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(3000); }
break;
case 'impressies':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Impressies van ons werk - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(4000); }
break;
case 'kantoor':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Ons kantoor en de werkplaats - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(5000); }
break;
case 'contact':
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Neem vrijblijvend contact met ons op - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(6000); }
break;
}
}
}
else{
//welkom
hideSubMenu('subHideParticlier', 'subParticlier');
SWFAddress.setTitle('Al jaren vakmanschap in maatwerk - Smulders Interieurprojecten');
if(firstScrollBool) { firstScroll(0); }
}
//not just landed anymore
firstScrollBool = false;
}
function hideSubMenu(hideId, subId){
$('#' + subId).animate({top: '-35px'},200);
}
function showSubMenu(hideId, subId){
$('#' + subId).animate({top: 0},200);
}
function rapport(){
var $scollpage = $('#scrollpage');
alert(
'#scrolltop : ' + $scollpage.scrollTop() + '\n\n' +
'height: ' + $('#imgbox1').parent().height() + '\n' +
'left: ' + $('#imgbox1').css('left') + '\n'
);
}
function setPageClicked(linkname){
justClicked = true;
clearInterval(clickedInt);
clickedInt = setTimeout(function(){ justClicked = false },2000);
$('#btn-' + currentPage).removeClass('activeMenu');
currentPage = linkname;
$('#btn-' + linkname).addClass('activeMenu');
}
function scrollToPoint(yPos){
$('#scrollpage').stop();
$('#scrollpage').scrollTo({left: 0, top: yPos },{duration: 1500});
}
function firstScroll(yPos){
$('#scrollpage').stop();
$('#scrollpage').scrollTo({left: 0, top: yPos },{duration: 0});
}
function setBoxes(){
$('.textBlockContainer').each(function(){
var $pageCon = $(this).parent();
var $container = $(this);
var $bluebar = $pageCon.children('.blueBar');
var $footerBox = $(this).children('.footerBox');
var $headerBox = $(this).children('.headerBox');
var $contentBox = $pageCon.children('.contentBox');
// ## Get height contentBox
var contentBoxHeightStr = $contentBox.css('height');
var contentBoxPaddingTopStr = $contentBox.css('paddingTop');
var contentBoxPaddingBottomStr = $contentBox.css('paddingBottom');
contentBoxHeight = contentBoxHeightStr.substring( 0, contentBoxHeightStr.length - 2);
contentBoxPaddingTop = contentBoxPaddingTopStr.substring( 0, contentBoxPaddingTopStr.length - 2);
contentBoxPaddingBottom = contentBoxPaddingBottomStr.substring( 0, contentBoxPaddingBottomStr.length - 2);
contentBoxHeight = Number(contentBoxHeight) + Number(contentBoxPaddingTop) + Number(contentBoxPaddingBottom);
if(contentBoxPaddingTop != 0){
//maffe marge
var mar = 0.055 * contentBoxHeight;
contentBoxHeight = Number(contentBoxHeight) + Number(mar);
}
var contentBoxTopStr = $contentBox.css('top');
var contentBoxTop = contentBoxTopStr.substring( 0, contentBoxTopStr.length - 2);
var containerTopStr = $(this).css('top');
var containerTop = containerTopStr.substring( 0, containerTopStr.length - 2);
// BLUE BAR
// ## Set height bluebar
$bluebar.css('height',contentBoxHeight + 'px');
var hbHeightStr = $headerBox.css('height');
var hbHeight = hbHeightStr.substring( 0, hbHeightStr.length - 2);
var containerPaddingTopStr = $container.css('paddingTop');
var containerPaddingTop = containerPaddingTopStr.substring( 0, containerPaddingTopStr.length - 2);
var bbOffset = Number(containerTop) + Number(hbHeight) + Number(containerPaddingTop);
var bbId = $bluebar.attr('id');
$bluebar.css('top',bbOffset + 'px');
$contentBox.css('top',bbOffset + 'px');
initSlide(bbId, 'top', Number(bbOffset),1200);
// ## Set position Footerbox
var footerBoxTop = Number(bbOffset) + Number(contentBoxHeight) - Number(containerTop);
$footerBox.css('top',footerBoxTop+'px');
// ## Set container height
var footerHeightStr = $footerBox.css('height');
var footerHeight = footerHeightStr.substring( 0, footerHeightStr.length - 2);
var boxheight = Number(footerBoxTop) + Number(footerHeight) - 20;
$container.css('height',boxheight+'px');
});
//init once
}
/*
function drawCanvas(){
//for each bluebar div
$('canvas.blueBar').each(function(){
var $canvas = $(this);
var w = $canvas.css('width');
var h = $canvas.css('height');
//get int - 'px'
w = w.substring(0, w.length - 2);
h = h.substring(0, h.length - 2);
var id = $canvas.attr('id');
var elem = document.getElementById(id);
if (elem && elem.getContext) {
// Get the 2d context.
// Remember: you can only initialize one context per element.
var context = elem.getContext('2d');
if (context) {
context.fillStyle = '#008cc3'; // blue
context.globalAlpha = 0.8;
context.fillRect(0, 0, w, h);
}
}
});
}*/
function smallAlbumNextPage(linkname, key, numPages, thisPage, dir){
if(!disabled){
disabled = true;
setTimeout(function(){ disabled = false; },1000);
var count = 0;
var distance = 460;
var delay = 0;
var strLeft = new Array();
var numLeft = new Array();
var $thumbs = new Array();
var newLeft = new Array();
$('#sp'+key+' .spThumb').each(function(){
$thumbs[count] = this;
strLeft[count] = $($thumbs[count]).css('left');
numLeft[count] = strLeft[count].substring(0, strLeft[count].length-2);
if(dir == 'next') newLeft[count] = Number(numLeft[count]) - Number(distance);
if(dir == 'prev') newLeft[count] = Number(numLeft[count]) + Number(distance);
count++;
});
if(dir == 'next'){
for(var i=0;i<$thumbs.length;i++){
setTimeout(moveThumbnail,delay,$thumbs[i],newLeft[i]);
delay = delay + 20;
}
}
else{
for(var i=($thumbs.length-1);i>=0;i--){
setTimeout(moveThumbnail,delay,$thumbs[i],newLeft[i]);
delay = delay + 20;
}
}
//check footer
$('#sp' + key + ' .spFooterBar').load('./pages/fromjs/getNewSpBar.php?linkname=' + linkname + '&thisPage=' + thisPage + '&numPages=' + numPages + '&key=' + key);
}
}
function moveThumbnail() {
var args = Array.prototype.slice.call(arguments);
$obj = args[0];
left = args[1];
$($obj).animate({left : left+'px' },200,function() {
$($obj).css('left',left+'px');
});
}
function loadSubPage(linkname, itemId, key){
$('#subParticlier li').each(function() {
$(this).removeClass('active');
});
$('#subParticlier li#'+itemId).addClass('active');
$('#contentBox' + key).load('./pages/fromjs/getSubpages.php?linkname=' + linkname + '&itemId=' + itemId ,function(){
correctPage(key);
});
}
function correctPage(key){
var $pageCon = $('#page' + key);
var $container = $('#page' + key + ' .textBlockContainer');
var $bluebar = $pageCon.children('.blueBar');
var $footerBox = $($container).children('.footerBox');
var $headerBox = $($container).children('.headerBox');
var $contentBox = $pageCon.children('.contentBox');
// ## Get height contentBox
var contentBoxHeightStr = $contentBox.css('height');
var contentBoxPaddingTopStr = $contentBox.css('paddingTop');
var contentBoxPaddingBottomStr = $contentBox.css('paddingBottom');
contentBoxHeight = contentBoxHeightStr.substring( 0, contentBoxHeightStr.length - 2);
contentBoxPaddingTop = contentBoxPaddingTopStr.substring( 0, contentBoxPaddingTopStr.length - 2);
contentBoxPaddingBottom = contentBoxPaddingBottomStr.substring( 0, contentBoxPaddingBottomStr.length - 2);
contentBoxHeight = Number(contentBoxHeight) + Number(contentBoxPaddingTop) + Number(contentBoxPaddingBottom);
if(contentBoxPaddingTop != 0){
//maffe marge
var mar = 0.055 * contentBoxHeight;
contentBoxHeight = Number(contentBoxHeight) + Number(mar);
}
var contentBoxTopStr = $contentBox.css('top');
var contentBoxTop = contentBoxTopStr.substring( 0, contentBoxTopStr.length - 2);
var containerTopStr = $($container).css('top');
var containerTop = containerTopStr.substring( 0, containerTopStr.length - 2);
// BLUE BAR
// ## Set height bluebar
$bluebar.css('height',contentBoxHeight + 'px');
var hbHeightStr = $headerBox.css('height');
var hbHeight = hbHeightStr.substring( 0, hbHeightStr.length - 2);
var containerPaddingTopStr = $container.css('paddingTop');
var containerPaddingTop = containerPaddingTopStr.substring( 0, containerPaddingTopStr.length - 2);
var bbOffset = Number(containerTop) + Number(hbHeight) + Number(containerPaddingTop);
var bbId = $bluebar.attr('id');
$bluebar.css('top',bbOffset + 'px');
$contentBox.css('top',bbOffset + 'px');
// ## Set position Footerbox
var footerBoxTop = Number(bbOffset) + Number(contentBoxHeight) - Number(containerTop);
$footerBox.css('top',footerBoxTop+'px');
// ## Set container height
var footerHeightStr = $footerBox.css('height');
var footerHeight = footerHeightStr.substring( 0, footerHeightStr.length - 2);
var boxheight = Number(footerBoxTop) + Number(footerHeight) - 20;
$container.css('height',boxheight+'px');
}
function empty(mixed_var) {
// !No description available for empty. @php.js developers: Please update the function summary text file.
//
// version: 1109.2015
// discuss at: http://phpjs.org/functions/empty
// + original by: Philippe Baumann
// + input by: Onno Marsman
// + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + input by: LH
// + improved by: Onno Marsman
// + improved by: Francesco
// + improved by: Marc Jansen
// + input by: Stoyan Kyosev (http://www.svest.org/)
// * example 1: empty(null);
// * returns 1: true
// * example 2: empty(undefined);
// * returns 2: true
// * example 3: empty([]);
// * returns 3: true
// * example 4: empty({});
// * returns 4: true
// * example 5: empty({'aFunc' : function () { alert('humpty'); } });
// * returns 5: false
var key;
if (mixed_var === "" || mixed_var === 0 || mixed_var === "0" || mixed_var === null || mixed_var === false || typeof mixed_var === 'undefined') {
return true;
}
if (typeof mixed_var == 'object') {
for (key in mixed_var) {
return false;
}
return true;
}
return false;
}
function getNewAlbumPage(linkname, key, numAlbums, albumOrder){
//get new description
$('#contentBox' + key).load('./pages/fromjs/getNewAlbumContent.php?linkname=' + linkname + '&albumOrder=' + albumOrder,function(){
correctPage(key);
});
//get new footer (nav)
$('#footerBox' + key).load('./pages/fromjs/getFooterNextPrev.php?linkname=' + linkname + '&albumOrder=' + albumOrder + '&numAlbums=' + numAlbums + '&key=' + key);
//get new photos
$('#sp' + key).load('./pages/fromjs/getNewSmallAlbum.php?linkname=' + linkname + '&albumOrder=' + albumOrder + '&numAlbums=' + numAlbums + '&key=' + key,function(){
$('#sp' + key + ' .spColumn').each(function(){
sp4ColHolderWidth += 460;
});
$('#sp' + key + ' .spColumnHolder').css('width', sp4ColHolderWidth+'px');
Shadowbox.clearCache();
Shadowbox.setup("a.shadowbox");
});
}
function largeAlbumNextPage(linkname, key, numPages, thisPage, dir){
if(!disabled){
disabled = true;
setTimeout(function(){ disabled = false; },1000);
var count = 0;
var distance = 960;
var delay = 0;
var strLeft = new Array();
var numLeft = new Array();
var $thumbs = new Array();
var newLeft = new Array();
$('#album'+key+' .albumThumb').each(function(){
$thumbs[count] = this;
strLeft[count] = $($thumbs[count]).css('left');
numLeft[count] = strLeft[count].substring(0, strLeft[count].length-2);
if(dir == 'next') newLeft[count] = Number(numLeft[count]) - Number(distance);
if(dir == 'prev') newLeft[count] = Number(numLeft[count]) + Number(distance);
count++;
});
if(dir == 'next'){
for(var i=0;i<$thumbs.length;i++){
setTimeout(moveThumbnail,delay,$thumbs[i],newLeft[i]);
delay = delay + 20;
}
}
else{
for(var i=($thumbs.length-1);i>=0;i--){
setTimeout(moveThumbnail,delay,$thumbs[i],newLeft[i]);
delay = delay + 20;
}
}
//check footer
$('#album' + key + ' .albumFooterBar').load('./pages/fromjs/getNewAlbumBar.php?linkname=' + linkname + '&thisPage=' + thisPage + '&numPages=' + numPages + '&key=' + key);
}
}