/* 'CSS-Regeln lesen/aendern 280606' (unkommentierte Version) (c) Cybaer - http://coding.binon.net/index.htm?dhtml/cssrule.htm */
function cssRule(target,attrib,value) {
 var s=0, r=0, i, result=false, mediaType, unifiedSelectorText, sheetObj=false, ruleColl=false, ruleObj=false, styleObj=false, ownerObj=false, rulePointer="", sheetIndex=NaN, ie_dom, complete, write, syntax;
 if(!target && document.styleSheets) {
  result=true;
 }
 if(typeof(target)=="object") {
  sheetObj=true;
  styleObj=target;
  target=false;
 }
 if(document.styleSheets && document.styleSheets.length && target) {
  if(!isNaN(parseInt(target)) && target.indexOf("/")>-1) {
   s=parseInt(target.split("/")[0],10);
   r=parseInt(target.split("/")[1],10);
   if(typeof(document.styleSheets[s])=="object" && s<document.styleSheets.length) {
    sheetObj=document.styleSheets[s];
    rulePointer=""+s;
    ownerObj=(sheetObj.ownerNode)?sheetObj.ownerNode:sheetObj.owningElement;
    if(sheetAccessible(s)) {
     if(document.styleSheets[s].cssRules) {
      ruleColl=sheetObj.cssRules;
      if(ruleColl[r]) {
       if(ruleColl[r].type==1) {
        ruleObj=ruleColl[r];
        styleObj=ruleObj.style;
        rulePointer+="/"+r;
       }
      }
     } else if(document.styleSheets[s].rules) {
      ruleColl=sheetObj.rules;
      if(ruleColl[r]) {
       ruleObj=ruleColl[r];
       styleObj=ruleObj.style;
       rulePointer+="/"+r;
      }
     }
    }
   }
  } else {
   target=target.toLowerCase();
   i=target.indexOf("@")+1;
   mediaType=(i)?target.substring(i):"*";
   if(i) { target=target.substring(0,i-1); }
   for(s=document.styleSheets.length-1; s>=0; s-=1) {
    if(sheetAccessible(s)) {
     if(document.styleSheets[s].cssRules) {
      for(r=document.styleSheets[s].cssRules.length-1; r>=0; r-=1) {
       if(document.styleSheets[s].cssRules[r].type==1 && ((mediaType && document.styleSheets[s].media.mediaText.toLowerCase().indexOf(mediaType)>=0) || (!mediaType && !document.styleSheets[s].media.mediaText) || mediaType=="*") && document.styleSheets[s].cssRules[r].selectorText.toLowerCase().indexOf(target)>-1) {
        originalSelectorText=document.styleSheets[s].cssRules[r].selectorText;
        unifiedSelectorText=originalSelectorText;
        addSafariSelectors=/\.([\w]+)/g.exec(originalSelectorText);
        if(addSafariSelectors) { for(i=1; i<addSafariSelectors.length; i++) { unifiedSelectorText=unifiedSelectorText.replace('.'+addSafariSelectors[i]+'[CLASS~="'+addSafariSelectors[i]+'"]','.'+addSafariSelectors[i]); } }
        addSafariSelectors=/#([\w]+)/g.exec(originalSelectorText);
        if(addSafariSelectors) { for(i=1; i<addSafariSelectors.length; i++) { unifiedSelectorText=unifiedSelectorText.replace('#'+addSafariSelectors[i]+'[ID="'+addSafariSelectors[i]+'"]','#'+addSafariSelectors[i]); } }
        unifiedSelectorText=unifiedSelectorText.toLowerCase();
        if(unifiedSelectorText==target) {
         sheetObj=document.styleSheets[s];
         ruleColl=sheetObj.cssRules;
         ruleObj=ruleColl[r];
         styleObj=ruleObj.style;
         ownerObj=sheetObj.ownerNode;
         rulePointer=s+"/"+r;
         break;
        } else if(unifiedSelectorText.indexOf(",")>-1) {
         selectorArray=unifiedSelectorText.split(",");
         for(i=0; i<selectorArray.length; i++) {
          while(selectorArray[i].charAt(0)==" ") { selectorArray[i]=selectorArray[i].substring(1,selectorArray[i].length); }
          while(selectorArray[i].charAt(selectorArray[i].length-1)==" ") { selectorArray[i]=selectorArray[i].substring(0,selectorArray[i].length-1); }
          if(selectorArray[i]==target) {
           sheetObj=document.styleSheets[s];
           ruleColl=sheetObj.cssRules;
           ruleObj=ruleColl[r];
           styleObj=ruleObj.style;
           ownerObj=sheetObj.ownerNode;
           rulePointer=s+"/"+r;
           break;
          }
         }
         if(sheetObj) { break; }
        }
       }
      }
     } else if(document.styleSheets[s].rules) {
      for(r=document.styleSheets[s].rules.length-1; r>=0; r-=1) {
       if(((mediaType && document.styleSheets[s].media.toLowerCase().indexOf(mediaType)>=0) || (!mediaType && !document.styleSheets[s].media) || mediaType=="*") && document.styleSheets[s].rules[r].selectorText.toLowerCase()==target) {
        sheetObj=document.styleSheets[s];
        ruleColl=sheetObj.rules;
        ruleObj=ruleColl[r];
        styleObj=ruleObj.style;
        ownerObj=sheetObj.owningElement;
        rulePointer=s+"/"+r;
        break;
       }
      }
     }
     if(sheetObj) { break; }
    }
   }
  }
 }
 if(!sheetObj) {
  if(attrib=="sheetindex") { result=NaN; }
 } else {
  if(attrib=="sheetobject") {
   result=sheetObj;
  } else if(attrib=="rulecollection") {
   result=ruleColl;
  } else if(attrib=="ruleobject") {
   result=ruleObj;
  } else if(attrib=="styleobject") {
   result=styleObj;
  } else if(attrib=="ownerobject") {
   result=ownerObj;
  } else if(attrib=="ownermarkup") {
   if(ownerObj.outerHTML) {
    result=ownerObj.outerHTML;
    while(result.charCodeAt(0)==13 || result.charCodeAt(0)==10) { result=result.substring(1); } 
   } else {
    result="<"+ownerObj.tagName;
    for(i=0; i<ownerObj.attributes.length; i++) { result+=' '+ownerObj.attributes[i].name+'="'+ownerObj.attributes[i].value+'"'; }
    result+=(ownerObj.tagName=="LINK")?">":(">"+ownerObj.innerHTML+"</"+ownerObj.tagName+">");
   }
  } else if(attrib=="sheetindex") {
   result=parseInt(rulePointer);
  } else if(attrib=="rulepointer") {
   result=(rulePointer.indexOf("/")>-1 || rulePointer===false)?rulePointer:(sheetAccessible(rulePointer)?false:"");
  } else {
   complete=(!attrib)?true:false;
   write=(typeof(value)!="undefined")?true:false;
   if(!complete) {
    attrib=propertyToStyle(attrib);
    if(write) {
     styleObj[attrib]=value;
     result=true;
    } else {
     result=styleObj[attrib];
    }
   } else if(styleObj.cssText!=null) {
    if(write) {
     styleObj.cssText=value;
     result=true;
    } else {
     result=styleObj.cssText.toLowerCase();
    }
   }
  }
 }
 return result;
}

function propertyToStyle(property) {
 if(property=="float") { property=((typeof(window.cssFloat)=="undefined")?"style":"css")+property.charAt(0).toUpperCase()+property.substring(1); }
 else if(property.indexOf("-")>=0) {
  syntax=property.split("-");
  property=syntax[0];
  for(i=1; i<syntax.length; i++) { property+=syntax[i].charAt(0).toUpperCase()+syntax[i].substring(1); }
 }
 return property;
}

function sheetAccessible(sheetNo) {
 try {
  if(document.styleSheets[sheetNo].cssRules || document.styleSheets[sheetNo].rules) {
   throw "sheetAccessible";
  }
 } catch(e) {
  return (e=="sheetAccessible");
 }
}