/* PAGE.js */

	var _p = {
	
		o : {
			useAjax : true,
			useHTML5changeURL : true,
			setBlank : true,
			imgPreload : false,
			scrollTo : false,
			pageSlide : false,
			ajaxContainer : $('#c_inner'),
			c : [
				[990,520,0,0],
				[580,280,40,200],
				[320,400,50,50],
				[950,480,20,20],
				[510,480,460,20],
				[510,480,240,20],
				[380,480,20,20]
			]
		},
		
		g : {
			isAnim : true,
			curURL : null,
			curNum : null,
			curDomain : document.location.href.split('http://')[1].split('/')[0]		
		},

		// 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 ){
				_url = document.location.href.split( _p.g.curDomain )[1];
				if( _url.length > 1 && _url.substr(-1)=='/' ){
					_url = _url.substr(0, _url.length-1);
				}
				if( _url != '/' ){
					_p.g.isAnim = false;
					_p.g.curURL = '/';
					_p.ajaxload( _url, 'html' );
				}else{
					_p.g.curURL = _url;
					if( _p.g.curURL.length > 1 && _p.g.curURL.substr(-1)=='/' ){
						_p.g.curURL = _p.g.curURL.substr(0, _p.g.curURL.length-1);
					}	
					_p.g.curNum = $('header a:[href="'+ _p.g.curURL +'"]').parent().index();
					_p.live( $('html') );					
				}
				history.replaceState({page: _url }, '', _url );				
				window.onpopstate = function(event){
					if(event.state){
						_p.g.isAnim = false;
						_p.ajaxload(event.state.page);						
					}
				};
/*				
				window.onhashchange = function(event){
				};
*/
			}			

			_p.g.curURL = document.location.href.split( _p.g.curDomain )[1];
			if( _p.g.curURL.length > 1 && _p.g.curURL.substr(-1)=='/' ){
				_p.g.curURL = _p.g.curURL.substr(0, _p.g.curURL.length-1);
			}	
			_p.g.curNum = $('header a:[href="'+ _p.g.curURL +'"]').parent().index();

			
			// az oldalon található összes kép és háttérkép előretöltése
			if( _p.o.imgPreload == true ){
				$('html').imgPreload();
			}else{
				$('#imgpreloadoverlay').css({
					'display' : 'none'
				});			
			}

			if( !history.pushState || _p.o.useHTML5changeURL != true || _p.o.useAjax != true ){
				// live fv
				_p.live( $('html') );
			}
			
			// linkek átalakítása AJAX hívásokká
			if( _p.o.useAjax == true ){
				$('a:not([class*="noajax"],[href*="http:"],[href*="#"],[href*="mailto:"])').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);
				});	
			}
		},

		ajaxload : function(_url, liveobj){
			
			var liveobj = liveobj ? $(liveobj) : _p.o.ajaxContainer;

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

				// amennyiben van animáció
				_p.g.isAnim = true;
				_tiles.stop();

				_p.g.curURL = _url;
				_p.g.curNum = $('header a:[href="'+ _url +'"]').parent().index();

				$('#bg').stop().animate({
					'margin-top' : ( -_p.g.curNum * 520 ) + 'px'
				}, 1000, 'easeInOutQuart');
	
				// 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( liveobj );										
								}
							});
						}else{
							_p.live( liveobj );
						}
					});
				});
			}			
		},
		
		// 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 ){			

			if($('#reservation_form').length){
				$('#reservation_form').submit(function(event) {
					event.preventDefault();
					$.post( $(this).attr('action'), $(this).serialize(), function(data) {
						if( data.substr(0,4) != 'ERR:' ){
							alert('Foglalását sikeresen fogadta rendszerünk.');
							_p.g.curURL = '/';
							$('header ul a:eq(4)').click();
						}else{
							alert(data.substr(4));
						}						
					});
				});				
			}
			
			if($('#gb_form').length){
				$('#gb_form').submit(function(event) {
					event.preventDefault();
					$.post( $(this).attr('action'), $(this).serialize(), function(data) {
						if(data=='SUCCESS'){
							_p.g.curURL = '/';
							$('header ul a:eq(5)').click();
						}else{
							alert(data);
						}
					});
				});				
			}

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

			// gmapAppend
			obj.find('.gmap').each( function(){
				$(this).gMapAppend();
			});

			// input és textarea funkciók
			obj.find('input, textarea').inputClick();
			
			// email SPAM szűrő (.mapson osztályokat alakít át)
			obj.noSpam();
			
			// 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('[class*="pageslide"]').pageSlide();
			}	
			
			// scrollTo inicializálása
			if( _p.o.scrollTo == true ){
				obj.scrollTo();
			}

			$('#c_outer').animate({
				'width' : _p.o.c[_p.g.curNum][0],
				'height' : _p.o.c[_p.g.curNum][1],
				'left' : _p.o.c[_p.g.curNum][2],
				'top' : _p.o.c[_p.g.curNum][3]
			}, 500, 'easeInOutQuart', function(){
				$('#c_sc').css({
					'height' : _p.o.c[_p.g.curNum][1] - 120
				});
				_p.o.ajaxContainer.fadeIn( 500, function(){
					// scrollbar definiálása
					if( $('#c_sc').length ){
						_sb.init({
							sbid : '#sb1',
							where : '#c_inner',
							what : '#c_s',
							type : 'vertical'
						});	
					}
					
					// tiles init
					if( _p.g.curURL == '/photos'){
						if( !$('.tile_container').length ){
							_tiles.init();
						}
						$('#tiles_navigation a').click(function(event){
							event.preventDefault();
							_tiles.stop();
							_tiles.change( parseInt( $(this).attr('href').split('#')[1] ) );
						});
					}	
					// animáció már nem fut
					_p.g.isAnim = false;				
				});
			});
		}
	};
	
	var _tiles = {
	
		o : {
			images : 16,
			curImage : 0,
			firstImage : 1,
			tiles : 21,
			tilesArr : [],
			animArr : { 
				type : ['easeOutQuad','easeOutBounce','easeOutElastic'],
				time : [200,800,800],
				bgTimeOut : 100,
				bgTimeIn : 500,
				timeOut : 200,
				tileDelay : 40,
				periodicTime : 5000
			},
			posArr : [-100,0,100]
		},
		
		g : {
			timer : null,
			isAnim : false
		},
	
		init : function(){

			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' );
			};				
			_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.posArr[ Math.floor(Math.random() * _tiles.o.posArr.length ) ];
				var _posY = _tiles.o.posArr[ Math.floor(Math.random() * _tiles.o.posArr.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/mocco_' + imageNum + '.jpg)'
							}).animate({
								'margin-left' : 0,
								'margin-top' : 0
							}, _animTime, _animType );
						});
					}
					$('#tiles_image').css({
						'background-image' : 'url(gallery/mocco_' + 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(){
		

		//$('input:checkbox').repCheckbox();
		//$('input:radio').repRadioButton();
		//$('select').repSelectbox();

		_p.init();
	});
