/* PAGE.js */



	var _p = {
	
		o : {
			useAjax : history.pushState ? true : false,
			useHTML5changeURL : true,
			setBlank : true,
			imgPreload : true,
			scrollTo : true,
			pageSlide : false,
			pageCut : true,
			ajaxContainer : $('#content_container .inner'),
			menuContainer : $('#sitemenu')
		},

		g : {
			isAnim : false,
			curURL : null,
			curNum : null,			
			curDomain : document.location.href.split('http://')[1].split('/')[0],
			selPics : '[href$=".jpg"],[href$=".jpeg"],[href$=".gif"],[href$=".png"],[href$=".bmp"],[href$=".svg"]'
		},

		// init függvény: az oldal betöltődésekor lefut
		init : function(){

			// HTML5 url change
			if( history.pushState && _p.o.useHTML5changeURL == true && _p.o.useAjax == true ){
				_p.g.curURL = _p.getCurURL();
				history.replaceState({page: _p.g.curURL }, '', _p.g.curURL );					
				window.onpopstate = function(event){
					if(event.state){
						_p.g.isAnim = false;
						_p.ajaxload(event.state.page);
					}
				};
/*				
				window.onhashchange = function(event){
				};
*/
			}

			_p.g.curURL = _p.getCurURL();
			_p.g.curNum = _p.getCurNum();

			// az oldalon található összes kép és háttérkép előretöltése, illetve a live fv lefuttatása az egész oldalon
			if( _p.o.imgPreload == true ){
				$('html').imgPreload({
					callback : function(){
						$('#imgpreloadoverlay').fadeOut( o.fadeTime );
						_p.live( $('html') );						
					}
				});
			}else{
				$('#imgpreloadoverlay').css({
					'display' : 'none'
				});			
				_p.live( $('html') );
			}

			// linkek átalakítása AJAX hívásokká
			if( _p.o.useAjax == true ){
				$('a:not([class*="noajax"],[id="fancybox-close"],[href*="http:"],[href*="#"],[href*="mailto:"],'+_p.g.selPics+')').live( 'click', function(event){
					event.preventDefault();
					var _url = $(this).attr('href');
					if( _p.g.isAnim == false && _p.g.curURL != _url && history.pushState && _p.o.useHTML5changeURL == true ){
						history.pushState({page: _url }, '', _url );
					}
					_p.ajaxload(_url);
				});	
			}
		},
		
		getCurURL : function(){
			
			t = document.location.href.split( _p.g.curDomain )[1];
			if( t.length > 1 && t.substr(-1,1)!='/' ){
				t += '/';
			}
			return t;
		},
		
		getCurNum : function(){

			// Ha "#sitemenu > li > a" a struktúra, akkor kell a parent() is!
			t = _p.o.menuContainer.find('a:[href="'+ _p.g.curURL +'"]').parent().index();
			return t;
		},
		
		ajaxload : function(_url){

			if( _p.g.curURL != _url && _p.g.isAnim == false ){

				// animáció kezdete (nem lehet menüpontra kattintani)
				_p.g.isAnim = true;

				_p.g.curURL = _url;
				_p.g.curNum = _p.getCurNum();

				// callback fv. - itt már megtörtént a betöltés
				$.get( _url, function(data){

					// előző tartalom eltüntetése (az animáció itt szabadon variálható, live fv-ben van a visszaanimáció!)
					_p.o.ajaxContainer.fadeOut(350, function(){									

						// html kód beillesztése az ajaxcontainerbe
						_p.o.ajaxContainer.html(data);
				
						// ha van képek előretöltése
						if( _p.o.imgPreload == true ){
							_p.o.ajaxContainer.imgPreload({
								'callback' : function(){
									_p.live( _p.o.ajaxContainer );					
								}
							});
						}else{
							_p.live( _p.o.ajaxContainer );
						}
					});
				});
			}			
		},
		
		// live függvény: adott objektumon hajtja végre (ajaxos hívásnál alapállapotban a _p.o.ajaxContainer-en, oldalbetöltéskor a html-en, de egyedi objektum is megadható)
		live : function( obj ){
			
			// Fancybox

/*			
			obj.find('.someclass a').fancybox({
				'transitionIn'	: 'elastic',
				'transitionOut'	: 'elastic',
				'easingIn'      : 'easeOutBack',
				'easingOut'     : 'easeInBack',
				'speedIn'		:	300,
				'speedOut'		:	300,
				'titlePosition' : 'over',
				'overlayColor'	: '#000',
				'titleFormat'   : function(title, currentArray, currentIndex, currentOpts){
					return '<span id="fancybox-title-over">Galéria Címe (' +  (currentIndex + 1) + ' / ' + currentArray.length + ')</span>';
				}
			});
*/
			// .active osztály megadása az aktív menüpont li tagjének
			_p.o.menuContainer.find('li').removeClass('active');
			_p.o.menuContainer.find('li:eq('+_p.g.curNum+')').addClass('active');

			// input mezők, radio buttonok és select boxok átalakítása
			// $('input:checkbox').repCheckbox();
			// $('input:radio').repRadioButton();
			// $('select').repSelectbox();

			// forceWidth
			obj.forceWidth();

			// fbAppend
			obj.find('.fblike').each( function(){
				$(this).fbAppend();
			});

			// gmapAppend
			obj.find('.gmap').each( function(){
				$(this).gMapAppend();
			});
			
			// email SPAM szűrő (.mapson osztályokat alakít át)
			obj.noSpam();

			// input és textarea funkciók
			obj.find('input, textarea').inputClick();
			obj.find('input').inputClass();
			
			// külső oldalakra való hivatkozások átalakítása
			if( _p.o.setBlank == true ){
				obj.setBlank();
			}

			// pageSlide hivatkozások átalakítása
			if( _p.o.pageSlide == true ){
				obj.find('.pageslide').pageSlide();
			}	

			// pageCut hivatkozások átalakítása
			if( _p.o.pageCut == true ){
				obj.find('.pagecut').pageCut();
			}	
			
			// scrollTo inicializálása
			if( _p.o.scrollTo == true ){
				obj.scrollTo();
			}
			
			// scrollBar inicializálás (ha van a forráskódban .sb osztályú elem, megnézi az id-jüket és inicializálja őket)
			$('.sb').each(function(){
				_sb.setDim( '#' + $(this).attr( 'id' ) );	
			});

			//submenu navigáció (scrollBar pluginhez)
/*
			$('#submenu a').click(function(event){
				event.preventDefault();
				_sb.scrollTo( '#sb1', $(this));
			});
*/
			
			// ajaxcontainer visszaanimálása
			if( obj == _p.o.ajaxContainer ){
				_p.o.ajaxContainer.fadeIn(350, function(){

					// imsét lehet menüpontra kattintani
					_p.g.isAnim = false;					
				});
			}
		}
	};
	
	
	
	/* TILES */

		var _tiles = {

			o : {
				images : 4,
				curImage : 0,
				firstImage : 'random',
				tiles : 10,
				tilesArr : [],
				animArr : { 
					type : ['easeOutQuad','easeOutBounce','easeOutElastic'],
					time : [200,800,800],
					bgTimeOut : 1,
					bgTimeIn : 1,
					timeOut : 200,
					tileDelay : 40,
					periodicTime : 8000
				},

				posXArr : [],
				posYArr : []
			},

			g : {
				timer : null,
				isAnim : false
			},

			init : function(){

				if( _tiles.o.firstImage == 'random'){
					_tiles.o.firstImage = Math.ceil(Math.random()*_tiles.o.images);				
				}

				var _oc = $( '#tiles_container' ).offset();
				for( x=0; x<_tiles.o.tiles;x++){
					_tiles.o.tilesArr[x] = x;
					$( '#tiles_container' ).append( '<div class="tile_container"><div id="tile_' + x + '"></div></div>' );
					var _ot = $( '#tile_' + x ).offset();
					$( '#tile_' + x ).css( 'background-position', (_oc.left-_ot.left) + 'px ' + (_oc.top-_ot.top) + 'px' );
				};				

				_w = $('#tiles_container .tile_container:eq(0) div:eq(0)').width();
				_h = $('#tiles_container .tile_container:eq(0) div:eq(0)').height();

				_tiles.o.posXArr = [-_w,0,_w];
				_tiles.o.posYArr = [-_h,0,_h];

				_tiles.change( _tiles.o.firstImage );
			},

			change : function( imageNum, stop ){

				if( _tiles.g.isAnim == false ){

	//				_tiles.g.isAnim = true;

					if( !stop ){						
						if( imageNum == _tiles.o.curImage ){
							if( _tiles.o.curImage < _tiles.o.images ){
								imageNum += 1;
							}else{
								imageNum = 1;
							}
						}else if( imageNum > _tiles.o.images ){
							imageNum = 1;
						}
						_tiles.o.curImage = imageNum;
					}	

					_tiles.o.tilesArr.sort( _tiles.rnd );
					var _animRnd = Math.floor(Math.random() * _tiles.o.animArr.type.length );
					var _animType = _tiles.o.animArr.type[ _animRnd ];
					var _animTime = _tiles.o.animArr.time[ _animRnd ];
					var _posX = _tiles.o.posXArr[ Math.floor(Math.random() * _tiles.o.posXArr.length) ];
					var _posY = _tiles.o.posYArr[ Math.floor(Math.random() * _tiles.o.posYArr.length) ];
					var _delay = _tiles.o.animArr.bgTimeOut + _tiles.o.animArr.timeOut + ( _tiles.o.tiles  - 1 ) * _tiles.o.animArr.tileDelay  + _animTime + _tiles.o.animArr.bgTimeIn;

					if( !stop ){
						_tiles.g.timer = setTimeout( '_tiles.change( _tiles.o.curImage )', _delay + _tiles.o.animArr.periodicTime );
					}else{
						_tiles.stop();
						$(  '#screen_' + ( imageNum - 100 ) ).delay( _delay / 2 ).fadeIn( 350 );
					}

					$('#tiles_image').stop().fadeOut( _tiles.o.animArr.bgTimeOut, function(){
						for(x=0;x<_tiles.o.tiles;x++){
							$( '#tile_' + _tiles.o.tilesArr[x] ).delay( x *  _tiles.o.animArr.tileDelay ).animate({
								'margin-left' : _posX,
								'margin-top' : _posY
							}, _tiles.o.animArr.timeOut, 'easeInQuad', function(){
							$(this).css({
									'margin-left' : -_posX,
									'margin-top' : -_posY,
									'background-image' : 'url(/gallery/ss_' + imageNum + '.jpg)'
								}).animate({
									'margin-left' : 0,
									'margin-top' : 0
								}, _animTime, _animType );
							});
						}
						$('#tiles_image').css({
							'background-image' : 'url(/gallery/ss_' + imageNum + '.jpg)',
							'opacity' : 1						
						}).delay( _delay - _tiles.o.animArr.bgTimeIn - _tiles.o.animArr.bgTimeOut ).fadeIn( _tiles.o.animArr.bgTimeIn );
					});
				}
			},

			start : function(){

				clearTimeout(_tiles.g.timer);
				$(  '.screen' ).each( function(){
					if( $( this ).css( 'display' ) == 'block' ){
						$( this ).fadeOut( 350, function(){
							_tiles.change( _tiles.o.curImage );		
						});
					}
				});				
			},

			stop : function(){
				clearTimeout(_tiles.g.timer);
			},

			rnd : function(){

				return (Math.round(Math.random())-0.5);
			}
		};



/* TILES */

	var _tiles = {
	
		o : {
			images : 4,
			curImage : 0,
			firstImage : 'random',
			tiles : 10,
			tilesArr : [],
			animArr : { 
				type : ['easeOutQuad','easeOutBounce','easeOutElastic'],
				time : [200,800,800],
				bgTimeOut : 1,
				bgTimeIn : 1,
				timeOut : 200,
				tileDelay : 40,
				periodicTime : 8000
			},
			
			filename : 'img_',
			posXArr : [],
			posYArr : []
		},
		
		g : {
			timer : null,
			isAnim : false
		},
	
		init : function(){

			if( _tiles.o.firstImage == 'random'){
				_tiles.o.firstImage = Math.ceil(Math.random()*_tiles.o.images);				
			}
			
			var _oc = $( '#tiles_container' ).offset();
			for( x=0; x<_tiles.o.tiles;x++){
				_tiles.o.tilesArr[x] = x;
				$( '#tiles_container' ).append( '<div class="tile_container"><div id="tile_' + x + '"></div></div>' );
				var _ot = $( '#tile_' + x ).offset();
				$( '#tile_' + x ).css( 'background-position', (_oc.left-_ot.left) + 'px ' + (_oc.top-_ot.top) + 'px' );
			};				
			
			_w = $('#tiles_container .tile_container:eq(0) div:eq(0)').width();
			_h = $('#tiles_container .tile_container:eq(0) div:eq(0)').height();
			
			_tiles.o.posXArr = [-_w,0,_w];
			_tiles.o.posYArr = [-_h,0,_h];

			_tiles.change( _tiles.o.firstImage );
		},
		
		change : function( imageNum, stop ){

			if( _tiles.g.isAnim == false ){

//				_tiles.g.isAnim = true;
				
				if( !stop ){						
					if( imageNum == _tiles.o.curImage ){
						if( _tiles.o.curImage < _tiles.o.images ){
							imageNum += 1;
						}else{
							imageNum = 1;
						}
					}else if( imageNum > _tiles.o.images ){
						imageNum = 1;
					}
					_tiles.o.curImage = imageNum;
				}	

				_tiles.o.tilesArr.sort( _tiles.rnd );
				var _animRnd = Math.floor(Math.random() * _tiles.o.animArr.type.length );
				var _animType = _tiles.o.animArr.type[ _animRnd ];
				var _animTime = _tiles.o.animArr.time[ _animRnd ];
				var _posX = _tiles.o.posXArr[ Math.floor(Math.random() * _tiles.o.posXArr.length) ];
				var _posY = _tiles.o.posYArr[ Math.floor(Math.random() * _tiles.o.posYArr.length) ];
				var _delay = _tiles.o.animArr.bgTimeOut + _tiles.o.animArr.timeOut + ( _tiles.o.tiles  - 1 ) * _tiles.o.animArr.tileDelay  + _animTime + _tiles.o.animArr.bgTimeIn;

				if( !stop ){
					_tiles.g.timer = setTimeout( '_tiles.change( _tiles.o.curImage )', _delay + _tiles.o.animArr.periodicTime );
				}else{
					_tiles.stop();
					$(  '#screen_' + ( imageNum - 100 ) ).delay( _delay / 2 ).fadeIn( 350 );
				}

				$('#tiles_image').stop().fadeOut( _tiles.o.animArr.bgTimeOut, function(){
					for(x=0;x<_tiles.o.tiles;x++){
						$( '#tile_' + _tiles.o.tilesArr[x] ).delay( x *  _tiles.o.animArr.tileDelay ).animate({
							'margin-left' : _posX,
							'margin-top' : _posY
						}, _tiles.o.animArr.timeOut, 'easeInQuad', function(){
						$(this).css({
								'margin-left' : -_posX,
								'margin-top' : -_posY,
								'background-image' : 'url(/gallery/ss_' + imageNum + '.jpg)'
							}).animate({
								'margin-left' : 0,
								'margin-top' : 0
							}, _animTime, _animType );
						});
					}
					$('#tiles_image').css({
						'background-image' : 'url(/gallery/ss_' + imageNum + '.jpg)',
						'opacity' : 1						
					}).delay( _delay - _tiles.o.animArr.bgTimeIn - _tiles.o.animArr.bgTimeOut ).fadeIn( _tiles.o.animArr.bgTimeIn );
				});
			}
		},
		
		start : function(){

			clearTimeout(_tiles.g.timer);
			$(  '.screen' ).each( function(){
				if( $( this ).css( 'display' ) == 'block' ){
					$( this ).fadeOut( 350, function(){
						_tiles.change( _tiles.o.curImage );		
					});
				}
			});				
		},
		
		stop : function(){
			clearTimeout(_tiles.g.timer);
		},
		
		rnd : function(){
		
			return (Math.round(Math.random())-0.5);
		}
	};



/* DOCUMENT READY */



	$(document).ready(function(){
		
// scrollbar definiálása
/*
		_sb.init({
			sbid : '#sb1',
			where : '#',
			what : '#',
			type : 'vertical'
		});
*/

		_p.init();		
	});
