var subNaviY = null;
var scrollTimeout;
var canvas;
var context2d;
var gradObjArr = new Array();
	
// ============= document ready ===============
$(document).ready(function() {		
	
	// loading page with animation
	if($('body').attr('class') == 'loading')
	{
		setCanvas(true);
	}
	else
	{
		setBirds();
		setCarousel();
		setCanvas(false);
		
		// index - no content
		if($('body').attr('class') != 'index')
		{
			addContent();
			replaceCurrentNaviLink();
		}
	}
	
	function setBirds()
	{
		$('#birds').append('<img src="resources/img/bird.gif" width="10" height="12" vspace="10" /><img src="resources/img/bird.gif" hspace="20" /><img src="resources/img/bird2.gif" width="10" height="10"  vspace="10" hspace="8"/><img src="resources/img/bird2.gif"hspace="4" />');
		var top = randomFromTo(60, 260) + 'px';
		$('#birds').css({'top':top, 'opacity':'0'});
		setTimeout(flyBirds, randomFromTo(1000, 10000));
	}
	
	function flyBirds()
	{
		var left = getWidth() + 300 + 'px';
		$('#birds').animate({opacity:"1" }, 1000, 'linear', function() {
			$('#birds').animate({left:left}, 20000, 'linear', function() {
				$('#birds').css({'visibility':'hidden'});
			});
		});	
	}

	// subNavi scroll
	if($('#subNavi').length > 0)
	{
		$(window).bind("scroll", scroll);
		subNaviY = parseInt($('#subNavi').css("padding-top").substring(0, $('#subNavi').css("padding-top").indexOf("px")));
	}
		
	// create overlay & show button
	function addContent()
	{
		$('body').append('<div id="overlay" style="cursor: pointer;" title="Sulje / Close">&nbsp;</div>');
		$('#overlay').click(function(){
			close();
		});
		setOverlayForIOS();
		
		var lang = $('html').attr('lang');
		var str = 'Sulje';
		if(lang == 'en') str = 'Close';
		getPageContent().append('<div id="closeBottom" onclick="javascript:close();" style="cursor: pointer; cursor: hand;"><a href="javascript:close()">'+str+'</a></div>');
	}
	
	function replaceCurrentNaviLink()
	{
		var str = $('body').attr('class');
		var id = '#navi' + str.substr(0, 1).toUpperCase() + str.substr(1);
		var lang = $('html').attr('lang');
		if(lang == 'en') id += '-en';
		$(id).attr('href', 'javascript:open()');
		console.log('replaceCurrentNaviLink id:'+id+' $(id).attr("href"):'+$(id).attr('href'));
	}
	
	function setCarousel()
	{
		$("#carousel").jCarouselLite({
			btnNext: "#nextBt",
			btnPrev: "#prevBt",
			auto: 8000,
			visible: 2,
			circular: true,
			speed: 1000
		});
		
		$('#prevBt').css({'opacity':'0','cursor':'pointer'});
		$('#nextBt').css({'opacity':'0','cursor':'pointer'});
		
		$("#prevBt").hover(function() {
			$('#prevBt').css({'opacity':'1'});
		}, function() {
			$('#prevBt').css({'opacity':'0'});
		});
		
		$("#nextBt").hover(function() {
			$('#nextBt').css({'opacity':'1'});
		}, function() {
			$('#nextBt').css({'opacity':'0'});
		});
	}
	
	function setCanvas(animate) {
		canvas = document.getElementById("canvas");
		context2d = canvas.getContext("2d");
		
		if(!canvas || !context2d)
			return;
		
		var obj0 = new Object();	
		obj0.x = randomFromTo(175, 250);
		obj0.y = randomFromTo(240, 320);
		obj0.r0 = randomFromTo(50,90);
		obj0.r1 = randomFromTo(220,300);
		obj0.color = 255;
		gradObjArr.push(obj0);
		
		var obj1 = new Object();	
		obj1.x = randomFromTo(380,440);
		obj1.y = randomFromTo(350,500);
		obj1.r0 = randomFromTo(120,190);
		obj1.r1 = randomFromTo(190,290);
		obj1.color = 255;
		gradObjArr.push(obj1);
		
		var obj2 = new Object();	
		obj2.x = randomFromTo(646,740);
		obj2.y = randomFromTo(260,400);
		obj2.r0 = randomFromTo(100,120);
		obj2.r1 = randomFromTo(270,300);
		obj2.color = 255;
		gradObjArr.push(obj2);
		
		var obj3 = new Object();	
		obj3.x = randomFromTo(550,850);
		obj3.y = randomFromTo(250,450);
		obj3.r0 = randomFromTo(30,90);
		obj3.r1 = randomFromTo(190,390);
		obj3.color = 255;
		gradObjArr.push(obj3);
		
		draw();
		if(animate) setInterval("draw()", 50);
	}		
});

	
// ============= page ========================================================
function scroll()
{	
	window.clearTimeout(scrollTimeout);
	scrollTimeout = window.setTimeout(scrollDelay, 100, []);
}

function scrollDelay()
{
	var limit = 64;
	var top =  window.pageYOffset - subNaviY;
	var y = window.pageYOffset > limit ? top - subNaviY : subNaviY;
	if(!isMobile()) $('#subNavi').animate({'padding-top':y+'px'}, 650, 'easeOutSine');
	else $('#subNavi').css({'padding-top':y+'px'});
	console.log('floatSubNavi window.pageYOffset:'+window.pageYOffset+' top:'+top+' y:'+y +' subNaviY:'+subNaviY);
}

// return current page's content based on body class
function getPageContent()
{
	switch($('body').attr('class'))
	{
		case 'index':
			//console.error('getPageContent - no content found for index');
			return null;
			
		case 'program':
			//console.log('getPageContent program');
			return $('#program');
			
		case 'welcome':
			//console.log('getPageContent welcome');
			return $('#welcome');	
			
		case 'artists':
			//console.log('getPageContent artists');
			return $('#artists');
			
		case 'musicalPieces':
			//console.log('getPageContent musicalPieces');
			return $('#musicalPieces');
			
		case 'tickets':
			//console.log('getPageContent tickets');
			return $('#tickets');
			
		case 'venue':
			//console.log('getPageContent venue');
			return $('#venue');
			
		case 'share':
			//console.log('getPageContent share');
			return $('#share');
			
		case 'info':
			//console.log('getPageContent info');
			return $('#info');
			
		case 'history':
			//console.log('getPageContent history');
			return $('#history');
			
		case 'guestbook':
			//console.log('getPageContent guestbook');
			return $('#guestbook');
			
		case 'gallery':
			//console.log('getPageContent gallery');
			return $('#gallery');
			
		default:
			console.error('getPageContent - no content found for: '+$('body').attr('class'));
			return null;		
	}
}

function close()
{
	console.log('close');
	if (!isMobile() && $('#overlay').length > 0)
	{
		getPageContent().animate({'opacity':'0'}, 250);
		$('#overlay').animate({'opacity':'0'}, 250, closeNow);
	}
	else
	{
		closeNow();
	}
}

function closeNow()
{
	if($('#overlay').length > 0) $('#overlay').css({'display':'none'});
	getPageContent().css({'display':'none'});
}

function open()
{
	//console.log('open');
	var target = getPageContent();
	target.css({'display':'block'});
	
	if($('#overlay').length > 0)
	{
		$('#overlay').css({'display':'block'});
		setOverlayForIOS();
	}
	
	if (!isMobile())
	{
		target.css({'opacity':'0'});
		target.animate({'opacity':'1'}, 250);
		$('#overlay').css({'opacity':'0'});
		$('#overlay').animate({'opacity':'0.21'}, 250);
	}
}

function draw()	{
	clear();
	
	var w = canvas.width;
	var h = canvas.height;
	
	var len = gradObjArr.length;
	for(var i=0; i<len; i++) {
		var obj = gradObjArr[i];
		obj.x += 2;
		drawGradient(context2d, obj.x,obj.y,obj.r0,obj.r1, w,h,obj.color);
	}
}

function drawGradient(context2d, x,y,r0,r1, w,h,color) {
	// x,y,r
	var grad = context2d.createRadialGradient(
		x, y, r0,
		x, y, r1);

	var stops = {
		0: 'rgba('+color+','+color+','+color+',1)',
		0.5: 'rgba('+color+','+color+','+color+',0.5)',
		1: 'rgba('+color+','+color+','+color+',0)',
	};

	for (var position in stops) {
		var color = stops[position];
		grad.addColorStop(position, color);
	}

	context2d.fillStyle = grad;
	context2d.fillRect(0, 0, w, h);
}

function clear() {
	context2d.clearRect(0, 0, canvas.width, canvas.height);
}
// ============= utils ========================================================
/*
function openMusicPlayer()
{
	//window.open('music-player.html','_blank', 'width=400, height=200, modal=yes, alwaysRaised=yes, toolbar=0, location=0, menubar=0');
	//window.open("http://www.javascript-coder.com","mywindow","menubar=1,resizable=1,width=350,height=250");
	//event.preventDefault();
	//return false;
}
*/

function setOverlayForIOS()
{
	if(isIOS())
	{
		$("#overlay").css('width', getWidth()+'px');
		$("#overlay").css('height', getHeight()+'px');
	}
}

function getWidth()
{
	return ($(document).width() > $('body').width()) ? $(document).width() : $('body').width();
}

function getHeight()
{
	return ($(document).height() > $('body').height()) ? $(document).height() : $('body').height();
}

function isIOS()
{
	var deviceAgent = navigator.userAgent.toLowerCase();
	var found = deviceAgent.match(/(iphone|ipod|ipad)/);
	console.log('isIOS deviceAgent:'+deviceAgent+' found: '+found);
	
	if(found==null)
		return false;
	return true;
}

function isMobile()
{
	var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
	return mobile;
}

function randomFromTo(from, to)
{
   return Math.floor(Math.random() * (to - from + 1) + from);
}
