/**
 * jQuery-Plugin "preloadCssImages"
 * by Scott Jehl, scott@filamentgroup.com
 * http://www.filamentgroup.com
 * reference article: http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/
 * demo page: http://www.filamentgroup.com/examples/preloadImages/index_v2.php
 * 
 * Copyright (c) 2008 Filament Group, Inc
 * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses.
 *
 * Version: 5.0, 10.31.2008
 * Changelog:
 * 	02.20.2008 initial Version 1.0
 *    06.04.2008 Version 2.0 : removed need for any passed arguments. Images load from any and all directories.
 *    06.21.2008 Version 3.0 : Added options for loading status. Fixed IE abs image path bug (thanks Sam Pohlenz).
 *    07.24.2008 Version 4.0 : Added support for @imported CSS (credit: http://marcarea.com/). Fixed support in Opera as well. 
 *    10.31.2008 Version: 5.0 : Many feature and performance enhancements from trixta
 * --------------------------------------------------------------------
 */


 jQuery.preloadCssImages = function(){

         var allImgs = [];//new array for all the image urls 

         var k = 0; //iterator for adding images

         var sheets = document.styleSheets;//array of stylesheets

        

         for(var i = 0; i<sheets .length; i++){//loop through each stylesheet

                 var cssPile = '';//create large string of all css rules in sheet

                 var csshref = (sheets[i].href) ? sheets[i].href : 'window.location.href';

                 var baseURLarr = csshref.split('/');//split href at / to make array

                 baseURLarr.pop();//remove file path from baseURL array

                 var baseURL = baseURLarr.join('/');//create base url for the images in this sheet (css file's dir)

                 if(baseURL!="") baseURL+='/'; //tack on a / if needed

                 if(document.styleSheets[i].cssRules){//w3

                         var thisSheetRules = document.styleSheets[i].cssRules; //w3

                         for(var j = 0; j<thisSheetRules.length; j++){

                                 cssPile+= thisSheetRules[j].cssText;

                         }

                 }

                 else {

                         cssPile+= document.styleSheets[i].cssText;

                 }

                

                 //parse cssPile for image urls and load them into the DOM

                 var imgUrls = cssPile.match(/[^\(]+\.(gif|jpg|jpeg|png)/g);//reg ex to get a string of between a "(" and a ".filename"

                 if(imgUrls != null && imgUrls.length>0 && imgUrls != ''){//loop array

                         var arr = jQuery.makeArray(imgUrls);//create array from regex obj       

                         jQuery(arr).each(function(){

                                 allImgs[k] = new Image(); //new img obj

                                 allImgs[k].src = (this[0] == '/' || this.match('http://')) ? this : baseURL + this;     //set src either absolute or rel to css dir

                                 k++;

                         });

                 }

         }//loop

         return allImgs;

 }


