﻿; jQuery.preloadCssImages = function(q) { q = jQuery.extend({ statusTextEl: null, statusBarEl: null, errorDelay: 999, simultaneousCacheLoading: 2 }, q); var r = [], loaded = 0, imgUrls = [], thisSheetRules, errorTimer; function onImgComplete() { clearTimeout(errorTimer); if (imgUrls && imgUrls.length && imgUrls[loaded]) { loaded++; if (q.statusTextEl) { var a = (imgUrls[loaded]) ? 'Now Loading: <span>' + imgUrls[loaded].split('/')[imgUrls[loaded].split('/').length - 1] : 'Loading complete'; jQuery(q.statusTextEl).html('<span class="numLoaded">' + loaded + '</span> of <span class="numTotal">' + imgUrls.length + '</span> loaded (<span class="percentLoaded">' + (loaded / imgUrls.length * 100).toFixed(0) + '%</span>) <span class="currentImg">' + a + '</span></span>') } if (q.statusBarEl) { var b = jQuery(q.statusBarEl).width(); jQuery(q.statusBarEl).css('background-position', -(b - (b * loaded / imgUrls.length).toFixed(0)) + 'px 50%') } loadImgs() } } function loadImgs() { if (imgUrls && imgUrls.length && imgUrls[loaded]) { var a = new Image(); a.src = imgUrls[loaded]; if (!a.complete) { jQuery(a).bind('error load onreadystatechange', onImgComplete) } else { onImgComplete() } errorTimer = setTimeout(onImgComplete, q.errorDelay) } } function parseCSS(a, b) { var c = false, imported = [], importedSrc = [], baseURL; var d = a.length; while (d--) { var e = ''; if (b && b[d]) { baseURL = b[d] } else { var f = (a[d].href) ? a[d].href : 'window.location.href'; var g = f.split('/'); g.pop(); baseURL = g.join('/'); if (baseURL) { baseURL += '/' } } if (a[d].cssRules || a[d].rules) { thisSheetRules = (a[d].cssRules) ? a[d].cssRules : a[d].rules; var h = thisSheetRules.length; while (h--) { if (thisSheetRules[h].style && thisSheetRules[h].style.cssText) { var j = thisSheetRules[h].style.cssText; if (j.toLowerCase().indexOf('url') != -1) { e += j } } else if (thisSheetRules[h].styleSheet) { imported.push(thisSheetRules[h].styleSheet); c = true } } } var k = e.match(/[^\("]+\.(gif|jpg|jpeg|png)/g); if (k) { var i = k.length; while (i--) { var l = (k[i].charAt(0) == '/' || k[i].match('://')) ? k[i] : baseURL + k[i]; if (jQuery.inArray(l, imgUrls) == -1) { imgUrls.push(l) } } } if (!c && a[d].imports && a[d].imports.length) { for (var m = 0, importLen = a[d].imports.length; m < importLen; m++) { var n = a[d].imports[m].href; n = n.split('/'); n.pop(); n = n.join('/'); if (n) { n += '/' } var o = (n.charAt(0) == '/' || n.match('://')) ? n : baseURL + n; importedSrc.push(o); imported.push(a[d].imports[m]) } } } if (imported.length) { parseCSS(imported, importedSrc); return false } var p = q.simultaneousCacheLoading; while (p--) { setTimeout(loadImgs, p) } } parseCSS(document.styleSheets); return imgUrls };