//  ---------------------------------------------------------------------------
  function getStyle (element, style) {
    style = style == 'float' ? 'cssFloat' : camelize(style);
    var value = element.style[style];
    if (!value || value == 'auto') {
      var css = document.defaultView.getComputedStyle(element, null);
      value = css ? css[style] : null;
    }
    if (style == 'opacity') return value ? parseFloat(value) : 1.0;
    return value == 'auto' ? null : value;
  }

//  ---------------------------------------------------------------------------
  function getOpacity (element) {
    return getStyle(element,'opacity');
  }

//  ---------------------------------------------------------------------------
  function match (element, selector) {
    if (isString(selector))
      selector = new Selector(selector);
    return selector.match(element);
  }

//  ---------------------------------------------------------------------------
  function setStyle (element, styles) {
    var elementStyle = element.style; // , match
    if (isString(styles)) {
      element.style.cssText += ';' + styles;
      return include (styles, 'opacity') ? setOpacity (element, styles) : element;
    }
    for (var property in styles)
      if (property == 'opacity') setOpacity(element, styles[property]);
      else
        elementStyle[(property == 'float' || property == 'cssFloat') ? (isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : property] = styles[property];
    return element;
  }

//  ---------------------------------------------------------------------------
  function setOpacity (element, value) {
    element.style.opacity = value >  1 ? 1 : (value < 0.00001 ? 0 : value);
    return element;
  }

//  ---------------------------------------------------------------------------
