<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("This test the elements attibute of HTMLFieldSet element.");

var container = document.createElement('div');
document.body.appendChild(container);

container.innerHTML = '<form id=formElement> <fieldset id="fs">' +
    '<button id=button1></button>' +
    '<fieldset id=fieldset1><legend id=legend1></legend></fieldset>' +
    '<div> <input id=inputhidden type=hidden> </div>' +
    '<input id=inputtext type=text>' +
    '<input id=inputsearch type=search>' +
    '<input id=inputurl type=url>' +
    '<input id=inputemail type=email>' +
    '<input id=inputpassword type=password>' +
    '<input id=inputdate type=date>' +
    '<input id=inputnumber type=number>' +
    '<input id=inputrange type=range>' +
    '<input id=inputcolor type=color>' +
    '<input id=inputcheckbox type=checkbox>' +
    '<input id=inputradio type=radio>' +
    '<input id=inputfile type=file>' +
    '<input id=inputsubmit type=submit>' +
    '<input id=inputimage type=image>' +
    '<input id=inputreset type=reset>' +
    '<input id=inputbutton type=button>' +
    '<keygen id=keygen1></keygen>' +
    '<label id=label1></label>' +
    '<meter id=meter1></meter>' +
    '<object id=object1></object>' +
    '<output id=output1></output>' +
    '<progress id=progress1></progress>' +
    '<select id=select1>' +
    '    <optgroup id=optgroup1>group1</optgroup>' +
    '    <option id=option1>option1</option>' +
    '</select>' +
    '<textarea id=textarea1></textarea>' +
    '</fieldset> </form>';

var owner = document.getElementById('fs');

shouldBe('owner.elements.length', '23');
shouldBe('owner.elements[0].id', "'button1'");
shouldBe('owner.elements[1].id', "'fieldset1'");
shouldBe('owner.elements[2].id', "'inputhidden'");
shouldBe('owner.elements[3].id', "'inputtext'");
shouldBe('owner.elements[4].id', "'inputsearch'");
shouldBe('owner.elements[5].id', "'inputurl'");
shouldBe('owner.elements[6].id', "'inputemail'");
shouldBe('owner.elements[7].id', "'inputpassword'");
shouldBe('owner.elements[8].id', "'inputdate'");
shouldBe('owner.elements[9].id', "'inputnumber'");
shouldBe('owner.elements[10].id', "'inputrange'");
shouldBe('owner.elements[11].id', "'inputcolor'");
shouldBe('owner.elements[12].id', "'inputcheckbox'");
shouldBe('owner.elements[13].id', "'inputradio'");
shouldBe('owner.elements[14].id', "'inputfile'");
shouldBe('owner.elements[15].id', "'inputsubmit'");
shouldBe('owner.elements[16].id', "'inputimage'");
shouldBe('owner.elements[17].id', "'inputreset'");
shouldBe('owner.elements[18].id', "'inputbutton'");
shouldBe('owner.elements[19].id', "'object1'");
shouldBe('owner.elements[20].id', "'output1'");
shouldBe('owner.elements[21].id', "'select1'");
shouldBe('owner.elements[22].id', "'textarea1'");

var newElement = document.createElement("input");
newElement.setAttribute("type", "text");
newElement.setAttribute("value", "new element");
newElement.setAttribute("id", "inputcommon");

debug("");
debug("Check elements array is updated after adding a new element");
shouldBe('owner.appendChild(newElement); owner.elements.length', '24');

debug("");
debug("Check elements array is updated after remove an element");
shouldBe('owner.removeChild(newElement); owner.elements.length', '23');

debug("");
debug("Check owner.elements is updated properly");
shouldBe('document.getElementById("inputfile").type="image"; owner.elements.length', '23');

debug("");
debug("Check owner.elements is updated properly after removing from parent");
owner.parentNode.removeChild(owner);
var form = document.getElementById("formElement");
shouldBe('form.appendChild(newElement); form.elements.length', '1');
shouldBe('form.removeChild(newElement); form.elements.length', '0');
shouldBe('owner.elements.length', '23');
shouldBe('owner.appendChild(newElement); owner.elements.length', '24');
shouldBe('owner.removeChild(newElement); owner.elements.length', '23');

container.parentNode.removeChild(container);
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
