/* PAGE.js */



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

		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();

			// img_container pozícionálása
			$('#img_container').css({
				'left' : _p.o.bgPadding,
				'top' : _p.o.bgPadding
			})
			
			$('#dim').css({
				'top' : _p.o.bgPadding
			});			

			$(window).bind( 'resize', function(){
				_p.resize();
			});

			// 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);
				});	
			}else{
				$('#sitemenu li a[href="'+_p.g.curURL+'"]').click(function(e){
					e.preventDefault();
				});
			}
			
			// oldalspecifikus kód

		},
		
		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('#sub .fl .fl a').fancybox({
				'transitionIn'	: 'fade',
				'transitionOut'	: 'fade',
				'easingIn'      : 'easeInOutQuad',
				'easingOut'     : 'easeInQuad',
				'speedIn'		: 300,
				'speedOut'		: 150,
				'changeSpeed'	: 150,
				'titlePosition' : 'outside',
				'overlayColor'	: '#000',
				'titleFormat'   : function(title, currentArray, currentIndex, currentOpts){
					return '<span id="fancybox-title-over">(' +  (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();

			obj.forceWidth();
			
			// socialAppend
			obj.find('.social').each( function(){
				$(this).social();
			});

			// 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' ) );	
			});
			
			// 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;					
				});
			}

			// oldalspecifikus kód

			// bg image eredeti méretének lekérdezése, s elmentése

			$('<img>').load(function(){

				_p.g.iw = $('#img_container img').width();
				_p.g.ih = $('#img_container img').height();
				_p.g.ia = _p.g.iw / _p.g.ih;
	            _p.resize();
				
			}).attr('src',$('#img_container img').attr('src'));			


            if( !$('.tile_container').length ){
                tiles.init({
					useDOM : true
				});
            }
		},

		resize : function(){

			ww = $(window).width()-_p.o.bgPadding*2;
			wh = $(window).height()-_p.o.bgPadding*2;

			$('#img_container').css({
				'width' : ww,
				'height' : wh
			});

			iw = ww;
			ih = Math.ceil(iw / _p.g.ia);
			if( ih < wh ){
				ih = wh;
				iw = Math.ceil(ih * _p.g.ia);
			}

			$('#dim').css({
				'height' : wh
			});			

			$('#img_container img').css({
				'width' : iw,
				'height' : ih,
				'margin-left' : ( ww-iw ) / 2,
				'margin-top' : ( wh-ih ) / 2
			});			
		}		
	};



/* DOCUMENT READY */



	$(document).ready(function(){
		
		_p.init();
		
		$('#social a').hover(function() {
			$(this).find('div').fadeIn('slow');
		},
		function() {
			$(this).find('div').fadeOut('fast');
		}
		);
		
		
		$('.sub > .right > .fl > a').fancybox({
				'transitionIn'	: 'fade',
				'transitionOut'	: 'fade',
				'easingIn'      : 'easeInOutQuad',
				'easingOut'     : 'easeInQuad',
				'speedIn'		: 300,
				'speedOut'		: 150,
				'changeSpeed'	: 150,
				'titlePosition' : 'outside',
				'overlayColor'	: '#000',
				'titleFormat'   : function(title, currentArray, currentIndex, currentOpts){
					return '<span id="fancybox-title-over">(' +  (currentIndex + 1) + ' / ' + currentArray.length + ')</span>';
				}
			});	
			
		$('a.fancy').fancybox({
				'transitionIn'	: 'fade',
				'transitionOut'	: 'fade',
				'easingIn'      : 'easeInOutQuad',
				'easingOut'     : 'easeInQuad',
				'speedIn'		: 300,
				'speedOut'		: 150,
				'changeSpeed'	: 150,
				'titlePosition' : 'outside',
				'overlayColor'	: '#000',
				'titleFormat'   : function(title, currentArray, currentIndex, currentOpts){
					return '<span id="fancybox-title-over">Code-Decode bemutatóterem: 1061 Budapest, Nagymező utca 9.</span>';
				}
			});				
		
		
	});
