/************************************
*
*	Project: kubasiak.pl
*	Date: 01.02.2009	
*	Author: Marcin Chwałek
*	mail: marcin.chwalek@gmail.com
*
*	v 1.0
*
************************************/



function get(what) { return document.getElementById(what); }

$(document).ready(init);

function init()
{
	sCount=0;
	anim=false;
	actWork=-1;
	actPage=0;
	actCat=0;
	width = $(window).width();
	height = $(window).height();
	naviShow=0;
	limit=0.15;
	$('.m5').bind('mouseenter',naviShowf);
	$('.m5').bind('mouseout',naviHidef);
	
	//$('#project').bind('mousewheel', wheelScroll);
	
	tp = Math.round(($(window).height()-140)/2);
	left = Math.round(($(window).width()-236)/2);
	$('.mainNavi').css('left',left+'px');
	$('.mainNavi').css('top',tp+'px');
	$('.mainNavi').css('display','block');
	
	tp = Math.round(($(window).height()-140)/2);
	left = Math.round(($(window).width()-236)/2);
	$('.subNavi').css('left',left+'px');
	$('.subNavi').css('top',tp+'px');

	$.hotkeys.add('up', showUp);
	$('#subUp').bind('click',function(e) { e.preventDefault(); showUp(); });
	$('.mainUp').bind('click',function(e) { e.preventDefault(); showUp(); });
	$('.txt0').bind('click',function(e) { e.preventDefault(); showUp(); });
	//$('.mainUp').bind('mouseenter',function() { mainLinks(0); });
	
	$.hotkeys.add('down', showDown);
	$('#subDw').bind('click',function(e) { e.preventDefault(); showDown(); });
	$('.mainDw').bind('click',function(e) { e.preventDefault(); showDown(); });
	$('.txt1').bind('click',function(e) { e.preventDefault(); showDown(); });
	//$('.mainDw').bind('mouseenter',function() { mainLinks(1); });

	
	$.hotkeys.add('right', showNext);
	$('#subRight').bind('click',function(e) { e.preventDefault(); showNext(); });
	$('.mainRight').bind('click',function(e) { e.preventDefault(); showNext(); });
	$('.txt3').bind('click',function(e) { e.preventDefault(); showNext(); });
	//$('.mainRight').bind('mouseenter',function() { mainLinks(3); });
	
	$.hotkeys.add('left', showPrev);
	$('#subLeft').bind('click',function(e) { e.preventDefault(); showPrev(); });
	$('.mainLeft').bind('click',function(e) { e.preventDefault(); showPrev(); });
	$('.txt2').bind('click',function(e) { e.preventDefault(); showPrev(); });
	//$('.mainLeft').bind('mouseenter',function() { mainLinks(2); });
	
	//$('.mainOff').bind('mouseenter',function() { hideAllMainLinks(); });
	
	$('a.menuBack').bind('click',mainBack);
	$('#subMenuBack').bind('click',mainBack);
	$.hotkeys.add('b', mainBack);
	
	$('a.navi2').bind('click',function(e) { e.preventDefault(); } );
	$('a.navi2').bind('mouseenter',function() { $('.naviBubble').fadeIn("fast"); /*css('display','block');*/ });
	$('a.navi2').bind('mouseleave',function() { $('.naviBubble').fadeOut("fast"); /*css('display','none');*/ });
	
	//initWorks();
		
	$(document).bind('mousemove',naviDisplay);
		
	//cache projektow print i id
	$('#project').append(imgTag(works[1].length-1,0,1));
	imgDisplay(works[1].length-1,0,1,false);
	$('#project').append(imgTag(0,0,3));
	imgDisplay(0,0,3,false);
}

function hideAllMainLinks()
{
	return;
	for(a=0;a<4;a++)
	{
		$('.txt'+a).css('display','none');
		w = getDir(a);
		$('.main'+w).removeClass('active');
	}
}
function getDir(w)
{
	if(w==0)
		return 'Up';
	if(w==1)
		return 'Dw';
	if(w==2)
		return 'Left';
	return 'Right';
}
function mainLinks(what)
{
	hideAllMainLinks();
	w = getDir(what);
	$('.main'+w).addClass('active');
	$('.txt'+what).css('display','block');
}

function wheelScroll(e)
{
	if(anim)
		return;
	if($.browser.msie)
		what=e.wheelDelta;
	else
		what=-e.detail;
		
	if(what > 0)
		showUp();
	else
		showDown();
}

width = $(window).width();
height = $(window).height();
naviShow=0;
limit=0.15;

function naviDisplay(e)
{
	if(actWork == -1)
	{
		if(naviShow !=0)
		{
			naviShow=0;
			$('#navi').fadeOut(100);//.css('display','none');
			$('.subNavi').fadeOut(100);//.css('display','none');
		}
		return false;
	}
	
		
	show=0;
	if(e.pageY < 145)
		show=1;
	
	if(e.pageX > width/2-120 && e.pageX < width/2+120 && e.pageY > height/2-120 && e.pageY < height/2+120)
		show=2;
	else if(show != 1)
		show=0;
		
	if(show==naviShow)
		return;
	naviShow=show;
	if(show!=0)
	{
	
		$('#navi').fadeIn('def');//.css('display','block');
		/*
		if(show==1)
			$('.subTopNavi').fadeIn('def');//.css('display','block');
		else
			$('.subTopNavi').css('display','none');
		*/
		
		$('.subNavi').fadeIn('def');//.css('display','block');
	}
	else
	{
		$('#navi').fadeOut(100);//.css('display','none');
		$('.subNavi').fadeOut(100);//.css('display','none');
		//$('.subTopNavi').fadeOut(100);//.css('display','none');
	}
}

function naviShowf(e)
{
	e.preventDefault();
	//$('#menu a.m5').css('display','none');
	$('#naviBubble').css('display','block');
}

function naviHidef(e)
{
	e.preventDefault();
	$('#naviBubble').css('display','none');
}

function initWorks()
{
	$('.jsEnable').remove();
	width = $(window).width();
	height = $(window).height();
	
	left = Math.round((width-$('#navi_up').width())/2);
	tp = Math.round((height-$('#navi_left').height())/2);
	
	$('#navi_up').css('left',left+'px');
	$('#navi_dw').css('left',left+'px');
	$('#navi_left').css('top',tp+'px');
	$('#navi_right').css('top',tp+'px');
	
	setBox(getHeight(actWork,actPage));
	$('#project').append(imgTag(actWork,actPage));
	if(actPage != works.length-1)
	{
		$('#project').append(imgTag(actWork+1,0));
		imgDisplay(actWork+1,0,false);
	}
	
	if(actPage != works[actWork][1]-1)
	{
		$('#project').append(imgTag(actWork,actPage+1));
		imgDisplay(actWork,actPage+1,false);
	}
		
	setPos(actWork,actPage,getPos(actWork,actPage));
}

function imgDisplay(id,page,cat,what)
{
	if(what==false)
		$('.show_'+id+'_'+page+'_'+cat).css('display','none');
	else
		$('.show_'+id+'_'+page+'_'+cat).css('display','block');
}

function imgTag(id,page,cat)
{
	tmp = page+1;
	return '<img src="projects/'+works[cat][id][0]+'.'+tmp+'.jpg" width="'+pages[cat][id][page][0]+'" height="'+pages[cat][id][page][1]+'" class="show_'+id+'_'+page+'_'+cat+'"/>';
}

function getPos(id,page,cat) //pozycja w chwili wyswietlania
{
	sz = pages[cat][id][page][0];
	width=$(window).width();
	left = Math.round((width-sz)/2);
	return left;
}

function getWidth(id,page,cat)
{
	return pages[cat][id][page][0];
}

function getHeight(id,page,cat)
{
	return pages[cat][id][page][1];
}

function setHeight(id,page,cat,h)
{
	$('.show_'+id+'_'+page+'_'+cat).css('height',h+'px');
}


function setPos(id,page,cat,x)
{
	$('.show_'+id+'_'+page+'_'+cat).css('left',x+'px');
}

function setH(id,page,cat,y)
{
	$('.show_'+id+'_'+page+'_'+cat).css('top',y+'px');
}

function setBox(height)
{
	height+=60;
	$('#project').css('height',height+'px');
	wnd = $(window).height();
	if(wnd < height)
		wnd=height;
	$('#navi_bg').css('height',wnd+'px');
	$('#box').css('height',wnd+'px');
}

anim=false;
function showNext()
{
	if(anim)
		return;
		
	hideAllMainLinks();
	if(actWork==-1 && actCat==0)
		return slideInPrint();
		
	if(actCat!=0 && actWork==works[actCat].length-1)
		return slideOutWebFromLast();
		
	if(actWork == works[actCat].length-1)
		return;
		
	anim=true;
	
	hideAll(actCat);
	imgDisplay(actWork,actPage,actCat,true);
	//gdyby jednak nie istnial element
	
	speed=-gSpeed;
	old = getWidth(actWork,actPage,actCat);
	oldH = getHeight(actWork,actPage,actCat);
	slide(actWork,actPage,actCat,getPos(actWork,actPage,actCat),-old-20,speed,1,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
		
	actWork++;
	actPage=0;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
		
	newH = getHeight(actWork,actPage,actCat);
	if(newH>oldH)
		setBox(newH);
	
	wnd = $(window).width();
	if(wnd>old)
		st=wnd;
	else
		st=old;
	
	imgDisplay(actWork,actPage,actCat,true);
	setPos(actWork,actPage,actCat,st);
	setH(actWork,actPage,actCat,0);
	slide(actWork,actPage,actCat,st,getPos(actWork,actPage,actCat),speed,1,true);
	
	//preload jeszcze nastepnego
	if(actWork != works[actCat].length-1 && !exists(actWork+1,0))
	{
		$('#project').append(imgTag(actWork+1,0,actCat));
		imgDisplay(actWork+1,0,actCat,false);
	}
	//oraz podstrony
	if(actPage != works[actCat][actWork][1]-1 && !exists(actWork,actPage+1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage+1,actCat));
		imgDisplay(actWork,actPage+1,actCat,false);
	}
	
}

function openBlog()
{
	window.open('http://blog.kubasiak.pl');
}

function showDown()
{
	hideAllMainLinks();
	if(actWork==-1)
		return;// openBlog(); blog wylaczony
		
	if(actPage == works[actCat][actWork][1]-1)
	{
		if(actCat==1)
			return showPrev();
		return showNext();
	}
	if(anim)
		return;
	anim=true;
	speed=-gSpeed;
	
	hideAll(actCat);
	imgDisplay(actWork,actPage,actCat,true);
	
	//w dol, lecimy w gore
	oldH=getHeight(actWork,actPage,actCat);
	slide(actWork,actPage,actCat,0,-oldH,speed,2,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
	actPage++;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
	newH=getHeight(actWork,actPage,actCat);
	
	if(oldH<newH)
		st=newH;
	else
		st=oldH;
		
	setBox(st);
	setPos(actWork,actPage,actCat,getPos(actWork,actPage,actCat));
	setH(actWork,actPage,actCat,st);
	imgDisplay(actWork,actPage,actCat,true);
	slide(actWork,actPage,actCat,st,0,speed,2,true);
	
	//next page
	if(actPage != works[actCat][actWork][1]-1 && !exists(actWork,actPage+1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage+1,actCat));
		imgDisplay(actWork,actPage+1,actCat,false);
	}

}

function exists(id,page,cat)
{
	$tmp = $('.show_'+id+'_'+page+'_'+cat)[0];
	if($tmp)
		return true;
	return false;
}

function slideAbout()
{
	anim=true;
	speed=-gSpeed+25;
	height = $(window).height();
	resetPos();
	slide(actWork,actPage,actCat,0,-height,speed,2,true);
	slide(actWork,actPage+1,actCat,height,0,speed,2,true);
	imgDisplay(actWork,actPage+1,actCat,true);
	imgDisplay(actWork,actPage,actCat,true);
	actPage=1;
}

function mainBack(e)
{
	e.preventDefault();
	
	if(actWork==-1 && actPage==0)
		return;
		
	if(actWork==-1 && actPage==1)
		return slideHome();
	if(actCat==3)
		return slideOutWebFromFirst();
	return slideOutWebFromLast();
}

function slideHome()
{
	anim=true;
	speed=-gSpeed+25;
	height = $(window).height();
	resetPos();
	slide(actWork,actPage,actCat,0,-height,speed,2,true);
	slide(actWork,actPage-1,actCat,height,0,speed,2,true);
	imgDisplay(actWork,actPage-1,actCat,true);
	imgDisplay(actWork,actPage,actCat,true);
	actPage=0;
}

function resetPos()
{
	setPos(-1,0,0,0);
	setPos(-1,1,0,0);
}

function showUp()
{
	hideAllMainLinks();
	if(actWork == -1 && actPage==0)
		return slideAbout();
	if(actWork == -1 && actPage==1)
		return slideHome();
		
	if(actPage == 0)
	{
		if(actCat==1)
			return showPrev();
		return showNext();
	}
	
	if(anim)
		return;
	anim=true;
	
	speed=gSpeed;
	
	hideAll(actCat);
	imgDisplay(actWork,actPage,actCat,true);
	
	//w gore, lecimy w dol
	oldH=getHeight(actWork,actPage,actCat);
	newH=getHeight(actWork,actPage-1,actCat);
	
	if(oldH<newH)
		st=newH;
	else
		st=oldH;
		
	slide(actWork,actPage,actCat,0,st,speed,2,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
	actPage--;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
		
	setBox(st);
	setPos(actWork,actPage,actCat,getPos(actWork,actPage,actCat));
	setH(actWork,actPage,actCat,-newH);
	imgDisplay(actWork,actPage,actCat,true);
	setH(actWork,actPage,actCat,0);
	slide(actWork,actPage,actCat,-newH,0,speed,2,true);
	
	//next page
	if(actPage != 0 && !exists(actWork,actPage-1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage-1,actCat));
		imgDisplay(actWork,actPage-1,actCat,false);
	}
}

function slideInWeb()
{
	width = $(window).width();
	hideAll(1);
	hideAll(3);
	speed=gSpeed;
	anim=true;
	slide(actWork,actPage,actCat,0,width,speed,1,true);
	actPage=0;
	actCat=1;
	actWork=works[actCat].length-1;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
		
	imgDisplay(actWork,actPage,actCat,true);
	
	oldH = $(window).height();
	newH = getHeight(actWork,actPage,actCat);
	if(oldH<newH)
		st=newH;
	else
		st=oldH;
	setBox(st);
	
	slide(-1,2,0,-width,0,speed,1,true);
	setH(-1,2,0,60);
	
	//navi full
	setH(-2,0,0,0);
	setPos(-2,0,0,-width);
	slide(-2,0,0,-width,0,speed,1,true);
	
	imgDisplay(-1,2,0,true);
	setH(actWork,actPage,actCat,0);
	setPos(actWork,actPage,actCat,getPos(actWork,actPage,actCat));
	
	if(actWork != 0)
		if(!exists(actWork-1,0,actCat))
		{
			$('#project').append(imgTag(actWork-1,0,actCat));
			imgDisplay(actWork-1,0,actCat,false);
		}
			
	if(actPage != works[actCat][actWork][1]-1 && !exists(actWork,actPage+1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage+1,actCat));
		imgDisplay(actWork,actPage+1,actCat,false);
	}
		
}

function slideInPrint()
{
	width = $(window).width();
	hideAll(1);
	hideAll(3);
	speed=-gSpeed;
	anim=true;
	slide(actWork,actPage,actCat,0,-width,speed,1,true);
	actPage=0;
	actCat=3;
	actWork=0;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
		
	imgDisplay(actWork,actPage,actCat,true);
	
	oldH = $(window).height();
	newH = getHeight(actWork,actPage,actCat);
	if(oldH<newH)
		st=newH;
	else
		st=oldH;
	setBox(st);
	
	slide(-1,2,0,width,0,speed,1,true);
	setH(-1,2,0,60);
	
	//navi full
	setH(-2,0,0,0);
	setPos(-2,0,0,width);
	slide(-2,0,0,width,0,speed,1,true);
	
	
	imgDisplay(-1,2,0,true);
	setH(actWork,actPage,actCat,0);
	setPos(actWork,actPage,actCat,getPos(actWork,actPage,actCat));
	
	if(actWork != works[actCat].length-1)
		if(!exists(actWork+1,0,actCat))
		{
			$('#project').append(imgTag(actWork+1,0,actCat));
			imgDisplay(actWork+1,0,actCat,false);
		}
			
	if(actPage != works[actCat][actWork][1]-1 && !exists(actWork,actPage+1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage+1,actCat));
		imgDisplay(actWork,actPage+1,actCat,false);
	}
}

function slideOutWebFromLast()
{
	$('#navi').fadeOut(100);//.css('display','none');
	$('.subNavi').fadeOut(100);//.css('display','none');
	speed=-gSpeed;
	width = $(window).width();
	anim=true;
	imgDisplay(-1,0,0,true);
	imgDisplay(-1,1,0,false);
	setH(-1,0,0,0);
	slide(-1,2,0,0,-width-30,speed,1,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
	actPage=0;
	actWork=-1;
	actCat=0;
	slide(actWork,actPage,actCat,width,0,speed,1,true);
	
	//navi full
	slide(-2,0,0,0,-width-30,speed,1,true);
}

function slideOutWebFromFirst()
{
	$('#navi').fadeOut(100);//.css('display','none');
	$('.subNavi').fadeOut(100);//.css('display','none');
	speed=gSpeed;
	width = $(window).width();
	anim=true;
	imgDisplay(-1,0,0,true);
	imgDisplay(-1,1,0,false);
	setH(-1,0,0,0);
	slide(-1,2,0,0,width+30,speed,1,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
	actPage=0;
	actWork=-1;
	actCat=0;
	slide(actWork,actPage,actCat,-width,0,speed,1,true);
	
	//navi full
	slide(-2,0,0,0,width+30,speed,1,true);
	
}

function showPrev()
{
	if(anim)
		return;
		
	hideAllMainLinks();
	if(actWork==-1 && actCat==0)
		return slideInWeb();
		
	if(actWork==0 && actCat!=0)
		return slideOutWebFromFirst();
		
	if(actWork == 0)
		return;
	anim=true;
	
	hideAll(actCat);
	imgDisplay(actWork,actPage,actCat,true);
	
	speed=gSpeed;
	wnd = $(window).width();
	old = getPos(actWork,actPage,actCat);
	oldH = getHeight(actWork,actPage,actCat);
	slide(actWork,actPage,actCat,old,wnd+20,speed,1,true);
	//$('.show_'+actWork+'_'+actPage+'_'+actCat).fadeOut('slow');
		
	actWork--;
	actPage=0;
	if(!exists(actWork,actPage,actCat))
		$('#project').append(imgTag(actWork,actPage,actCat));
	
	newH = getHeight(actWork,actPage,actCat);
	if(newH>oldH)
		setBox(newH);
	
	if(wnd>old)
		st=-getWidth(actWork,actPage,actCat);
	else
		st=old-getWidth(actWork,actPage,actCat);
	
	imgDisplay(actWork,actPage,actCat,true);
	setPos(actWork,actPage,actCat,st);
	setH(actWork,actPage,actCat,0);
	slide(actWork,actPage,actCat,st,getPos(actWork,actPage,actCat),speed,1,true);
	
	//preload poprzedniego
	if(actWork != 0 && !exists(actWork-1,0,actCat))
	{
		$('#project').prepend(imgTag(actWork-1,0,actCat));
		imgDisplay(actWork-1,0,actCat,false);
	}
	//i poprzedniej strony up
	if(actPage != works[actCat][actWork][1]-1 && !exists(actWork,actPage+1,actCat))
	{
		$('#project').append(imgTag(actWork,actPage+1,actCat));
		imgDisplay(actWork,actPage+1,actCat,false);
	}
}

var sCount=0;
function slide(id,page,cat,act,end,step,direction,first)
{
	if(first==true)
		sCount++;
	
	tmp=act+step;
	if((step<0 && tmp<end) || (step>0 && tmp>end))
	{
		if(direction==1)
			setPos(id,page,cat,end);
		else
			setH(id,page,cat,end);
		sCount--;
		if(sCount==0)
		{
			scrollEnd();
		}
	}
	else
	{
		if(direction==1)
			setPos(id,page,cat,tmp);
		else
			setH(id,page,cat,tmp);
			
		setTimeout('slide('+id+','+page+','+cat+','+tmp+','+end+','+step+','+direction+',false)',2);
	}
}
function hideAll(cat)
{
	for(id=0;id<works[cat].length;id++)
		for(page=0;page<=works[cat][id][1];page++)
			imgDisplay(id,page,cat,false);
}

function del(id,page,cat)
{
	$('.show_'+id+'_'+page+'_'+cat).remove();
}

function scrollEnd()
{
	if(actCat==0)
	{
		anim=false;
		setHeight(-1,0,0,$(window).height());
		return setBox($(window).height()-100);
	}
	
	if(actWork-2>0)
		for(a=0;a<works[actCat][actWork-2][1];a++)
			del(actWork-2,a,actCat);
	if(actWork-1>0)
		for(a=2;a<works[actCat][actWork-1][1];a++)
			del(actWork-1,a,actCat);
			
	if(actWork+2 < works[actCat].length)
		for(a=0;a<works[actCat][actWork+2][1];a++)
			del(actWork+2,a,actCat);
	if(actWork+1 < works[actCat].length)
		for(a=2;a<works[actCat][actWork+1][1];a++)
			del(actWork+1,a,actCat);
		
	
	setBox(getHeight(actWork,actPage,actCat));	

	anim=false;
	
}