<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description('Test the behavior of multiple base elements.');

var originalBase = document.URL.replace(/[^/]*$/, "");

function clean(url)
{
    if (url.length < originalBase.length)
        return url;
    if (url.substring(0, originalBase.length) !== originalBase)
        return url;
    return "http://originalbase.com/" + url.substring(originalBase.length);
}

var anchor = document.createElement('a');
anchor.href = "file";

document.body.appendChild(anchor);

shouldBe("clean(anchor.href)", "'http://originalbase.com/file'");

var base = document.createElement('base');
base.href = "http://domain.com/base/";

shouldBe("document.head.appendChild(base), clean(anchor.href)", "'http://domain.com/base/file'");
shouldBe("base.href = 'http://domain.com/base-changed/', clean(anchor.href)", "'http://domain.com/base-changed/file'");
shouldBe("document.head.removeChild(base), clean(anchor.href)", "'http://originalbase.com/file'");

base.href = "http://domain.com/base/";

var base2 = document.createElement('base');
base2.href = "http://domain.com/base2/";

var base3 = document.createElement('base');
base3.href = "http://domain.com/base3/";

shouldBe("document.head.appendChild(base), document.head.appendChild(base2), clean(anchor.href)", "'http://domain.com/base/file'");
shouldBe("base.removeAttribute('href'), clean(anchor.href)", "'http://domain.com/base2/file'");
shouldBe("document.head.appendChild(base3), clean(anchor.href)", "'http://domain.com/base2/file'");

document.head.removeChild(base);
document.head.removeChild(base2);
document.head.removeChild(base3);
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>
