/**
 * Cufon replacements
 */
var cufonReplacements = function() {
	
	if(!$('html').hasClass('lt-ie8')) {
		Cufon.replace('h1,h2', { fontFamily: 'MetaBlackLF-Roman' });
		Cufon.replace('#chalkboard li a, #chalkboard p, #chalkboard h1, #chalkboard .go-back', { fontFamily: 'SF Scribbled Sans' });
		Cufon.now();
	}
	
}


/**
 * Runs when front page is ready
 */
var etusivuReady = function(){
	
	$('#home .script').stop().fadeIn(1000);
	
	if($('#twitter-tweets').length == 1) {
		$('#topline').animate({height: '32px'}, 500).queue(function(){
			$('#twitter-tweets').fadeIn(250);
			$(this).dequeue();
		});
	}
	
	var chosen = $.cookie('kluu_home_filter');
	if (!chosen)
	{
		$.cookie('kluu_home_filter', 'all');
		$('#filter li:first').addClass('active');
	}
	else
	{
		$('#filter li[data-filter=' + chosen + ']').addClass('active');
	}
	
	$('#works').filterable({
		'filterContainer' : '#filter'
	});
	
	filterNavChange(null);
	$('#filter li').click(function(event){ filterNavChange(event); });
	
	$("#intro .slidetabs").tabs("#intro .tabs > div", {
		current: 'active',
		fadeInSpeed: 1000,
		effect: 'fade',
		rotate: true
	}).slideshow({
		autoplay: true, 
		interval: 5000,
		clickable: false
	});
	
	$('#works li').hover(function(){
		$(this).children('a').children('img').animate({
			'top': '-8px'
		}, 50);
		$(this).children('a').children('h3').animate({
			'color': '#f7f7f7', 'background-color': '#333'
		}, 300);
	}, function(){
		$(this).children('a').children('img').animate({
			'top': '0px'
		}, 200);
		$(this).children('a').children('h3').animate({
			'color': '#333', 'background-color': '#f7f7f7'
		}, 300);
	});
}


/**
 * Runs when Ty� page is ready
 */
var tyoReady = function(){ 
    
	addthis.toolbox("#social-buttons");

	FB.XFBML.parse($('.fb-like').get(0));
	
	$('html, body').animate({scrollTop: '90px'}, 'slow');
	
	if(!$('html').hasClass('lt-ie8')) {
		$('#reference aside').simplefloating({'marginTop': 15});
	}
	
}


/**
 * Runs when Kluu page is ready
 */
var kluuReady = function() {
	
	var chalkboardSpeed = 1000;
	
	if(!$('html').hasClass('lt-ie9')) {
	var blinkSpeed = 250;
	$('#chalkboardnav li .icon').delay(500).queue(function(){
		$(this).fadeOut(blinkSpeed, function(){
			$(this).fadeIn(blinkSpeed, function(){
				$(this).fadeOut(blinkSpeed, function(){
					$(this).fadeIn(blinkSpeed, function(){
						$(this).fadeOut(blinkSpeed, function(){
							$(this).fadeIn(blinkSpeed);
						});
					});
				});
			});
		});
		$(this).dequeue();
	});
	}
	
	$('#chalkboardnav ul > li').click(function(){ 
		var itemId = $(this).attr('id').split('-');
		$('#chalkboard .boards .subview').hide();
		$('#board-'+ itemId[1]).show();
		$('#chalkboard .boards').animate({
			top: '-336px'
		}, chalkboardSpeed);
		
	});
	
	// Back link
	$('#chalkboard').delegate('a.go-back', 'click', function(){ 
		$('#chalkboard .boards').animate({
			top: '0px'
		}, chalkboardSpeed);
	});
	
	
	$('#chalkboard .subview li a').hover(function(){
		var li = $(this).parent();
		var siblings = li.siblings();
		var content = li.find('.content');
				
		//if(e.type == 'mouseenter') {
			
			//content.stop(true,true).fadeIn(100);
			//siblings.stop(true,true).fadeOut(100);
			
			li.addClass('hover');
			content.stop(true,true).delay(200).queue(function(){
				if($('html').hasClass('lt-ie9')) {
					$(this).show();
					siblings.hide();
				} else {
					$(this).stop(true,true).fadeIn(300);
					siblings.stop(true,true).fadeOut(100);	
				}
				$(this).dequeue();
			});
			
	},function(){
		var li = $(this).parent();
		var siblings = li.siblings();
		var content = li.find('.content');
		
		//} else if(e.type == 'mouseleave') {
			
			//content.stop(true,true).fadeOut(100);
			//siblings.stop(true,true).fadeIn(100);
			
			li.removeClass('hover');
			if($('html').hasClass('lt-ie9')) {
				content.hide();
				siblings.delay(400).queue(function(){
					$(this).find('.content').hide();
					$(this).show();
					$(this).dequeue();
				});
			} else {
				content.stop(true,true).fadeOut(100);
				siblings.stop(true,true).delay(400).queue(function(){
					//$(this).find('.content').hide();
					$(this).stop(true,true).fadeIn(200);
					$(this).dequeue();
				});
			}
			
		//}
	});
	
}

/*
function moveChalkboard() {
	alert('click onclick event');
}
*/

/**
 * Runs when Yhteydenotto page is ready
 */
var yhteydenottoReady = function() {
	contactNavChange();
	
	if(!$('#map-canvas').hasClass('ready')) {
		$('body').append('<script src="http://maps.google.com/maps/api/js?sensor=false&callback=initMap"></script>');
	}
	
	$.tools.dateinput.localize("fi",  {
   	months:        'Tammikuu,Helmikuu,Maaliskuu,Huhtikuu,Toukokuu,Kes&auml;kuu,Hein&auml;kuu,Elokuu,' +
                   	'Syyskuu,Lokakuu,Marraskuu,Joulukuu',
   	shortMonths:   'Tammi,Helmi,Maalis,Huhti,Touko,Kes&auml;,Hein&auml;,Elo,Syys,Loka,Marras,Joulu',
   	days:          'Sunnuntai,Maanantai,Tiistai,Keskiviikko,Torstai,Perjantai,Lauantai',
   	shortDays:     'su,ma,ti,ke,to,pe,la'
	});
	
	$('input#date').val('').dateinput({
		lang: "fi",
		format: "dd.mm.yyyy"
	});
	
	$('form dt.file-field label').click(function(){
		$('form dd.file-field').toggle();
	});
	
	// Form submit actions
	//console.log('url: '+ site.baseUrl + $('#offer-form').attr('action'));
	
	$('#meeting-form,#offer-form,#recruit-form').each(function(){
		//console.log($(this).attr('action'));
		$(this).attr('action', $(this).attr('action') + '?submit=1');
		//console.log($(this).attr('action'));
	});
	
	$('#meeting-form,#offer-form,#recruit-form').ajaxForm({
		dataType: 	'html',
		success: 
		function(data, status){
			//console.log('status: '+ status);
				if(status == 'success') {
					//console.log('response: '+ data);
					//console.log('leng '+ $(data).find('#form-validation-message').length);
					
					if($(data).find('#form-validation-message').length) {
						//console.log('validation: '+ $(data).find('#form-validation-message').html());
						$('#form-validation-message').html($(data).find('#form-validation-message').html());
					} else {
						//console.log('success: '+ $(data).find('#contact-form').html());
						$('#contact-form').html($(data).find('#contact-form').html());
					}
				} else {
					//console.log('form error');
					alert('form error');
				}
		}
	});
	
	//});
	
	/*
	$('#meeting-form,#offer-form,#recruit-form').submit(function(e){
		e.preventDefault();

			var json = {};
			$(this).find('input,textarea').each(function(){
				//console.log('input '+ $(this).attr('id') +': '+ $(this).val());
				json[$(this).attr('name')] = $(this).val();
			});
			
			var formUrl = site.baseUrl + $(this).attr('action');
			
			
			$.post(formUrl, json, function(data, status){
				//console.log('post');
				if(status == 'success') {
					//console.log('response: '+ data);
					//console.log('leng '+ $(data).find('#form-validation-message').length);
					
					if($(data).find('#form-validation-message').length) {
						//console.log('validation: '+ $(data).find('#form-validation-message').html());
						$('#form-validation-message').html($(data).find('#form-validation-message').html());
					} else {
						//console.log('success: '+ $(data).find('#contact-form-fields').html());
						$('#contact-form-fields').html($(data).find('#contact-form-fields').html());
					}
				} else {
					//console.log('form error');
				}
			});
	});*/
}

var defaultUnready = function(){ 
	cufonReplacements(); 
	emailCloak();
	
	if($('body').attr('id') != 'home') {
		$('#twitter-tweets').fadeOut(250); 
		$('#topline').animate({height: '4px'}, 500); 
	}
	$('header .script').stop().fadeOut(100); 

	// Get ajax URL
	var hashUrl = window.location.hash;
	if(hashUrl.charAt(0) == '#') {
		hashUrl = '/'+hashUrl.substring(1);
	}
	// Google Analytics ajax page tracking
	_gaq.push(['_trackPageview', hashUrl]);
}


/**
 * Main navigation
 */
var mainNavChange = function() {
	var mainNavSelector = '#mainnav';
	var activeTabSelector = '#mainnav-active-tab';
	
	if($(activeTabSelector).length == 0) {
		$(mainNavSelector).append('<div id="mainnav-active-tab" class="mainnav-active-tab"><div></div></div><div id="mainnav-active-tab-helper" class="mainnav-active-tab"><div></div></div>');
	}
	
	var activeLink = $(mainNavSelector +' li.active');
	var activeLinkA = activeLink.children();
	
	if(activeLink.length) {

		var activeTop = activeLink.offset().top - $(mainNavSelector).offset().top;
		var activeLeft = activeLink.offset().left - $(mainNavSelector).offset().left;
	
		if($(activeTabSelector).offset().top < 0) {
			$(activeTabSelector).css({
				left: activeLeft,
				width: activeLink.css('width')
			});
			$(activeTabSelector).css({
				top: activeTop
			});
		} else {
			var activeTabLeft = $(activeTabSelector).offset().left - $(mainNavSelector).offset().left;
			
			if(activeLeft != activeTabLeft) {
				$(activeTabSelector).animate({
					top: '-100px'
				}, 300);
				$(activeTabSelector+'-helper').css({
					left: activeLeft+'px', 
					width: activeLink.css('width')
				});
				$(activeTabSelector+'-helper').animate({
					top: activeTop
				}, 300).queue(function(){
					$(activeTabSelector).css({
						top: activeTop+'px',
						left: activeLeft+'px', 
						width: activeLink.css('width')
					});
					$(activeTabSelector+'-helper').css({
						top: '-100px'
					});
					$(this).dequeue();
				});
			}
		}
	}
}


/**
 * Basic ajax navigation functionality
 */
var basicNavChange = function(navSelector, leftPositionFix, itemSelector, currentClass) {
	var i = 1;
	var timer = setInterval(function(){
		if(i >= 30) { clearInterval(timer); }
		if($(navSelector).length > 0) {
			itemSelector = typeof(itemSelector) != 'undefined' ? itemSelector : 'li';
			currentClass = typeof(currentClass) != 'undefined' ? currentClass : 'active';
			leftPositionFix = typeof(leftPositionFix) != 'undefined' ? leftPositionFix : 0;
			
			var activeTabSelector = navSelector +'-active-tab';
			
			if($(activeTabSelector).length == 0) {
				$(navSelector).append('<div id="'+ navSelector.replace(/^#/,'') +'-active-tab"><div></div></div>');
			}
			
			var activeLink = $(navSelector+' '+itemSelector+'.'+currentClass);
			
			if(activeLink.length) {
				var activeTop =  ( activeLink.offset().top - $(navSelector).offset().top )+'px';
				var activeLeft = ( activeLink.offset().left - $(navSelector).offset().left - leftPositionFix )+'px';
				
				if($(activeTabSelector).offset().top <= 0) {
					$(activeTabSelector).hide();
					$(activeTabSelector).css({
						top: activeTop,
						left: activeLeft,
						width: activeLink.css('width')
					}).fadeIn(300);
				} else {
					$(activeTabSelector).animate({
						left: activeLeft,
						width: activeLink.css('width')
					}, 300);
				}
			}
			clearInterval(timer);
		}
		i++;
	}, 100);
}


/**
 * Footer navigation
 */
var footerNavChange = function() {
	basicNavChange('#footernav');
}


/**
 * Filter navigation
 */
var filterNavChange = function(event) {
    var chosen = $.cookie('kluu_home_filter'); 
	if (chosen)
	{
	   if (event)
       {
           var tag = $(event.currentTarget).attr('data-filter');
           $.cookie('kluu_home_filter', tag);
           $("#works li a").each(function() {
               var url = $(this).attr('href').split('?');
               if (tag == 'all') tag = 'kaikki';
               $(this).attr('href', url[0] + '?tag=' + tag);
           });

       }
	}
	
	basicNavChange('#filter');
}


/**
 * Work navigation
 */
var workNavChange = function() {
	var i = 1;
	var timer = setInterval(function(){
		if(i >= 5) { clearInterval(timer); }
		basicNavChange('#worknav-1', 1);
		basicNavChange('#worknav-2', 1);
		i++;
	},500);
}


/**
 * Contact navigation
 */
var contactNavChange = function() {
	basicNavChange('#contactnav');
}


/**
 *	Email Cloak
 */
var emailCloak = function() {
	$(".email-cloak").each(function(){
		var ats, dots, address, text, link, i;
		ats = [' [at] '];
		dots = [' [dot] '];
		link = $(this).html();
		
		link = link.match(/^(.*) \((.*)\)/);
		
		if(link != null) {
			text = link[1];
			address = link[2];
			for ( i = 0; i < ats.length; i++ ) {
				address = address.replace(ats[i], '@');
			}
			for ( i = 0; i < dots.length; i++ ) {
				address = address.replace(dots[i], '.');
			}
			$(this).html('<a href="mailto:' + address + '">' + text + '</a>');
		}
	});
}


/**
 * Scroll to top link functionality
 */
var scrollToTop = function() {
	$(window).scroll(function () {
		if($(window).width() >= 1144) {
			if ($(this).scrollTop() > 200) {
				$('#scroll-to-top').fadeIn();
			} else {
				$('#scroll-to-top').fadeOut();
			}
		}
	});

	// scroll body to 0px on click
	$('body').delegate('#scroll-to-top', 'click', function(e) {
		e.preventDefault();
		$('html,body').animate({
			scrollTop: 0
		}, 500);
		return false;
	});
}


/**
 * Google maps initialize
 */
function initMap() {
	var userLocation = 'Koulukatu 19, 90100 Oulu, Suomi';
	
	var geocoder = new google.maps.Geocoder();
	
	geocoder.geocode( {'address': userLocation}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			
			var location = results[0].geometry.location;
			
			var map = new google.maps.Map(document.getElementById("map-canvas"), { 
				zoom: 13, 
				center: location, 
				mapTypeControl: false, 
				mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, 
				navigationControl: true, 
				navigationControlOptions: {style: google.maps.NavigationControlStyle.LARGE}, 
				mapTypeId: google.maps.MapTypeId.ROADMAP 
			});
				
			var target_marker = new google.maps.Marker({ 
				position: location, 
				map: map, 
				title: "Koulukatu 19 A1, 90100 Oulu", 
				zIndex: 1
			});
			
			
		} else { 
			alert("Geocode failed. Reason: " + status);
		}
	});
	$('#map-canvas').addClass('ready');	
}


/**
 * No ajax definitons for mobile devices
 */
var noAjax = function() {
	$('html').addClass('no-ajax');
	
	emailCloak();
	cufonReplacements();
	
	if($('body').attr('id') == 'home') {
		etusivuReady();
	}
	if($('body').attr('id') == 'reference') {
		tyoReady();
	}
	if($('body').attr('id') == 'kluu') {
		kluuReady();
	}
	if($('body').attr('id') == 'contact') {
		yhteydenottoReady();
	}
}


/**
 * Ajaxsite options
 * ****************
 *
 * Specific targets
 */
var specificTarget = {
	"^tyot/":					"#reference #main,.referencenav .next[href]",
	"^tyot(.*)tag=(.*)":		"#reference #main,.typenav ul,.worknav ul,.referencenav .next[href]",
	"^yhteydenotto":			"#contact #contact-main"
};


/**
 * Ajax callback functions
 */
var callback = {
	"default": 										[ defaultUnready, null ],
	"^(http://kluu(.*).fi|tyot.html$)": 	[ function(){ $('#works li').hide(); }, etusivuReady ],
	"^tyot(.*)":									tyoReady,
	"^kluu":											kluuReady,
	"^yhteydenotto":								yhteydenottoReady
};


/**
 * Ajaxsite options object
 */
var ajaxsiteOptions = {
	"wrapper":				"#changing-content-wrapper", 
	"defaultTarget": 		"#changing-content", 
	"specificTarget":		specificTarget, 
	"callback":				callback, 
	"hashchange":			function(hash){
		mainNavChange();
		footerNavChange();
		workNavChange();
		contactNavChange();
						
		// Go top of the page when needed
		var history = $.fn.ajaxsite.history;
		if(history.length > 1) {
			if(history[(history.length - 2)].match(/^(?![tyot\/])/) != null && hash.match(/^tyot/)) {
				if($('body').scrollTop() > 90) { 
					$('body').animate({scrollTop: 90}, 'slow'); // 90
				}
			}
		}
	},
	"changeSpeed":			200
};
