/* * QueryLoader v2 - A simple script to create a preloader for images * * For instructions read the original post: * http://www.gayadesign.com/diy/queryloader2-preload-your-images-with-ease/ * * Copyright (c) 2011 - Gaya Kessler * * Licensed under the MIT license: * http://www.opensource.org/licenses/mit-license.php * * Version: 2.2 * Last update: 03-04-2012 * */ (function($) { /*Browser detection patch*/ jQuery.browser = {}; jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase()); jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase()); jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase()); jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase()); if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (elt /*, from*/) { var len = this.length >>> 0; var from = Number(arguments[1]) || 0; from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; for (; from < len; from++) { if (from in this && this[from] === elt) return from; } return -1; }; } var qLimages = []; var qLdone = 0; var qLdestroyed = false; var qLimageContainer = ""; var qLoverlay = ""; var qLbar = ""; var qLpercentage = ""; var qLimageCounter = 0; var qLstart = 0; var qLoptions = { onComplete: function () {}, backgroundColor: "#000", barColor: "#fff", overlayId: 'qLoverlay', barHeight: 1, percentage: false, deepSearch: true, completeAnimation: "fade", minimumTime: 500, onLoadComplete: function () { if (qLoptions.completeAnimation == "grow") { var animationTime = 500; var currentTime = new Date(); if ((currentTime.getTime() - qLstart) < qLoptions.minimumTime) { animationTime = (qLoptions.minimumTime - (currentTime.getTime() - qLstart)); } $(qLbar).stop().animate({ "width": "100%" }, animationTime, function () { $(this).animate({ top: "0%", width: "100%", height: "100%" }, 500, function () { $('#'+qLoptions.overlayId).fadeOut(500, function () { $(this).remove(); qLoptions.onComplete(); }) }); }); } else { $('#'+qLoptions.overlayId).fadeOut(500, function () { $('#'+qLoptions.overlayId).remove(); qLoptions.onComplete(); }); } } }; var afterEach = function () { //start timer //qLdestroyed = false; var currentTime = new Date(); qLstart = currentTime.getTime(); if (qLimages.length > 0) { createPreloadContainer(); createOverlayLoader(); } else { //no images == instant exit destroyQueryLoader(); } }; var createPreloadContainer = function() { qLimageContainer = $("
").appendTo("body").css({ display: "none", width: 0, height: 0, overflow: "hidden" }); for (var i = 0; qLimages.length > i; i++) { $.ajax({ url: qLimages[i], type: 'HEAD', complete: function (data) { if (!qLdestroyed) { qLimageCounter++; addImageForPreload(this['url']); } } }); } }; var addImageForPreload = function(url) { var image = $("