var firstShowDone = false;				// Om bij te houden of dit de first show is geweest
var jQueryAddressData;					// Een object met alle jquery address data
var previousJQueryAddressData;			// Een object met alle vorige jquery address data 
var selectedMainPage;					// Bevat de geselecteerde main page data
var lastWhiteSideUrl =	'/nieuw';

// Width, heights, posities en andere afstanden
var blackTopPosition		= 457;		// Default positie van het zwarte vlak wanneer wit actief is;
var headerHeight		 	= 135;		// Hoogte van de header, tot waar het zwarte vlak mag komen
var minBlackHeight 			= 100;		// De minimale hoogte van het zwarte vlak;

var viewportWidth 			= 0;		// De huidige breedte van de viewport
var viewportHeight 			= 0;		// De huidige hoogte van de viewport
var mouseX 					= 0;		// X positie muis op pagina
var mouseY 					= 0;		// Y positie muis op pagina


// White slider
var numberOfSlides;
var selectedSlide  = 0;

// Nieuws slider
var numberOfNieuwItems;
var selectedNieuwItem = 0;

// Flash header
var flashHeaderReady = false;

// Love/Like counter
var loveCounter = 0;

// Als de pagina klaar is init functies uitvoeren
$(document).ready(function(){	
	initOnce();
	init();	
});

/**
* Deze functie moet slechts 1x uitgevoerd worden als de pagina klaar is met laden
*
*/
function initOnce()
{
	// Bij een jquer address change adres afhandelen
	$.address.change(function(event){
		handleAddressChange(event);
	}); 
	
	// Wanneer er op de tab wordt geklikt
	$('#black-tab-btn').click(function() { 		
		if(side != 'white') {			
			$.address.value(lastWhiteSideUrl);			
		} else {		
			$.address.value('/weblog');			
		}
		return false;
	});
	
	$('#sociale-box a').click(function(){
		var url = cleanUrl($(this).attr('href'));
		window.open(url);
		return false;
	});
	
	// Zet handler voor afhandelen window resize 
	$(window).bind("resize", resizeWindowEventHandler);
	resizeWindowEventHandler(null);		
	
	// Bij mouse move coordinaten opslaan
	$(window).mousemove( function(event) {
		mouseMoveHandler(event);		
	});
	
	$(window).scroll(function(){
		scrollEventHandler();	
	})
	
	initBlackSide();
}

/**
* Deze zaken moeten na elke page reload en ajax page request uitgevoerd worden
*/
function init() 
{
	if(whiteSliderExists)	
		initWhiteSlider();		
	
	if($('.grid').length > 0)
		initGrid();
	
	if($('#detail-content #image-bar').length > 0)
		initImageBar();
	
	if($(".add-love").length > 0)
		initReactionTop();
		
	if($("#reaction-form").length > 0)
		initReactionForm();	
	
	if($('#nieuw-slider').length > 0)
		initNieuwSlider();
	
	if($('#black-home-page').length > 0)
		initBlackHome();
	
	if($('.next-menu-bottom').length > 0) {
		
		$('.next-menu-bottom .jquery-address-link').click(function() {
		
			window.scroll(0,0);
		});
	}
	
	cufonIt();
	initJqueryAddress();
}

function initGrid()
{
	$('.grid .item').mouseover(function(){
		// In het geval van een fadeable img
		$(this).find('img.fadeable').stop();
		$(this).find('img.fadeable').fadeTo('slow',0.5);			
	});
	
	$('.grid .item').mouseout(function(){
		// In het geval van een fadeable img
		$(this).find('img.fadeable').stop();
		$(this).find('img.fadeable').fadeTo('slow',1);
	});	
	
	$('.grid .clickable').click(function(){
		var url = cleanUrl($(this).find('.invisible-link').attr('href'));			
		gotoAddress(url);
	});		
}

function initReactionForm() {
	
	$("#reaction-top span").click(function(){
		if($("#reaction-top").hasClass('open')){		
			window.scroll(0,0);
			$("#reaction-form").hide();			
			$("#reaction-top").removeClass('open');			
		} else {
			$("#reaction-form").show();						
			$("#reaction-top").addClass('open');			
		}
		return false;
	});
	
	$("#reaction-form form").submit (function(){
		
		var name = $("#reaction-form-name").attr('value');
		var email = $("#reaction-form-email").attr('value');	
		var reaction = $("#reaction-form-reaction").attr('value');	
		var weblogId = $("#reaction-form-weblog-id").attr('value');	
		
		
		$.getJSON("main.php",{ajax:true, function_name : "saveWeblogReaction", name : name, email : email, reaction : reaction, weblog_id : weblogId}, function(json){	
			if(json.success)
			{				
				$("#reaction-form").hide();
				$("#reaction-form-name").attr('value','');
				$("#reaction-form-email").attr('value','');	
				$("#reaction-form-reaction").attr('value','');
				
				$("#reactions-holder").append(json.reaction);
				$("#reactions-holder .new").fadeIn('slow',function(){$(this).removeClass('new')});					
				
				$("#reaction-top").removeClass('open');	
				
				window.scroll(0,0);
			} 
		});
		return false;
	});	
}


function initReactionTop() {
	$('#add-weblog-love').click(function(){addWeblogLove(); return false;});
	$('#add-project-love').click(function(){addProjectLove(); return false;});
	$('#add-employee-love').click(function(){addEmployeeLove(this); return false;});	
}

/**
* Zet listners voor afhandelen van events in het zwarte gedeelte
*/
function initBlackSide()
{

	// Bij een mouse over/out , over het zwarte gedeelte en als het zwarte gedeelte niet actief is, het zwarte gedeelte iets omhoog of weer omlaag bewegen 
	$('#black').mouseover(function(){			
		if(side != 'black') {
			$(this).stop().animate({top: (blackTopPosition-18)},200);
			$('#black-tab-btn').stop().animate({marginTop:0},200);
		}
	});	
	
	$('#black').mouseout(function(){		
		if(side != 'black') {
			$(this).stop();
			$(this).animate({top: (blackTopPosition)},200);
			$('#black-tab-btn').stop().animate({marginTop:28},200);
		}
	});		
}


function initWhiteSlider()
{	
	$('#white-slider-btn-left').unbind('click');
	$('#white-slider-btn-right').unbind('click');
	$('.white-slider-btn').removeAttr('style');// OM OPACITY 0 BUG TE VERKOMEN	
	checkVisiblilitySliderBtns();

	$('.white-slider-btn').click(function() {
		return false;	
	});
	
	
	$('#white-slider-btn-left').click(function() {
		
		if(selectedSlide > 0)	{	
			selectedSlide--;
			moveWhiteSlider();
			checkVisiblilitySliderBtns();			
		}
		return false;
	});
	
	
	$('#white-slider-btn-right').click(function() {
									
		if(selectedSlide < (numberOfSlides-1))	{
			selectedSlide++;
			moveWhiteSlider();
			checkVisiblilitySliderBtns();
		}
		return false;
	});		
	
	
	$('#white-slider-btn-right').mouseover(function(){
		var newX = ((selectedSlide * 763) * -1) - 100;	
		$('#white-slider-page-canvas-'+mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']).stop().animate({left : newX},500);
	});	
	
	$('#white-slider-btn-left').mouseover(function(){
		var newX = ((selectedSlide * 763) * -1) + 100;	
		$('#white-slider-page-canvas-'+mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']).stop().animate({left : newX},500);
	});	
	
	$('.white-slider-btn').mouseout(function(){
		moveWhiteSlider();
	});	
}



function initImageBar()
{	
	$('#detail-content #image-bar .image img.corner-triangle ').click(function(){				
		$('#detail-content #image-bar .image .big-image img').css('width',257);
		$('#detail-content #image-bar .image .big-image img').hide();	
		$(this).parent().find('.big-image').show();
		$(this).parent().find('.big-image img').animate({width : 514});
	});
	
	
	$('#detail-content #image-bar .image .big-image').click(function(){	
		$(this).find('img').animate({width : 257},function(){
			$(this).hide();
		});
	});
}

function initBlackHome()
{
	
	$('#black-home-page .item').fadeTo(0,0.2);
	//giveFaceLift();		

	$('#black-home-page .item').mouseover(function(){
		if(!$(this).hasClass('selected')){
			$(this).stop();
			$(this).fadeTo(200,1);
			$(this).find('img.color').stop();				
			$(this).find('img.color').fadeTo(200,1);		
		}
	});
	
	$('#black-home-page .item').mouseout(function(){
		if(!$(this).hasClass('selected')){
			$(this).stop();
			$(this).fadeTo(200,0.2);	
			$(this).find('img.color').stop();			
			$(this).find('img.color').fadeTo(200,0);		
		}
	});	
	
	$('#black-home-page .item').click(function(){
		var url = cleanUrl($(this).find('.invisible-link').attr('href'));			
		gotoAddress(url);
	});		
		
}


/**
* Zet listeners voor jquery adress events bij elke page of ajax page request
*/
function initJqueryAddress()
{	
	$('a.jquery-address-link').click(function() {  
		var url = cleanUrl($(this).attr('href'));
		$.address.value(url); 
		 return false;
	});		
}

function gotoAddress(url)
{
	$.address.value(url);
	return false;
}

function handleAddressChange(event)
{	
	
	if(firstShowDone && event.value != '/') {	
		previousJQueryAddressData = jQueryAddressData;
		jQueryAddressData = event;		
		
		if(jQueryAddressData.value == '/' || !jQueryAddressData.pathNames[0] in mainPages) {			
			selectedMainPage =	 mainPages['nieuw'];	
		} else {				
			selectedMainPage = mainPages[jQueryAddressData.pathNames[0]];			
		}			

		
		showPage();		
			
	} else {
			
		jQueryAddressData = event;		
		
		//console.log(jQueryAddressData);
		
		if(jQueryAddressData.value == '/') {
			jQueryAddressData.pathNames = new Array();
			jQueryAddressData.pathNames[0] = firstGV;	
			selectedMainPage = mainPages[jQueryAddressData.pathNames[0]];
		} else {
			selectedMainPage = mainPages[jQueryAddressData.pathNames[0]];
			showPage();	
		}
		
	}
	
	loveCounter = 0;	
	firstShowDone = true;	
}


function showPage()
{

	showLoadingBox();
	
	if(whiteSliderExists && selectedMainPage['handler'] == 'slider') {
		moveSliderByAddress();		
	}
	else
	{			
		deleteOrStopEvents();		
	
		if(jQueryAddressData.pathNames.length == 0){			
			jQueryAddressData.pathNames[0] = 'home';
		}
		
		$.getJSON("main.php",{ajax:true, gv : jQueryAddressData.pathNames, keyword : jQueryAddressData.value},
			function(json) 
			{	
					
				if(json.pageData['side'] == 'white')
				{					
					$('#white .ajax-container').stop();
					
					$('#white .ajax-container').fadeOut('fast', function() {
						$('#white .ajax-container').empty();
						$('#white .ajax-container').append(json.content);	
						
						$('#white .ajax-container').fadeIn('fast');
						
						if(json.pageData['handler'] == 'slider') {
							whiteSliderExists = true;
							
							numberOfSlides = parseInt(mainPages[jQueryAddressData.pathNames[0]]['number_of_slides']) 
							selectedSlide = 0;							
							initWhiteSlider();							
						} else {
							whiteSliderExists = false;		
							
						}	
						$('#header').animate({top : -166},500);	
						init();
					});
					
					if(!$('#black-home-page').length > 0) {
						$('#black .ajax-container').fadeOut('fast', function() {
							getBlackHome();						
						});				
					}
					
					$('#black-tab-btn').attr('src','/img/black-btn-round.png');
					
					
				} 
				else if(json.pageData['side'] == 'black')
				{
						$('#black .ajax-container').stop();
						
						$('#black .ajax-container').fadeOut('fast', function() {
							$('#black .ajax-container').empty();
							$('#black .ajax-container').append(json.content);	
							
							$('#black .ajax-container').fadeIn('fast');	
							
							whiteSliderExists = false;
							
							init();
						});
						
						$('#white .ajax-container').fadeOut('fast', function() {
							$('#white .ajax-container').empty();
						});
						
						$('#black-tab-btn').attr('src','/img/black-btn-down-round.png');
							$('#black-tab-btn').stop().animate({marginTop:0},200);
				}	
				
				switchSide(json.pageData['side']);	
				setTitle(json.pageData['title']);
				changeSelectedMainMenuItem(selectedMainPage['key']);
				hideLoadingBox();
			});
	
	}
	
	changeSelectedMainMenuItem(selectedMainPage['key']);
	
}


function getBlackHome()
{

	var gv = new Array('black-home');
	var keyword = '/black-home';	
	
	$.getJSON("main.php",{ajax:true, gv : gv , keyword : keyword},
		function(json) 
		{			
			$('#black .ajax-container').stop();
			
			$('#black .ajax-container').fadeOut('fast', function() {
				$('#black .ajax-container').empty();
				$('#black .ajax-container').append(json.content);					
				$('#black .ajax-container').fadeIn('fast');
				initBlackHome();
			});				
		});
	
}




function moveSliderByAddress()
{
	var vPos = (parseInt(mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']) * sliderViewportHeight) * -1;	
	
	if(previousJQueryAddressData != undefined && jQueryAddressData.pathNames[0] == previousJQueryAddressData.pathNames[0])
	{
		$('#white-slider-page-canvas-'+mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']).stop().animate({left : 0},500,'easeOutQuint',function() {	
			$('#white-slider-canvas').stop().animate({top : vPos},500,'easeOutQuint');	
		});				
	} else {
		$('#white-slider-page-canvas-'+mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']).css({left : 0});		
		$('#white-slider-canvas').stop().animate({top : vPos},500);		
	}
			
	//setSliderBtnLinks();	
	
	numberOfSlides = parseInt(mainPages[jQueryAddressData.pathNames[0]]['number_of_slides']) 
	selectedSlide = 0;
	checkVisiblilitySliderBtns(); 
	setTitle(mainPages[jQueryAddressData.pathNames[0]]['title']);
	hideLoadingBox();	
}


function moveWhiteSliderTo(slide) {
		selectedSlide = slide;
		moveWhiteSlider();	
		checkVisiblilitySliderBtns();
}

function moveWhiteSlider() {
	var newX = (selectedSlide * 763) * -1;	
	$('#white-slider-page-canvas-'+mainPages[jQueryAddressData.pathNames[0]]['mainmenu_index']).stop().animate({left : newX},1000, 'easeOutBack');
}


function checkVisiblilitySliderBtns() 
{
	if(numberOfSlides > 0) {		
	
		if(selectedSlide > 0)	{	
			$('#white-slider-btn-left').fadeIn();
			
		} else {
			$('#white-slider-btn-left').fadeOut();	
		}
		
		if(selectedSlide < (numberOfSlides-1))	{
			$('#white-slider-btn-right').fadeIn();
		} else {
			$('#white-slider-btn-right').fadeOut();	
		}
		
	} else {
		$('.white-slider-btn').stop().fadeOut();			
	}
}


/**
* Beweeg zwarte gedeelte omhoog of omlaag
*/
function switchSide(to)
{	
	if(to == 'white' && side != 'white')
	{	
		$('#black').stop();
		$('#black').animate({top : blackTopPosition},500, 'easeOutBack', function(){
			$('#black').css('height',getBlackSmallHeight());
			$('#black').css('overflow', 'hidden');		
		});
				
		if(flashHeaderReady){
			document.getElementById("flash-header").stopVideo();
		}
		$('#sociale-box').hide();				
		
	} 
	else if(to == 'black' && side != 'black')
	{
		
		
		if(previousJQueryAddressData != undefined && previousJQueryAddressData.value != '/')
			lastWhiteSideUrl =  previousJQueryAddressData.value;
		
		$('#black').stop();
		$('#black').animate({top : headerHeight+2},1000, 'easeOutBack');
		$('#black').css('overflow', 'visible');
		$('#black').css('height','auto');	
		
		$('#header').stop();
		$('#header').animate({top : 0},500);			
		
		$('#sociale-box').show();
		
		if(flashHeaderReady)
			document.getElementById("flash-header").showVideo();
		
	}	
	side = to;	
}

// Verander de het geselecteerde main menu item
function changeSelectedMainMenuItem(key)
{
	$('.main-menu LI').removeClass('selected');			
	
	// Als de witte kant geselecteerd is weblog selected maken
	if(side != 'black')
		$('#menu-weblog').addClass('selected');
		
	$('#menu-'+key).addClass('selected');	
}


function addEmployeeLove(target)
{
	var id 		=  $("#reaction-form-employee-id").attr('value');
	var type 	= "employees";
	addLove(id, type);
}

function addWeblogLove()
{
	var id = $("#reaction-form-weblog-id").attr('value');
	var type = 'weblog';
	addLove(id, type);
}

function addProjectLove()
{
	var id = $("#reaction-form-project-id").attr('value');
	var type = 'projecten';
	addLove(id, type);
}

function addLove(id, type, update)
{	
	loveCounter++;
	if(loveCounter > 5)
		alert('you like it, we know ^^');

	if(update == undefined)
		update =  '.love';
	
	$.getJSON("main.php",{ajax:true, function_name : "addLove", id : id, type : type}, function(json){
		$(update).fadeOut(function(){
			$(update).empty();
			$(update).append(json.love);
			$(update).fadeIn();		
		});
	});
	return false;
}


function resizeWindowEventHandler( e ) {
		
	viewportWidth = $(window).width();
	viewportHeight = window.innerHeight ? window.innerHeight : $(window).height();

	if(side != 'black')
		$('#black').css('height',getBlackSmallHeight());	
		
	scrollEventHandler();		
}

function scrollEventHandler(){								
	var aboveTheFold  = $(window).scrollTop();	
	
	
	// Move social box to right right position
	var xPos = ((viewportHeight - 52) + aboveTheFold);
	
	if(xPos < 265 && side == 'black')
		xPos = 265;
		
	if(xPos < 600 && side == 'white')
		xPos = 600;
	
	$('#sociale-box').css('margin-top', xPos);
}

function mouseMoveHandler(event)
{
	mouseX = event.pageX;
	mouseY = event.pageY;	
}

function getBlackSmallHeight()
{
	if((viewportHeight - blackTopPosition+18) < minBlackHeight)
		return minBlackHeight;		
	return viewportHeight-blackTopPosition;
}

function setTitle(title)
{
	$.address.title('Bitfactory - '+title);
}

function getCleanValue(value)
{
	if(value != undefined) {	
		return value.replace(/([\d.]+)(px|pt|em|%)/,'$1');
	} else {
		return 0;	
	}
}


function cleanUrl(url) {
	return url.replace(baseUrl,'/');
}


function flashHeaderReadyHandler() {
	flashHeaderReady = true;
}


function cufonIt() 
{

	Cufon.replace('.avant-garde-demi',{fontFamily : 'avant-garde-demi'});
	Cufon.replace('.avant-garde-book',{fontFamily : 'avant-garde-book'});
}

// NIEUWS SLIDER

function initNieuwSlider()
{
	checkVisibilityNieuwBtns();
	selectedNieuwItem = 0;
	
	$('#nieuw-slider-btn-previous').click(function() {
		if(selectedNieuwItem > 0)	{	
			selectedNieuwItem--;
			moveNieuwSlider();
			checkVisibilityNieuwBtns();			
		}
		return false;
	});
	
	$('#nieuw-slider-btn-next').click(function() {
		if(selectedNieuwItem < (numberOfNieuwItems-1))	{
			selectedNieuwItem++;
			moveNieuwSlider();
			checkVisibilityNieuwBtns();
		}
		return false;
	});	
	
	
	$('#nieuw-slider-btn-next').mouseover(function(){
		var newX = ((selectedNieuwItem * 763) * -1) - 100;
		$('#nieuw-slider-canvas').stop().animate({left : newX}, 500);
	});	
	
	$('#nieuw-slider-btn-previous').mouseover(function(){
		var newX = ((selectedNieuwItem * 763) * -1) + 100;
		$('#nieuw-slider-canvas').stop().animate({left : newX}, 500);
	});	
	
	$('.nieuw-slider-btn').mouseout(function(){
		moveNieuwSlider();
	});
}


function moveNieuwSlider() 
{
	var newX = (selectedNieuwItem * 763) * -1;
	$('#nieuw-slider-canvas').stop().animate({left : newX}, 1000, 'easeOutBack');	
}

function checkVisibilityNieuwBtns()
{
	if(selectedNieuwItem > 0)	{	
		$('#nieuw-slider-btn-previous').stop().fadeIn();
	} else {
		$('#nieuw-slider-btn-previous').stop().fadeOut();	
	}
	
	if(selectedNieuwItem < (numberOfNieuwItems-1))	{	
		$('#nieuw-slider-btn-next').stop().fadeIn();
	} else {
		$('#nieuw-slider-btn-next').stop().fadeOut();	
	}
}

function deleteOrStopEvents()
{
	//$.clearTimer(nieuwTimer);
}

/* END NIEUWS SLIDER */

function skipOrStopIntro()
{
	gotoAddress('/nieuw');
}

function hideLoadingBox()
{
	$('#loading-box').stop().fadeOut('slow');	
}

function createEmailAddress(target, end, dom, pre, id) 
{
	if(id == undefined)
		id= '';	
		
	$('#'+target).replaceWith('<a id="'+id+'" href="'+pre+':'+end+'@'+dom+'">'+end+'@'+dom+'</a>');
}

function showLoadingBox()
{
	$('#loading-box').removeAttr('style');// OM OPACITY 0 BUG TE VERKOMEN	
	$('#loading-box').stop().fadeIn('fast');
	
	$('#loading-box').css('margin-left', (viewportWidth / 2) - 20);	
	$('#loading-box').css('margin-top', (viewportHeight / 2) - 20);	
}

