/**
 * --------------------------------------------------------------------
 * jQuery-Plugin "preloadCssImages"
 * by Scott Jehl, scott@filamentgroup.com
 * http://www.filamentgroup.com
 * reference article: http://www.filamentgroup.com/lab/automated_image_preloading/
 * demo page: http://www.filamentgroup.com/examples/preloadImages/
 * 
 * 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: 1.0, 31.05.2007
 * Changelog:
 * 	02.20.2008 initial Version 1.0
 * --------------------------------------------------------------------
 */
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
				if(document.styleSheets[i].rules){
					var thisSheetRules = document.styleSheets[i].rules; //w3
					for(var j = 0; j<thisSheetRules.length; j++){
							cssPile+= thisSheetRules[j].cssText;
					}
				}else{
					cssPile+= document.styleSheets[i].cssText;
				}*/
				if(document.styleSheets[i].cssRules || document.styleSheets[i].rules){
					thisSheetRules = (document.styleSheets[i].cssRules) ? //->>> http://www.quirksmode.org/dom/w3c_css.html
						document.styleSheets[i].cssRules : //w3
						document.styleSheets[i].rules; //ie 
					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){ // only add rules to the string if you can assume, to find an image, speed improvement
								cssPile += text; // thisSheetRules[ruleIndex].style.cssText instead of thisSheetRules[ruleIndex].cssText is a huge speed improvement
							}
						} else if(thisSheetRules[ruleIndex].styleSheet) {
							imported.push(thisSheetRules[ruleIndex].styleSheet);
							w3cImport = true;
						}
						
					}
				}
			   
				//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(){
								t = this.replace(/\"/g, '');
								//$('#loadedImgs').append('<br />'+((t[0] == '/' || t.match('http://')) ? t : baseURL + t));
								allImgs[k] = (this[0] == '/' || t.match('http://')) ? t : baseURL + t;     //set src either absolute or rel to css dir
								k++;
						});
				}
		}//loop
		return allImgs;
}
