Your IP : 216.73.217.146


Current Path : /home/afacube/www/templates/afacube/javascript/
Upload File :
Current File : /home/afacube/www/templates/afacube/javascript/template.js

/**
 * @package     Afacube
 * @subpackage  Templates.main
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @since       3.2
 */



(function($)
{
	
	function loadURL (url, callback) {
		if (window.Worker) {

			var workerXHR = new Worker ('/templates/afacube/javascript/workerXHR.js');
		
			var cbWorker = function (response) {
				callback(response);
				workerXHR.terminate();
			}
			
			workerXHR.addEventListener('message', function (ev) {
				if (ev.data.loadURL && ev.data.loadURL == url) {
					cbWorker(ev.data.response);
				}
			}, false);
			workerXHR.addEventListener('error', function (ev) {
				
			}, false);
			workerXHR.postMessage({command:"loadURL",parameter:{url:url}});
			return { worker : workerXHR, terminate : function () { workerXHR.terminate(); }};
		
		}
		else {
			XHR = $.ajax({
				type : 'GET',
				url : url
			}).done(function (html) {
				callback(html);
			});
			return { worker : XHR, terminate : function () { XHR.abort(); }};
			
		}
	}

    var lastTime = 0;
    var vendors = ['webkit', 'moz'];
    for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
        window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
        window.cancelAnimationFrame =
          window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];
    }

    if (!window.requestAnimationFrame)
        window.requestAnimationFrame = function(callback, element) {
            var currTime = new Date().getTime();
            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
            var id = window.setTimeout(function() { callback(currTime + timeToCall); },
              timeToCall);
            lastTime = currTime + timeToCall;
            return id;
        };

    if (!window.cancelAnimationFrame)
        window.cancelAnimationFrame = function(id) {
            clearTimeout(id);
        };

	var animating = 0;
	function raf() {
		if ( animating ) {
			requestAnimationFrame( raf );
			jQuery.fx.tick();
		}
	}
	jQuery.fx.timer = function( timer ) {
		if ( timer() && jQuery.timers.push( timer ) && !animating ) {
			animating = true;
			raf();
		}
	};
	jQuery.fx.stop = function() {
		animating = false;
	};
	
	$(document).ready(function()
	{
		tajal.remoteImage("/templates/afacube/images/loading.gif");
		
		
		var hasBigViewer = !$('#isfull').is(':hidden');
		
		
		
		$( "header .result-line" ).live( "click", function(evt) {
			evt.preventDefault();
			evt.stopPropagation();
			document.location.href = $(this).find('a').prop('href');
		});		
		
		var currentRequest = false;
		var tagsContainer = $('<div class="tags-search">').appendTo($('header .search'));
		var resultContainer = $('<div class="search-result">').appendTo($('header .search'));
		var countLabel = $('<span class="counter">').insertAfter($('header #mod-search-searchword')).hide();
		var tools = $('<ul class="tools"><li class="close">Effacer</li><li class="minim">Réduire</li></ul>').appendTo($('.search'));
		var tempo = false;
		var lastQuery = false;
		var lastCount = 0;
		
		var tags = [];
		var constTags = [];
		$('.tagspopular a').each (function () {
			tags.push($.trim($(this).text()));
		});
		for (var i=0; i<tags.length; i++) {
			constTags.push('<a id="cat'+i+'">'+tags[i]+'</a>');
		}
		$('<p class="search-section">Recherches favorites</p><p>'+constTags.join('<span class="separator">&#160;</span>')+'</p>').appendTo(tagsContainer);
	
		$('header .tags-search a').click(function (evt) {
			evt.stopPropagation();
			evt.preventDefault();
			$('header #mod-search-searchword').val($(this).text()).focus();
			getResult ();
		});
		
		tools.find('.close').click(function () {
			if (localStorage)
				localStorage.removeItem('lastQuery');
			resultContainer.empty();
			$('header #mod-search-searchword').val('Artistes, programmes, genres...').focus();
			countLabel.hide();
		}).attr('title', 'Effacer la recherche');
		tools.find('.minim').click(function () {
			$('header #mod-search-searchword').blur();
			$(document.body).removeClass('searchActive');
			$('.search').removeClass('sfocus').unbind('mouseleave');
		}).attr('title', 'Cacher le résultat');
				
		if (localStorage && localStorage.getItem('lastQuery')) {
			$('header #mod-search-searchword').val(localStorage.getItem('lastQuery'));
			getResult ();
		}
		
		function getResult () {
			if (currentRequest) {
				currentRequest.terminate();
			}
			$( "header .search").addClass('loading');
			currentRequest = loadURL('/rechercher?searchphrase=all&tmpl=component&searchword='+$('header #mod-search-searchword').val(), function (html) {
				$( "header .search").removeClass('loading');
				currentRequest = false;
				lastQuery = $('#mod-search-searchword').val();
				if (localStorage) 
					localStorage.setItem('lastQuery', lastQuery);
				lastCount = $(html).find('#count').val();
				if (lastCount == 0) {
					resultContainer.empty().html('<p class="error">Aucun résultat trouvé...</p>');
					countLabel.hide();
				}
				else {
					countLabel.text(lastCount).show();
					$(html).find('.search-results').appendTo(resultContainer.empty());
				}	
			});
		}

		$('#mod-search-searchword').on('focus', function () {
			$('header .search').on('mouseleave', function () {
				if (!$('#mod-search-searchword').is(':focus')) {
					$(document.body).removeClass('searchActive');
					$(this).removeClass('sfocus').unbind('mouseleave');
				}			
			});
			$(document.body).addClass('searchActive');
			$(this).parents('.search').addClass('sfocus');			
		}).on('blur', function (ev) {
			if (!$('header .search').is(':hover')) {
				$(document.body).removeClass('searchActive');
				$('header .search').removeClass('sfocus').unbind('mouseleave');
			} 
		}).on('keyup', function (ev) {
			if ($(this).val().length > 3) {
				if (lastQuery != $(this).val()) {
					clearTimeout(tempo);
					tempo = setTimeout(getResult ,500);
				}
			}
			else {
				resultContainer.empty();
				countLabel.hide();
			}
		}).attr('autocomplete', 'off');
		
		function add (str, i, min) {
			var result, unit, pFloat = parseFloat(str), pInt = parseInt(str);
			if (pFloat>pInt)
				unit = str.substr((pFloat+'').length);
			else
				unit = str.substr((pInt+'').length);
			
			switch (unit) {
				case '%':
					result = pFloat + i;
					break;
				default:
					result = pInt + Math.floor(i);
					break;
			}
			if (min && (result<min))
				result = min;
			return result+unit;
		}
		
		var latestKnownScrollY = 0;

		function onScroll (ev) {
			var delta = scrollTop-psTop;
			latestKnownScrollY = window.scrollY;
			psTop = scrollTop; 
			
		}

		var psTop = 0;
		var style = document.createElement("style");
		document.head.appendChild(style);
		var sheet = style.sheet;
		$('#video iframe').bind('load', function () {
			$(this).animate({opacity:1},1000);
		}).css('opacity', 0);
		if ('getComputedStyle' in window && "insertRule" in sheet && hasBigViewer)	{
			
			$(document.body).addClass('animate');
			
			var max = 0;
			$('.category-module-lastnewshome li').each(function () {
				max = Math.max(max, $(this).find('.mod-articles-category-date').position().top);
			});
	
			$('.category-module-lastnewshome li').each(function () {
				//$(this).find('h3').css('padding-bottom', (max-$(this).find('.mod-articles-category-date').position().top));
			});
			
			$(document.body).addClass('loading');
			var loading = true;	
			setTimeout(function() {
				if (loading)
					$(document.body).removeClass('loading');
				loading = false;
			},200)

			/* Animation des carrés */
			$("header h1").append('<ul class="carres"><li/><li/><li/></ul>');
			
			
			/* Paralax Effect */
			var psTop = 0;
			var style = document.createElement("style");
			document.head.appendChild(style);
			var sheet = style.sheet;
			var lastcoords = false;
			
			var plxScroll = function () {
				var scrollTop = $(window).scrollTop(), coords, selector, rl, mr, ml;
				var delta = scrollTop-psTop;
				psTop = scrollTop; 
				if (scrollTop>=0 && scrollTop<260) {
					coords = $('header').css('background-position').split(' ');
					$('header').css('background-position', add(coords[0], -delta/20, -50)+' '+add(coords[1], delta/2, -300));
					
					if (!lastcoords)
						coords = window.getComputedStyle($('#moto')[0], ':before').getPropertyValue('background-position').split(' ');
					else
						coords = lastcoords;
					selector = 'body.animate.homepage #moto:before';
					lastcoords = [add(coords[0], -delta/20, -50), add(coords[1], delta/2, -433)];
					rule = '{background-position:'+lastcoords[0]+' '+lastcoords[1]+';}';
					rl = sheet.cssRules.length;
					if (rl!=0)
						sheet.deleteRule(0);
					sheet.insertRule(selector+" "+rule, 0);
				}
			};
			
			if ($('.homepage').length != 0) {
				$(window).on('scroll', function () {
					requestAnimationFrame(plxScroll);
				});
			}
			
		}	
		
	});
})(jQuery);