/*
 * CSS Automatic Pre-Loader ... by Micah Tischler
 * Traverses the stylesheet(s) to look for alternate
 * background images and preloads them.
 * 
 * $Id: capl.js 403 2008-05-22 12:50:49Z junior $
 *
 */

function capl() {
  var sheetcount,
      sheetiter,
      sheetlist,
      sheet,
      rulelength,
      rulecount,
      ruleiter,
      rulelist,
      rule,
      selector,
      images=new Array(),
      selectreg=new RegExp(":(active|focus|hover|visited|ACTIVE|FOCUS|HOVER|VISITED)"),
      linereg=new RegExp("(background-image|BACKGROUND-IMAGE)[ \t]*:[ \t]*(url|URL)[(][^)]+[)]");

  if (document.styleSheets!=null){
    sheetlist=document.styleSheets;
    sheetcount=sheetlist.length;
    for (sheetiter=0;sheetiter<sheetcount;sheetiter++){
      rulelist=sheetlist[sheetiter].cssRules;
      //Attempt to IE-proof the code
      try {
        rulecount=rulelist.length;
      }
      catch (e) {
        rulelist=sheetlist[sheetiter].rules;
        rulecount=rulelist.length;
      }
      for (ruleiter=0;ruleiter<rulecount;ruleiter++){
        rule=rulelist[ruleiter].cssText;
        selector=rulelist[ruleiter].selectorText;
        //Attempt to IE-proof the code again
        try {
          rulelength=rule.length;
        }
        catch (e) {
          rule=rulelist[ruleiter].style.cssText;
          rulelength=rule.length;
        }
        if (selectreg.test(selector)){
          images[images.push(new Image())-1].src=String(linereg.exec(rule)).replace(/(^.*\(|\).*$)/gi,"");
        } 
      }
    }
  }
}
