/* Copyright © 2001 by Apple Computer, Inc., All Rights Reserved.
//
// You may incorporate this Apple sample code into your own code
// without restriction. This Apple sample code has been provided "AS IS"
// and the responsibility for its operation is yours. You may redistribute
// this code, but you are not permitted to redistribute it as
// "Apple sample code" after having made changes.

// ugly workaround for missing support for selectorText in Netscape6/Mozilla
// call onLoad() or before you need to do anything you would have otherwise used
// selectorText for.*/
var ugly_selectorText_workaround_flag = false;
var allStyleRules;
/* code developed using the following workaround (CVS v1.15) as an example.
// http://lxr.mozilla.org/seamonkey/source/extensions/xmlterm/ui/content/XMLTermCommands.js*/
function ugly_selectorText_workaround() {
	if ((navigator.userAgent.indexOf("Gecko") == -1) ||
	   (ugly_selectorText_workaround_flag)) {
		return; /* we've already been here or shouldn't be here*/
	}
	var styleElements = document.getElementsByTagName("style");

	for (var i = 0; i < styleElements.length; i++) {
		var styleText = styleElements[i].firstChild.data;
		/* this should be using match(/\b[\w-.]+(?=\s*\{)/g but ?= causes an
		// error in IE5, so we include the open brace and then strip it*/
		allStyleRules = styleText.match(/\b[\w-.]+(\s*\{)/g);
	}

	for (var i = 0; i < allStyleRules.length; i++) {
		/* probably insufficient for people who like random gobs of
		// whitespace in their styles*/
		allStyleRules[i] = allStyleRules[i].substr(0, (allStyleRules[i].length - 2));
	}
	ugly_selectorText_workaround_flag = true;
}


/* Used by admintools.xsl template:pageauditwindow

// getStyleById: given an element ID and style property
// return the current setting for that property, or null.
// args:
//  i - element id
//  p - property*/
function getStyleById(i, p) {
	return getStyleByObj($(i), p);
}


/* This function is used all over the place to pass in an object and a style and get it's value.
// ERE 8/23/2007*/
function getStyleByObj(o, p) {
	var n = o;
	var i = o.id;
	var s = eval("n.style." + p);

	/* try inline*/
	if ((s != "") && (s != null)) {
		return s;
	}

	/* try currentStyle*/
	if (n.currentStyle) {
		var s = eval("n.currentStyle." + p);
		if ((s != "") && (s != null)) {
			return s;
		}
	}

	/* try styleSheets*/
	var sheets = document.styleSheets;
	if (sheets.length > 0) {
		/* loop over each sheet*/
		for (var x = 0; x < sheets.length; x++) {
			/* grab stylesheet rules*/
			var rules = sheets[x].cssRules ? sheets[x].cssRules : sheets[x].rules;
			if (rules.length > 0) {
				/* check each rule*/
				for (var y = 0; y < rules.length; y++) {
					var z = rules[y].style;
					/* selectorText broken in NS 6/Mozilla: see
					// http://bugzilla.mozilla.org/show_bug.cgi?id=51944*/
					if (!rules[y].selectorText) ugly_selectorText_workaround();
					if (allStyleRules) {
						if (allStyleRules[y] == i) {
							return z[p];
						}
					} else {
						/* use the native selectorText and style stuff*/
						if (((z[p] != "") && (z[p] != null)) ||
						   (rules[y].selectorText == i)) {
							return z[p];
						}
					}
				}
			}
		}
	}
	return null;
}
