<!DOCTYPE html>
<html>
  <head>
    <title>CSSOM - CSSStyleDeclaration - Text - Serialization - Delimiters</title>
    <link rel="author" title="Glenn Adams" href="mailto:glenn@skynav.com"/>
    <link rel="help" href="http://www.w3.org/TR/cssom/#the-cssstyledeclaration-interface"/>
    <meta name="flags" content="dom"/>
    <script src="../resources/testharness.js"></script>
    <script src="../resources/testharnessreport.js"></script>
  </head>
  <body>
    <div id="log"></div>
    <div id="box"></div>
    <script>
      var style = document.getElementById('box').style;
      var delim = new RegExp ( /(\s*\;\s*)/ );

      function countDelimiters(s) {
        var k = ( s.split(delim).length - 1 ) / 2;
        return k;
      }

      function getNthDelimiter(s,n) {
        if ( n > 0 ) {
          var sa = s.split(delim);
          var k = 1;
          for ( var i in sa ) {
            var s = sa[i];
            var m = delim.exec(s);
            if ( m && ( m.length > 1 ) ) {
              if ( k++ == n ) {
                return s;
              }                          
            }
          }
        }
        return '';
      }

      test(function(){

        style.cssText = "";
        assert_equals(countDelimiters(style.cssText), 0);
        assert_equals(getNthDelimiter(style.cssText,0), "");
        assert_equals(style.cssText, "");

      }, 'inline style - text - delimiters - zero declarations');

      test(function(){

        style.cssText = "left: 10px";
        assert_equals(countDelimiters(style.cssText), 1);
        assert_equals(getNthDelimiter(style.cssText,1), ";");
        assert_equals(style.cssText, "left: 10px;");

      }, 'inline style - text - delimiters - one declaration');

      test(function(){

        style.cssText = "left: 10px; right: 20px";
        assert_equals(countDelimiters(style.cssText), 2);
        assert_equals(getNthDelimiter(style.cssText,1), "; ");
        assert_equals(getNthDelimiter(style.cssText,2), ";");
        assert_equals(style.cssText, "left: 10px; right: 20px;");

      }, 'inline style - text - delimiters - two declarations');
    </script>
  </body>
</html>
