// GET WINDOW X AND Y

function getWindowWidth() {
	return document.body.clientWidth;
}

function getWindowHeight() {
	var windowHeight = 0;

	if (typeof(window.innerHeight) == 'number') {
		windowHeight = window.innerHeight;
	} else {
		if (document.documentElement && document.documentElement.clientHeight) {
			windowHeight = document.documentElement.clientHeight;
		} else {
			if (document.body && document.body.clientHeight) {
				windowHeight = document.body.clientHeight;
			}
		}
	}

	return windowHeight;
}

function randomCode() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 5;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
}

window.addEvent('domready', function() {
	// FADER BACKGROUNDS & SLIDESHOW
	var Fader = {
		speed: 1000,
		lessScreen: 0,
		setLocation: 'achtergrond',
		stopFading: 0,
		currentIndex: 1,
		amount: 0,
		id: 0,

		init: function (setSpeed, setLessScreen, setLocation, setStopFading, setCurrentIndex, setAmount, setId) {
			Fader.speed = setSpeed;
			Fader.lessScreen = setLessScreen;
			Fader.location = setLocation;            
			Fader.stopFading = setStopFading;
			Fader.currentIndex = setCurrentIndex;
			Fader.amount = setAmount;
			Fader.id = setId;

			//Cookie.write('current', Fader.currentIndex);

			if (Fader.location == 'achtergrond') {
				Fader.currentIndex = 0;
				$('image-1').src = Fader.location + '/' + Fader.currentIndex;

				if (Fader.currentIndex == backgroundTotal-1) {
					Fader.currentIndex = 0;
				}
				
				$('image-2').src = Fader.location + '/' + (Fader.currentIndex+1);	
			} else {
				$('image-1').src = Fader.location + Fader.id + '/' + Fader.currentIndex;
				//Fader.currentIndex++;

				if (Fader.currentIndex > Fader.amount) {
					Fader.currentIndex = 1;
				}

				$('image-2').src = Fader.location + Fader.id + '/' + (Fader.currentIndex+1);
			}

			$('image-1').setStyle('z-index', 3);
			$('image-2').setStyle('z-index', 1);

			if (Fader.location == 'achtergrond') {
				if ((getWindowHeight() / (getWindowWidth() - Fader.lessScreen)) > 0.625) {
					$('image-1').setProperty('height', getWindowHeight());
				} else {
					$('image-1').setProperty('width', getWindowWidth() - Fader.lessScreen);
				}

				if ((getWindowHeight() / (getWindowWidth() - Fader.lessScreen)) > 0.625) {
					$('image-2').setProperty('height', getWindowHeight());
				} else {
					$('image-2').setProperty('width', getWindowWidth() - Fader.lessScreen);
				}            

			} else {
				$('image-1').setProperty('height', getWindowHeight());
				$('image-2').setProperty('height', getWindowHeight());            
			}

			if (Fader.stopFading == 0) {
				if (Fader.timeout > 0) {
					window.clearTimeout(Fader.timeout);
				}

				Fader.timeout = window.setTimeout(Fader.startFade, parseInt(Fader.speed));
				Fader.currentIndex++;                
			}
		},

		startFade: function () {
			var fader;

			if ($('image-1').getStyle('z-index') == '1') {
				fader = $('image-2');
			} else {
				fader = $('image-1');
			}

			var options = {
				/*'duration': parseInt(Fader.speed), */
				'duration': 0,
				'property': 'opacity',
				'onComplete': Fader.onFadeComplete
			}

			var fade = new Fx.Tween(fader, options).start(1, 0);
		},

		onFadeComplete: function () {
			var loader;

			if ($('image-1').getStyle('z-index') == '1') {
				$('image-1').setStyle('z-index', 3);
				$('image-2').setStyle('z-index', 1);
				loader = $('image-2');
			} else {
				$('image-1').setStyle('z-index', 1);
				$('image-2').setStyle('z-index', 3);
				loader = $('image-1');
			}

			loader.setStyle('opacity', 1);

			if (Fader.location == 'achtergrond') {
				//var randomIndex = Math.round(backgroundTotal * Math.random());
				loader.src = Fader.location + '/' + Fader.currentIndex;
			} else {
				loader.src = Fader.location + Fader.id + '/' + Fader.currentIndex;
			}

			Cookie.write('current', Fader.currentIndex);

			if (Fader.location == 'achtergrond') {
				if (Fader.currentIndex == backgroundTotal-1) {
					Fader.currentIndex = 0;
				} else {
					Fader.currentIndex++;
				}   
			}else{
				if (Fader.currentIndex == Fader.amount) {
					Fader.currentIndex = 1;
				} else {
					Fader.currentIndex++;
				}     
			}

			Fader.timeout = window.setTimeout(Fader.startFade, parseInt(Fader.speed));
		}
	}       


	// START BACKGROUND FADING AND SCALE ON RESIZE
	if ($('image-1')) {
		if ($(document.body).hasClass('backgrounds')) {
			Fader.init(3500, 0, 'achtergrond', 0, 0);
			//$('image-1').set('src', '/achtergrond?' + (new Date()).getTime())

			var timer;
			window.addEvent('resize', function() {
				$clear(timer);

				timer = (function() {
					backgroundResizing(0);
				}).delay(50);                
			});

			window.setInterval(function() {backgroundResizing(0)}, 500);                   	        

		} else if ($(document.body).hasClass('slideshow')) {
			var timer;
			window.addEvent('resize', function(){
				$clear(timer);

				timer = (function(){
					backgroundResizing(72);
				}).delay(50);
			});

			window.setInterval(function() {backgroundResizing(72)}, 500);                           
		}
	}


	// BACKGROUND RESIZING
	function backgroundResizing(minValue) {
		var windowWidth  = getWindowWidth();
		var windowHeight = getWindowHeight();	
		
		if (Fader.location == 'achtergrond') {			
			if ((windowHeight / (windowWidth - minValue)) > 0.625) {
				$('image-1').setProperty('height', windowHeight);
			} else {
				$('image-1').setProperty('width', windowWidth - minValue);
			} 

			if ((windowHeight / (windowWidth - minValue)) > 0.625) {
				$('image-2').setProperty('height', windowHeight);
			} else {
				$('image-2').setProperty('width', windowWidth - minValue);
			} 	           			        
		} else {
			$('image-1').setProperty('height', windowHeight);
			$('image-2').setProperty('height', windowHeight);
		}
	}        

        
	// SCROLLABLE MENU PROJECTS LEFT + RIGHT SIDE    
	if ($(document.body).hasClass('slideshow')) {
		if ($('scrollLeft')) {
			var scrollPos = 0;
			/*$('nav2').addClass('nav2_smaller'); */
			/*$('shadow2').addClass('shadow2_smaller'); */

			var listHeight = $('scrollLeft').offsetHeight;

			if (listHeight >= 82) {
				$$('.scrollUp').addClass('scrollUpLight');    
				$('scrollLeft').addClass('scrollHeight');

				var scrollElement = $('scrollLeft');
				var myFx = new Fx.Scroll(scrollElement);

				$$('.scrollDown').addEvent('click', function() {
					$$('.scrollUp').removeClass('scrollUpLight'); 			

					scrollPos += 15;
					if ((scrollPos + 82) >= listHeight) {
						scrollPos = (listHeight - 82);
						$$('.scrollDown').addClass('scrollDownLight');
					}

					myFx.set(0, scrollPos);
				});

				$$('.scrollUp').addEvent('click', function() {
					$$('.scrollDown').removeClass('scrollDownLight'); 

					scrollPos -= 15;
					if (scrollPos <= 0) {
						scrollPos = 0;
						$$('.scrollUp').addClass('scrollUpLight'); 					
					}

					myFx.set(0, scrollPos);
				});

			} else {
				$$('.scrollUp').destroy();
				$$('.scrollDown').destroy();				
			}

		} else {
			var scrollPos  = 0;								

			$$('#list2 > li').addEvent('mouseover', function() {
				var scrollUp   = $$('#list2 > li .scrollUpRight');
				var scrollDown = $$('#list2 > li .scrollDownRight');
				var scrollLeftUl = this.getElement('.scrollLeftRight ul');											
				var listHeight   = scrollLeftUl.offsetHeight;

				if ($$('#list2 > li .scrollUpRight')) {
					$$('#list2 > li .scrollUpRight').setStyle('display', 'block');
				}

				if (listHeight == 0) {
					listHeight = 86;
				}

				Cookie.write('listHeight', listHeight);

				if (listHeight >= 80) {
					scrollLeftUl.addClass('scrollHeightRight');					
					scrollUp.setStyle('display', 'inline');						

				} else {
					if ($$('#list2 > li .scrollUpRight')) {
						$$('#list2 > li .scrollUpRight').destroy();
					}

					$$('#list2 > li .scrollDownRight').destroy();						
					$$('#list2 > li .scrollLeftRight').setStyle('top', 0);
				}
			});				
			
			$$('#list2 > li').addEvent('mouseout', function() {
				if ($$('#list2 > li .scrollUpRight')) {
					$$('#list2 > li .scrollUpRight').setStyle('display', 'none');
				}
			});

			$$('.scrollUpRight').addEvent('click', function() {
				var scrollElement = $(this).getParent('li').getElement('ul');
				var myFx = new Fx.Scroll(scrollElement);				

				if (scrollPos > 0) {
					scrollPos -= 15;
					myFx.set(0, scrollPos);
				}
			});

			$$('.scrollDownRight').addEvent('click', function() {
				var scrollElement = $(this).getParent('li').getElement('ul');
				var myFx = new Fx.Scroll(scrollElement);

				scrollPos += 15;
				if ((scrollPos + 80) >= listHeight) {
					scrollPos = (listHeight - 80);
				}

				if (scrollPos >= 15) {
					myFx.set(0, scrollPos);
				}
			});	
		}

		if ($$('#list2 #scrollLeft')) {	
			$$('#list2 #scrollLeft li').addEvent('mouseover', function() {
				var scrollUp   = this.getElement('.scrollUpRight');
				var scrollDown = this.getElement('.scrollDownRight');
				var scrollLeftUl = this.getElement('.scrollLeftRight ul');											
				var listHeight   = this.getElement('.scrollLeftRight ul').offsetHeight;

				if (this.getElement('scrollUpRight') != null) {
					this.getElement('.scrollUpRight').setStyle('display', 'block');
				}

				if (listHeight == 0) {
					listHeight = 86;
				}

				Cookie.write('listHeight', listHeight);

				if (listHeight >= 80) {
					scrollLeftUl.addClass('scrollHeightRight');					
					scrollUp.setStyle('display', 'inline');

				} else {
					if (this.getElement('scrollUpRight') != null) {
						this.getElement('.scrollUpRight').destroy();
					}

					this.getElement('.scrollDownRight').destroy();						
					this.getElement('.scrollLeftRight').setStyle('top', 0);
				}
			});				

			$$('#list2 #scrollLeft li').addEvent('mouseout', function() {
				if (this.getElement('scrollUpRight') != null) {
					this.getElement('.scrollUpRight').setStyle('display', 'none');
				}
			});

			$$('.scrollUpRight').addEvent('click', function() {
				var scrollElement = $(this).getParent('li').getElement('ul');
				var myFx = new Fx.Scroll(scrollElement);				

				if (scrollPos > 0) {
					scrollPos -= 15;					
					myFx.set(0, scrollPos);
				}
			});

			$$('.scrollDownRight').addEvent('click', function() {
				var scrollElement = $(this).getParent('li').getElement('ul');
				var myFx = new Fx.Scroll(scrollElement);

				scrollPos += 15;

				if ((scrollPos + 80) >= listHeight) {
					scrollPos = (listHeight - 80);
				}

				if (scrollPos >= 15) {
					myFx.set(0, scrollPos);
				}
			});				
		}
	}


	// DRAG MENU + REMEMBER POSITION
	Cookie.write('stopLogoClick', 'false');

	var myDrag = new Drag.Move('navigation', {
		limit: {
			x: [0,(getWindowWidth() - 100)],
			y: [0,(getWindowHeight() - 50)]
		},

		onStart: function() {
			Cookie.write('stopLogoClick', 'true');
		},

		onComplete: function() {
			Cookie.write('nav_top', $('navigation').getStyle('top'));
			Cookie.write('nav_left', $('navigation').getStyle('left'));
		}
	});	

	if (Cookie.read('nav_top')) {
		$('navigation').setStyle('top', Cookie.read('nav_top'));
		$('navigation').setStyle('left', Cookie.read('nav_left'));
	}


	// FOLD NAVIGATION
	$$('#logo img').addEvent('click', function(){
		Fold.navInit();
	});
		
	var Fold = {
		navInit: function() {
			if (Cookie.read('stopLogoClick') == 'false') {
				if ($$('#logo img').hasClass('show') == 'true') {
					Fold.navDefold();
				} else {
					Fold.navFold();
				}
			}
      
      Cookie.write('stopLogoClick', 'false');
      
		},

		navFold: function() {
			/*var image_number = $$('#logo img').get('src').toString().substring(18,19); */
      
      if($('slideshow') && $('slideshow').getStyle('z-index') == 3){
        var slideshowMinimal = new Element('img', {
            src: '/images/slideshow-minimal.png',
            id: 'slideshow-minimal',
            alt: ''
          }),
          nav = $('navigation');
      
        $$('#navigation dd').setStyle('display','none');
        
        if(!$('slideshow-minimal')){
          slideshowMinimal.inject(nav);
        }
        $('slideshow-minimal').addEvent('click', function(){
          Fold.navDefold();
        });
      }else {
  			$$('#logo img').setProperty('src', './assets/gfx/logo/thumb/4.png');
  		}
  		
			$$('#logo img').removeClass('hide');
			$$('#logo img').addClass('show');

			if ($('list2')) {
				$('nav2').setStyle('display', 'none');
				$('shadow2').setStyle('display', 'none');
			}

			$('list1').setStyle('display', 'none');

			$('shadow1').setStyle('height', 50);
			$('shadow1').setStyle('width', 243);	

			$('navigation').setStyle('width', 240);		    		    	
			$('navigation').setStyle('height', 47);

			$('nav1').setStyle('width', 240);		    		    	
			$('nav1').setStyle('height', 47);		

			Cookie.write('nav_fold', 'show');
		},

		navDefold: function() {
			/*var image_number = $$('#logo img').get('src').toString().substring(24,25);         */
      if($('slideshow') && $('slideshow').getStyle('z-index') == 3){
        $$('#navigation dd').setStyle('display','block');
        if($('slideshow-minimal') !== null){
          $('slideshow-minimal').dispose();  
        }
        $$('#logo img').setProperty('src', './assets/gfx/logo/4.png');
      }else{
        $$('#navigation dd').setStyle('display','block');
  			$$('#logo img').setProperty('src', './assets/gfx/logo/4.png');
  		}
  		
			$$('#logo img').removeClass('show');
			$$('#logo img').addClass('hide');

			if ($('list2')) {
				$('nav2').setStyle('display', '');
				$('shadow2').setStyle('display', '');
			}

			$('list1').setStyle('display', '');	    	

			$('shadow1').setStyle('width', 492);	    	
			$('shadow1').setStyle('height', 118);	

			$('navigation').setStyle('width', 488);		    		    	
			$('navigation').setStyle('height', 114);

			$('nav1').setStyle('width', 488);		    		    	
			$('nav1').setStyle('height', 114);

			Cookie.write('nav_fold', 'hide');
		}
	}


	// PROJECT SLIDESHOW BUTTONS
	if ($(document.body).hasClass('slideshow')) {  
	  
	  function showNavigation() {
      $$('#navigation dd').setStyle('display','block');
      
      if($('slideshow-minimal') !== null){
        $('slideshow-minimal').dispose();  
      }
       
    }
    
    function hideNavigation() {
      var slideshowMinimal = new Element('img', {
            src: '/images/slideshow-minimal.png',
            id: 'slideshow-minimal',
            alt: ''
          }),
          nav = $('navigation');
      
      $$('#navigation dd').setStyle('display','none');
      slideshowMinimal.inject(nav);
      
      $('slideshow-minimal').addEvent('click', function(){
        showNavigation();
      });
    }
    
		$$('.slideInit').addEvent('click', function(){
			Slideshow.slideInit();
		});

		$$('.fader').addEvent('click', function() {
			Slideshow.slideInit();
		});

		if ($('slidePauze')) {
			$('slidePauze').addEvent('click', function() {
				if (!$(this).hasClass('stopped')) {
					Slideshow.slidePauze();

					this.addClass('stopped');
					$('slidePlay').removeClass('stopped');
					/*$('slidePrevious').removeClass('stopped'); */
					/*$('slideNext').removeClass('stopped'); */
				}
			});
		}

		if ($('slidePlay')) {
			$('slidePlay').addEvent('click', function() {
				if (!$(this).hasClass('stopped')) {
					Slideshow.slidePlay();
					this.addClass('stopped');
					$('slidePauze').removeClass('stopped');
					/*$('slidePrevious').addClass('stopped'); */
					/*$('slideNext').addClass('stopped'); */
				}
			});
		}

		if ($('slidePrevious')) {
			$('slidePrevious').addEvent('click', function() {
				if (!$(this).hasClass('stopped')) {
					Slideshow.slidePrevious();
				}
			});
		}

		if ($('slideNext')) {
			$('slideNext').addEvent('click', function() {
				if (!$(this).hasClass('stopped')) {
					Slideshow.slideNext();
				}
			});
		}
	}


	// SLIDESHOW
	var Slideshow = {
		currentIndex: 1,
		paused: false,
		slideInit: function() {
			if ($('slideLeft').getStyle('display') != 'none') {
				$('content_project').setStyle('z-index', 2);
				$('slideshow').setStyle('z-index', 3);
				$('slideLeft').setStyle('display', 'none');
				$('slideRight').setStyle('display', 'block');
				$('slideTools').setStyle('display', 'block');
				Cookie.write('stopLogoClick', 'false');
				Fold.navFold();
			} else {
				$('content_project').setStyle('z-index', 3);
				$('slideshow').setStyle('z-index', 2);
				$('slideRight').setStyle('display', 'none');
				$('slideLeft').setStyle('display', 'block');
				$('slideTools').setStyle('display', 'none');
				Cookie.write('stopLogoClick', 'false');
				Fold.navDefold();
			}
		},

		slidePlay: function() {
			Slideshow.paused = false;
			Fader.init(4000, 72, 'slideshow/', 0, Slideshow.currentIndex, projectTotal, projectId);
		},

		slidePauze: function() {
			/*
			Slideshow.currentIndex = parseInt(Cookie.read('current'));
			
			// fix pauze forward currentindex
			Slideshow.currentIndex++;
			if (Slideshow.currentIndex > projectTotal) {
				Slideshow.currentIndex = 1;
			}

			Fader.init(200000, 72, 'slideshow/', 1, Slideshow.currentIndex, projectTotal, projectId); */
			Slideshow.paused = true;
			window.clearTimeout(Fader.timeout);
		},

		slidePrevious: function() {
			Slideshow.currentIndex = parseInt(Cookie.read('current'));
			Slideshow.currentIndex--;

			if (Slideshow.currentIndex == 0) {
				Slideshow.currentIndex = projectTotal;
			}

			Cookie.write('current', Slideshow.currentIndex);
			window.clearTimeout(Fader.timeout);

			if (Slideshow.paused == true) {
				Fader.init(4000, 72, 'slideshow/', 1, Slideshow.currentIndex, projectTotal, projectId);
			} else {
				Fader.init(4000, 72, 'slideshow/', 0, Slideshow.currentIndex, projectTotal, projectId);
			}
		},

		slideNext: function() {
			Slideshow.currentIndex = parseInt(Cookie.read('current'));
			Slideshow.currentIndex++;

			if (Slideshow.currentIndex > projectTotal) {
				Slideshow.currentIndex = 1;
			}

			Cookie.write('current', Slideshow.currentIndex);
			window.clearTimeout(Fader.timeout);

			if (Slideshow.paused == true) {
				Fader.init(4000, 72, 'slideshow/', 1, Slideshow.currentIndex, projectTotal, projectId);
			} else {
				Fader.init(4000, 72, 'slideshow/', 0, Slideshow.currentIndex, projectTotal, projectId);
			}
		}
	}

	if ($(document.body).hasClass('slideshow')) {
		Slideshow.slidePlay();
	}

	// COLUMN SHIFTING
	if ($(document.body).hasClass('columnpage')) {
		$('content').setStyle('width', 1125);

		var Column = {
			items: 0,
			itemsWidth: 0,
			startLeft: 44,
			padding: 30,
			maxPerRow: 3,
			totalWidthPerItem: 385,

			init: function() {
				Column.items = 0;

				$$('.column').each(function() {
					Column.items++;
					Column.itemsWidth = parseInt($$('.column').getStyle('width'));
				});

				var totalWidth = Column.startLeft + (Column.items * Column.itemsWidth) + ((Column.items - 1) * Column.padding);
				var totalWidthItem1 = Column.startLeft + Column.itemsWidth + Column.padding;
				Column.totalWidthPerItem = Column.itemsWidth + Column.padding;

				if (getWindowWidth() < totalWidth) {
					if (getWindowWidth() <= Column.totalWidthItem1) {
						Column.maxPerRow = 1;

					} else {
						var count = (getWindowWidth() - Column.startLeft) / Column.totalWidthPerItem;
						Column.maxPerRow = count.floor();
					}

				} else {
					Column.maxPerRow = Column.items;
				}
	
				if (Column.maxPerRow == 1) {
					Column.switchColumns(1);
				} else if (Column.maxPerRow == 2) {
					Column.switchColumns(2);
				} else if (Column.maxPerRow == 3) {
					Column.switchColumns(3);
				}
			},

			switchColumns: function(setColumns) {
				if (setColumns == 1) {
					$$('.column_second').adopt($$('c3'));
					$$('.column_last').adopt($$('.c2'));

				} else if (setColumns == 2) {
					/*
					$$('.column_second .content_item').addClass('c2');
					$$('.column_last .content_item').addClass('c3');

					$$('.column_first').adopt($$('.c2'));
					$$('.column_second').adopt($$('.c3'));
					*/
					$$('.column_second .content_item').addClass('c3');
					$$('.column_last .content_item').addClass('c2');

					$$('.column_first').adopt($$('.c2'));
					$$('.column_second').adopt($$('.c3'));

				} else if (setColumns == 3) {
					$$('.column_second').adopt($$('.c3'));
					$$('.column_last').adopt($$('.c2'));
				}

				var contentWidth = (Column.totalWidthPerItem * Column.maxPerRow) - Column.padding;

				if (Column.maxPerRow == 2) {
					contentWidth += Column.padding;
				}

				$('content').setStyle('width', contentWidth);
			}
		}

		window.addEvent('resize', function(){
			$clear(timer);
			timer = (function(){
				Column.init();
			}).delay(30);
		});
	
		Column.init();
	}
});

