var g_cssDefinitions = new Array();
var g_cssDefinitionsLoaded = false;


function LoadCssDefinitions(clearExistingDefinitions)
{
  g_cssDefinitionsLoaded = true;

  // clear any existing definitions ?
  if (clearExistingDefinitions)
  {
    while (g_cssDefinitions.length)
      g_cssDefinitions.pop();
  }

  // iterate over the css known to the document object
  var numStyleSheets = document.styleSheets['length'];
  for (var i = 0; i < numStyleSheets; i++)
    LoadStyleSheetDefinition(document.styleSheets[i]);
}




function LoadStyleSheetDefinition(styleSheet)
{
  var rules = (styleSheet.rules != undefined) ? styleSheet.rules : styleSheet.cssRules;
  var numRules = rules['length'];

  for (var i = 0; i < numRules; i++)
  {
    var item = rules.item(i);
    g_cssDefinitions[item.selectorText] = item.style.cssText;
  }
}



function SetStyle(object, cssName)
{
  if (!g_cssDefinitionsLoaded)
    LoadCssDefinitions(true);
  object.style.cssText = g_cssDefinitions[cssName];
}




function GetCssDefinition(cssName)
{
  if (!g_cssDefinitionsLoaded)
    LoadCssDefinitions(true);
  return g_cssDefinitions[cssName];
}
