//
// Script from IMARCOM to resize background image - http://simons.imarcom.ca//
//


jQuery(function() {
	(function($) {
		var $wrapper = $('#wrapper');
		$wrapper.addClass('imc-loading');
		$wrapper.css('overflow', 'hidden');
		$('#topNavigationInnerContainer').css('float', 'right');
		
		function initLayout($bg, original_width, original_height, $links, $logo) {
			
			$('#contentBlock').css('height', '100%');
			var $footer_wrapper = $('#page_footer_wrapper');
			var $page_top = $('#page_top');
			var $page_left = $('#navMenu');
			var $boxes = $('#leftNavBanners');
			var $main_menu = $('#navMenu');
			var $infolettre = $('#leftNavNewsletter #newsletter_main_div');
			$boxes.appendTo('body');
			$infolettre.appendTo('body').css('position', 'absolute').css('zIndex', 2);
			
			var image_ratio = original_width / original_height;
			var main_menu_height = $main_menu.innerHeight();
			var boxes_height = $boxes.innerHeight();
			
			$links.appendTo($wrapper).each(function(){
				var $this = $(this);
				var _array = $this.attr('coord').split(/ /);
				$this.data('coord', {
					top   : parseInt(_array[0]),
					left  : parseInt(_array[1]),
					width : parseInt(_array[2]),
					height: parseInt(_array[3])
					
				}).css({
					position: 'absolute'
				}).html('');
			});
			
			$logo.hide().appendTo($wrapper).each(function(){
				var $this = $(this);
				$this.css({
					position: 'absolute',
					right: '20px',
					top: '60px'
				});
			});
			
			var min_height = Math.round(1000/image_ratio);
			var min_width = 768;
			
			var page_top_offset = ($page_left.outerWidth() + $page_left.offset().left);
			
			function resizeTopMenu() {
				$page_top.css('width', Math.min($wrapper.innerWidth(), $bg.outerWidth()) - page_top_offset- ($page_top.outerWidth() - $page_top.width()));		
			}	
			function ajustLinks(height) {
				var scale =  height / original_height;
				bg_position = {
					top: parseInt($bg.css('top')),
					left: parseInt($bg.css('left'))
				};
				$links.each(function(){
					
					var $this = $(this);
					var obj = $this.data('coord');
					$this.css({
						top   : (parseInt(obj.top * scale) + bg_position.top) + 'px',
						left  : (parseInt(obj.left * scale) + bg_position.left) + 'px',
						width : parseInt(obj.width * scale) + 'px',
						height: parseInt(obj.height * scale) + 'px'
					});
				});
			}	
			$bg.css({
				height: '100%'
			});
			var alignment = $image_source.attr('rel') || 'centered';
			if ( alignment == 'left' ) {
				$bg.css('left', 0);
			}
			if ( alignment == 'right' ) {
				$bg.css('right', 0);
			}
			
			$(window).bind('resize', function () {
				$wrapper.removeClass('imc-loading');
				
				// Validation de la taille minimale
				var viewport_width = $(window).width();
				if ( $(window).width() <= min_width ) {
					viewport_width = min_width;
					$wrapper.css('width', min_width+'px');
				}
				else {
					$wrapper.css('width', '100%');
				}
				
				var viewport_ratio = viewport_width / $(window).height();
				
				// Validation du ratio minimal
				var min_ratio = 1.46;
				var wrapper_height = $wrapper.height();
				if ( viewport_ratio <min_ratio) {
					// Ratio trop petit
					// On diminue la taille du wrapper
					wrapper_height = ($('#wrapper').width()/min_ratio);
					$wrapper.css('height', wrapper_height+'px');
				}
				else {
					$wrapper.css('height', '100%');
				}
				
				var boxes_top = $(window).height() - boxes_height - 5;
				// Validation du ratio maximal
				if ( image_ratio > $wrapper.width()/$wrapper.height() ) {
					// Image plus large que le viewport
					// On centre l'image
					var new_left = Math.round(($wrapper.width() - $bg.width())/2);
					$bg.css('left', new_left+'px');
					
				} else {
					// Image plus petite que le viewport
					// On agrandie la taille du wrapper
					wrapper_height = $wrapper.width()/image_ratio;
					$wrapper.css('height', wrapper_height+'px');
					
					$bg.css('left', 0);
				}
				
				if ( boxes_top + boxes_height + 5 > wrapper_height ) {
					boxes_top = wrapper_height - boxes_height - 5
				}
				min_top = ( main_menu_height + 76 );
				if ( boxes_top < min_top ) {
					boxes_top = min_top;
				}
				if ( boxes_top + boxes_height > wrapper_height ) {
					$infolettre.css('top', wrapper_height+(boxes_top + boxes_height - wrapper_height)+'px');
				} else {
					$infolettre.css('top', wrapper_height);
				}
				$boxes.css('top', boxes_top+'px')
				
				//resizeTopMenu();
				ajustLinks($bg.height());
			}).trigger('resize');
			
			setTimeout(function() {
				$bg.css('display', 'none').removeClass('opacity0').fadeIn(500);
				$('#page_top').show();
				$boxes.css('position', 'absolute');
				$boxes.fadeIn(500);
				$infolettre.fadeIn(500);
				if ( $.browser.msie && ( $.browser.version == '8.0' || $.browser.version == '7.0' ) ) {
					$logo.show();
				} else {
					$logo.css('opacity', 0).show().animate({
						opacity:1
					}, 500, function() {
						$logo.css('opacity', null);
					});
				}
			})
		}
		// ==================================================================
		//
		// ==================================================================
		var $place_holder = $('#bgimage_place_holder');
		var $image_source = $place_holder.find('a.image_source:first');
		var $links = $image_source.parent().find('a.image_link').clone();
		var $logo = $image_source.parent().find('img.logo').clone();
		var bannerid = $image_source.attr('bannerid');
		var bannercp = $image_source.attr('id');
		
		if ( !$image_source.length ) {
			$wrapper.removeClass('imc-loading');
		} else {
			var img = new Image();
			img.onload = function() {
				var $img = $(img).attr('id', 'background');
				$place_holder.before($img).remove();
				$img.parent().parent().show();
				
				var original_height = this.height;
				var original_width = this.width;
				
				$img.removeAttr('width').removeAttr('height').removeAttr('height').addClass('opacity0');
				
				initLayout($img, original_width, original_height, $links, $logo);
			}
			img.src = $image_source.attr('href');
			img.setAttribute('alt', $image_source.html());	
		}	
		
		var language = $('#newsletter_subscribe').attr('action');
		
		jQuery.ajax({
			type: 'POST',
			url: "/imc/webservices/banner_view.php?__=" + Math.random(),
			data: 'banner_cp='+bannercp+'&language='+language,
			complete: function(reqObj, status) {
			}
		});
		
		$links.bind('click', function(e) {
			var $this = $(this);
			
			var x = e.pageX;
			var y = e.pageY;
			var w = $wrapper.width();
			var h = $wrapper.height();
			
			pageTracker._trackEvent('BannerClick', bannerid, $this.attr('title'));
    			newsletter_from_where = 'Banniere';
			
			jQuery.ajax({
				type: 'POST',
				url: "/imc/webservices/banner_click.php?__=" + Math.random(),
				data: 'banner_cp='+bannercp+'&link_cp='+$this.attr('id')+'&x='+x+'&y='+y+'&w='+w+'&h='+h+'&language='+language,
				complete: function(reqObj, status) {
				}
			});
			
			if ( typeof $this.attr('onclick') != 'undefined' && $this.attr('onclick') ) {
				return true;	
			} else {
				setTimeout(function () {
					document.location = ($this.attr('href'));
				}, 100);
			}
			return false;
		});
		
	})(jQuery);

});

