jQuery.preloadCssImages=function(settings){settings=jQuery.extend({statusTextEl:null,statusBarEl:null,errorDelay:999,simultaneousCacheLoading:2},settings);var allImgs=[],loaded=0,imgUrls=[],thisSheetRules,errorTimer;function onImgComplete(){clearTimeout(errorTimer);if(imgUrls&&imgUrls.length&&imgUrls[loaded]){loaded++;if(settings.statusTextEl){var nowloading=(imgUrls[loaded])?"Now Loading: <span>"+imgUrls[loaded].split("/")[imgUrls[loaded].split("/").length-1]:"Loading complete";jQuery(settings.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">'+nowloading+"</span></span>")}if(settings.statusBarEl){var barWidth=jQuery(settings.statusBarEl).width();jQuery(settings.statusBarEl).css("background-position",-(barWidth-(barWidth*loaded/imgUrls.length).toFixed(0))+"px 50%")}loadImgs()}}function loadImgs(){if(imgUrls&&imgUrls.length&&imgUrls[loaded]){var img=new Image();img.src=imgUrls[loaded];if(!img.complete){jQuery(img).bind("error load onreadystatechange",onImgComplete)}else{onImgComplete()}errorTimer=setTimeout(onImgComplete,settings.errorDelay)}}function parseCSS(sheets,urls){var w3cImport=false,imported=[],importedSrc=[],baseURL;var sheetIndex=sheets.length;while(sheetIndex--){var cssPile="";if(urls&&urls[sheetIndex]){baseURL=urls[sheetIndex]}else{var csshref=(sheets[sheetIndex].href)?sheets[sheetIndex].href:"window.location.href";var baseURLarr=csshref.split("/");baseURLarr.pop();baseURL=baseURLarr.join("/");if(baseURL){baseURL+="/"}}if(sheets[sheetIndex].cssRules||sheets[sheetIndex].rules){thisSheetRules=(sheets[sheetIndex].cssRules)?sheets[sheetIndex].cssRules:sheets[sheetIndex].rules;var ruleIndex=thisSheetRules.length;while(ruleIndex--){if(thisSheetRules[ruleIndex].style&&thisSheetRules[ruleIndex].style.cssText){var text=thisSheetRules[ruleIndex].style.cssText;if(text.toLowerCase().indexOf("url")!=-1){cssPile+=text}}else{if(thisSheetRules[ruleIndex].styleSheet){imported.push(thisSheetRules[ruleIndex].styleSheet);w3cImport=true}}}}var tmpImage=cssPile.match(/[^\("]+\.(gif|jpg|jpeg|png)/g);if(tmpImage){var i=tmpImage.length;while(i--){var imgSrc=(tmpImage[i].charAt(0)=="/"||tmpImage[i].match("://"))?tmpImage[i]:baseURL+tmpImage[i];if(jQuery.inArray(imgSrc,imgUrls)==-1){imgUrls.push(imgSrc)}}}if(!w3cImport&&sheets[sheetIndex].imports&&sheets[sheetIndex].imports.length){for(var iImport=0,importLen=sheets[sheetIndex].imports.length;iImport<importLen;iImport++){var iHref=sheets[sheetIndex].imports[iImport].href;iHref=iHref.split("/");iHref.pop();iHref=iHref.join("/");if(iHref){iHref+="/"}var iSrc=(iHref.charAt(0)=="/"||iHref.match("://"))?iHref:baseURL+iHref;importedSrc.push(iSrc);imported.push(sheets[sheetIndex].imports[iImport])}}}if(imported.length){parseCSS(imported,importedSrc);return false}var downloads=settings.simultaneousCacheLoading;while(downloads--){setTimeout(loadImgs,downloads)}}parseCSS(document.styleSheets);return imgUrls};
