| Current Path : /home/afacube/www/templates/afacube/javascript/ |
| 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"> </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);