jvm.VMLShapeElement = function(name, config){

jvm.VMLShapeElement.parentClass.call(this, name, config);

this.fillElement = new jvm.VMLElement('fill');
this.strokeElement = new jvm.VMLElement('stroke');
this.node.appendChild(this.fillElement.node);
this.node.appendChild(this.strokeElement.node);
this.node.stroked = false;

jvm.AbstractShapeElement.apply(this, arguments);

};

jvm.inherits(jvm.VMLShapeElement, jvm.VMLElement); jvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement);

jvm.VMLShapeElement.prototype.applyAttr = function(attr, value){

switch (attr) {
  case 'fill':
    this.node.fillcolor = value;
    break;
  case 'fill-opacity':
    this.fillElement.node.opacity = Math.round(value*100)+'%';
    break;
  case 'stroke':
    if (value === 'none') {
      this.node.stroked = false;
    } else {
      this.node.stroked = true;
    }
    this.node.strokecolor = value;
    break;
  case 'stroke-opacity':
    this.strokeElement.node.opacity = Math.round(value*100)+'%';
    break;
  case 'stroke-width':
    if (parseInt(value, 10) === 0) {
      this.node.stroked = false;
    } else {
      this.node.stroked = true;
    }
    this.node.strokeweight = value;
    break;
  case 'd':
    this.node.path = jvm.VMLPathElement.pathSvgToVml(value);
    break;
  default:
    jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);
}

};