

Core = {};

$().ready(function() {
	Core.Common.initialize();
});


Core.Loading = {
	start: function(element){
		$(element).prepend('<div class="loader_container"><div class="loader"></div></div>');
		
		var width = $(element).width();
		var height = $(element).height();
		
		var loader_width = $(element + ' .loader_container').width();
		var loader_height = $(element + ' .loader_container').height();
		
		var top_position = height / 2 - loader_height / 2;
		var left_position = width / 2 - loader_width / 2;

		$(element + ' .loader_container')	.fadeIn();
	},
	stop: function(element){
		$(element+' .loader_container').remove();
	}
}

Core.Common = {
	firstLoad: true,
	initialize: function(){
		Core.Tools.initialize();
	},
	setBackground: function(strUrl)
	{
		if(Core.Common.firstLoad == true)
		{
			$("#background").css({'background' : 'url('+strUrl+')  no-repeat fixed 50% 50%'}).fadeIn(500);
			Core.Common.firstLoad = false;
		}
		else
		{
			$("#background").fadeOut(500, function(){
				$("#background").css({'background' : 'url('+strUrl+')  no-repeat fixed 50% 50%'}).fadeIn(500);
			});
		}	
	}
}	

Core.Home = {
	initialize: function(pageCount){

		$('.right .bullet span').click(function(){
			$('.right .bullet span').removeClass('on');
			$(this).addClass('on');

		});
	
		$("#news").jCarouselLite({
			visible: 1,
		    btnNext: ".prev",
		    btnPrev: ".next",
		    vertical: true
		});

		$("#latest").jCarouselLite({
			speed: 300,
			visible: 2,
		    btnNext: ".prevLatest",
		    btnPrev: ".nextLatest",
			btnGo: ["#bullet1", "#bullet2", "#bullet3", "#bullet4", "#bullet4", "#bullet6", "#bullet7"],
			beforeStart: function(a) {
				$('.right .bullet').fadeOut();
				$.each(a, function(index, value) { 
					if(index==0)
					$(value).css('opacity','1');
					else
					$("#latest li").css('opacity','0.25');
				});
			
			},
			afterEnd: function(a) {
				$('.right .bullet span').removeClass('on');
				$.each(a, function(index, value) { 
					
					if(index==0){
						$('#bullet'+$(value).attr('class')).addClass('on');
						$(value).animate({
						    opacity: 1
						});
					}else{
						$(value).animate({
						    opacity: 0.25
						});						
					}
					
				
				});
				$('.right .bullet').fadeIn();
				
			}
			
		});
	}
}

Core.Content = {
	pageCount: null,
	carousel: null,
	idcarousel: '',
	loadContent: function(idItem)
	{	
		

		var currentElement = idItem ;

		previous = parseInt(currentElement) - parseInt(1);
		next = parseInt(currentElement) + parseInt(1);
		
		/*If last page*/
		if (currentElement == Core.Content.pageCount) {
			$('#bodyContainer'+Core.Content.idcarousel+' .prevLatest').fadeOut();
			next = 1;
			
		}
		
		if (currentElement == 1) {
			$('#bodyContainer'+Core.Content.idcarousel+' .nextLatest').fadeOut();
			previous = Core.Content.pageCount;
		}
	
		$("#bodyContainer"+Core.Content.idcarousel+" #menu ."+currentElement).addClass('active');
		$("#bodyContainer"+Core.Content.idcarousel+" #menu ."+currentElement).siblings().removeClass('active');
			
			
		if (currentElement == Core.Content.pageCount)
		{
			
		}else
		{
			$('#bodyContainer'+Core.Content.idcarousel+' .prevLatest').fadeIn();
			rightElement = $("#bodyContainer"+Core.Content.idcarousel+" #block-left"+$('#content'+next).attr('rel')).html();
			$('#bodyContainer'+Core.Content.idcarousel+' #regular .right').html(rightElement).fadeIn();
		}	
		
		if (currentElement == 1) {
			
		}
		else
		{
			$('#bodyContainer'+Core.Content.idcarousel+' .nextLatest').fadeIn();
			leftElement =  $("#bodyContainer"+Core.Content.idcarousel+" #block-left"+$('#content'+previous).attr('rel')).html();
			$('#bodyContainer'+Core.Content.idcarousel+' #regular .left').html(leftElement).fadeIn();
		}
		
	},
	mycarousel_initCallback: function(carousel){

		Core.Content.carousel = carousel;
	    $('#bodyContainer'+Core.Content.idcarousel+' .prevLatest').bind('click', function() {
	        carousel.next();
	        return false;
	    });

	    $('#bodyContainer'+Core.Content.idcarousel+' .nextLatest').bind('click', function() {
	        carousel.prev();
	        return false;
	    });
	},
	callbackBefore: function(carousel){
		$('#bodyContainer'+Core.Content.idcarousel+' #regular .left').fadeOut();
		$('#bodyContainer'+Core.Content.idcarousel+' #regular .right').fadeOut();
	},
	callbackAfter: function(carousel, item, idx, state){
		Core.Content.loadContent(idx);
	},
	initialize: function(pageCount, idcarousel){

		Core.Content.pageCount = pageCount;
		Core.Content.idcarousel = idcarousel;
		
		$("#regular .right, #regular .left").css('opacity', 0.5);
		
		$("#bodyContainer"+Core.Content.idcarousel+" .jscrollpane").each(function(){
			var self = $(this);
			self.jScrollPane({
				scrollbarWidth: 16
			});
			var api = self.data('jsp');
			setTimeout(function(){
				api.reinitialise();
			}, 2000);
		});
		
		$("#bodyContainer"+Core.Content.idcarousel+" .linkActive a").click(function(){
			var idItem = $(this).attr('rel');
			Core.Content.carousel.scroll(jQuery.jcarousel.intval(idItem));
			return false;
		});
	
		$("#carouselList"+idcarousel).jcarousel({
			/*  Make vivisible value dynamic depending on number of elements */
			visible: 1,
			scroll:1,
			initCallback: Core.Content.mycarousel_initCallback,
		    buttonNextHTML: null,
		    buttonPrevHTML: null,
			itemFirstInCallback: {
			 	onBeforeAnimation: Core.Content.callbackBefore,
			 	onAfterAnimation: Core.Content.callbackAfter
			}
			
		});

		Core.Content.carousel.scroll(jQuery.jcarousel.intval(1));
		
	}
}

Core.Tools = {
	idcarousel: 1,
	lockMenu: false,
	initialize: function () {

		$(window).resize(function() {
			Core.Tools.resize_body(false);			
		});

		Core.Tools.resize_body(true);
		
		$(".menuLink").click(function(){
			
			if(Core.Tools.lockMenu == false)
			{
				Core.Tools.lockMenu = true;
			
				Core.Loading.start('body');
				
				var currentMyBody = $('.myBody');
				var leftMargin = currentMyBody.css('margin-left');
				var topMargin = currentMyBody.css('margin-top');			
				var leftNew = parseInt(leftMargin)+4000;
            	
				$.ajax({
					
					url: $(this).attr('href')+'?layout=ajaxlayout&idcarousel='+Core.Tools.idcarousel,
					success: function(html){
						
						currentMyBody.animate({marginLeft: leftNew+'px'}, 600, function(){
							currentMyBody.remove();
            	
							$("#ajaxcontainer").prepend(html);
							$('.myBody').css( {'margin-left': leftNew+'px', 'margin-top': topMargin});
							Core.Tools.resize_body(true);
							Core.Loading.stop('body');
							Core.Tools.idcarousel++;
							
							Core.Tools.lockMenu = false;
						});		
					}
					
				});
			}
			return false;
		});
		
	},
	resize_body: function(animation){
			
			var heightFooter = 20;
			var heightHeader = 180;
			var heightHeaderMin = 100;
			
			var viewportWidth = $(window).width();  
		    var viewportHeight = $(window).height();
			
			var availableHeight = viewportHeight - (heightFooter+heightHeader);
	
						
			var mainContainerHeight = parseInt($(".myBody").css('height')) ? parseInt($(".myBody").css('height')) : 400;
			var mainContainerWidth = parseInt($(".myBody").css('width')) ? parseInt($(".myBody").css('width')) : 990;

		 	if (availableHeight < mainContainerHeight) {
			
				availableHeight = viewportHeight - (heightFooter+heightHeaderMin);
			
				$("#headerBanner").fadeOut(500, function(){
					$("#headerBannerMin").fadeIn();
				});
				
				
				var middleHeight =  parseInt(availableHeight-mainContainerHeight);
				var paddingTop = heightHeaderMin+parseInt(middleHeight/2);
				var middleWidth =  parseInt(viewportWidth-mainContainerWidth);
				var paddingLeft = parseInt(middleWidth/2);
		
				if(animation){						
					$('.myBody').animate( {'margin-top': paddingTop+'px', 'margin-left': paddingLeft+'px'}, 600, function(){});
				}else{
					$('.myBody').css( {'margin-left': paddingLeft+'px', 'margin-top': paddingTop+'px'});							
				}
				
			}else{
				$("#headerBannerMin").fadeOut(500, function(){
					$("#headerBanner").fadeIn();
				});
			
				var middleHeight =  parseInt(availableHeight-mainContainerHeight);
				var paddingTop = heightHeader+parseInt(middleHeight/2);
				
				var middleWidth =  parseInt(viewportWidth-mainContainerWidth);
				var paddingLeft = parseInt(middleWidth/2);

				if(animation){						
					$('.myBody').animate( {'margin-top': paddingTop+'px', 'margin-left': paddingLeft+'px'}, 600,function(){});
				}else{
					$('.myBody').css( {'margin-left': paddingLeft+'px', 'margin-top': paddingTop+'px'});							
				}
			}

		
	}
}


