/*  buttonfix 0.1 (2008-01-03)
 *  (c) 2008 Goonoo Kim (http://miya.pe.kr/document/ie-button-fix)
 *
 *  buttonfix is under the terms of a GPL(General Public License).
 */

function buttonfix(){
    // olders shut out
    if (!document.getElementsByTagName) return;

    var buttons = document.getElementsByTagName('button');
    for (var i=0; i<buttons.length; i++) {
        if (buttons[i].name) {
            var value;

            // IE5
            if (!document.body.getAttributeNode) {
                var _html = buttons[i].parentNode.innerHTML;
                var _btnFilterPattern = /<BUTTON([^>]+)name=([^ ]+) ([^>]+)>/ig;
                while (_btnFilterPattern.exec(_html)) {
                    if (RegExp.$2 == buttons[i].name) {
                        var _pre = RegExp.$1;
                        var _post = RegExp.$3;
                        var _valueFilterPattern = / value=([^ >]+)/;

                        if (_pre.indexOf(" value=") > -1) {
                            _valueFilterPattern.exec(_pre);
                        } else if (_post.indexOf(" value=") > -1) {
                            _valueFilterPattern.exec(_post);
                        } else {
                            value = "";
                            break;
                        };
                        value = RegExp.$1.replace(/^['"]/, "").replace(/['"]$/, "");
                        break;
                    };
                };
            } else {
                value = buttons[i].getAttributeNode("value").value;
            };

            var alterInput = document.createElement("input");
            alterInput.type = "hidden";
            alterInput.className = "alterInput";
            alterInput.name = buttons[i].name;
            alterInput.value = value;
            buttons[i].removeAttribute("name");
            buttons[i].parentNode.insertBefore(alterInput, buttons[i]);
            buttons[i].attachEvent("onclick", function() {
                var btn = event.srcElement;
                var inputs = btn.form.getElementsByTagName("input");
                for (var i=0, l=inputs.length; i<l; i++) {
                    if (inputs[i].className == "alterInput") {
                        if (inputs[i].nextSibling == btn) {
                            inputs[i].disabled = false;
                        } else {
                            inputs[i].disabled = true;
                        };
                    };
                };
            });
        } else {
            buttons[i].attachEvent("onclick", function() {
                var btn = event.srcElement;
                var inputs = btn.form.getElementsByTagName("input");
                for (var i=0, l=inputs.length; i<l; i++) {
                    if (inputs[i].className == "alterInput") {
                        inputs[i].disabled = true;
                    };
                };
            });
        };
    };

    var inputs = document.getElementsByTagName('input');
    for (var i=0; i<inputs.length; i++) {
        if (inputs[i].type == "submit" || inputs[i].type == "image") {
            inputs[i].attachEvent("onclick", function() {
                var btn = event.srcElement;
                var inputs = btn.form.getElementsByTagName("input");
                for (var i=0, l=inputs.length; i<l; i++) {
                    if (inputs[i].className == "alterInput") {
                        inputs[i].disabled = true;
                    };
                };
            });
        };
    };
};
buttonfix();

