﻿function configurationQuantityChanged(sender) {
    var parentRow = basket.findFirstParentByTagName(sender, "TR");
    
    var configSiblings = basket.findImmediateSiblingsWithClass(parentRow, "configuration_child_row");
    //Find elements in array
    for(var i = 0; i < configSiblings.length; i++) {
        var qtyTd = basket.findChildWithClass(configSiblings[i], "qty");
        var qtySpans = qtyTd.getElementsByTagName("SPAN");
        if (qtySpans.length > 0)
            qtySpans[0].innerHTML = sender.value;
        var qtyInput = basket.findChildWithAttribute(qtyTd, "type", "text");
        if (qtyInput)
            qtyInput.value = sender.value;
    }
}

function fixInvalidConfiguration(configurationId) {
    var configuratorForm = window.document.forms["configuratorForm"];
    configuratorForm["ConfigurationID"].value = configurationId;
    configuratorForm.submit();
}

var basket = {
    findFirstParentByTagName : function(node, tagName) {
        var found;
        do {
            if (node.parentNode.nodeName == tagName.toUpperCase())
                found = node.parentNode;
            node = node.parentNode;
        } while (!found && node.parentNode)
        return found;
    },
    findImmediateSiblingsWithClass : function(node, className) {
        var found = [];
        var tagName = node.nodeName;
        while (this.findNextNonTextSibling(node).className.indexOf(className) > -1) {
            found.push(this.findNextNonTextSibling(node));
            node = this.findNextNonTextSibling(node);
        }
        return found;
    },
    findChildWithClass : function(node, className) {
        var found;
        if (node.hasChildNodes()) {
             var children = node.childNodes;
             var i = 0;
             do { 
                if (children[i].className  == className)
                    found = children[i];
                i++;
             } while (i < children.length && !found) 
         }
         return found;
    },
    findChildWithAttribute : function (node, attribute, value) {
        var found; 
        if (node.hasChildNodes()) {
            var children = node.childNodes;
            var i = 0;
            do {
                if (children[i].getAttribute && children[i].getAttribute(attribute) == value)
                    found = children[i];
                i++;
            } while (i < children.length && !found)
        }
        return found;
    },
    findNextNonTextSibling: function (node) {
        var result;
        var traverseNode = node;
        while (traverseNode.nextSibling) {
            if (traverseNode.nextSibling.nodeName != "#text") {
                result = traverseNode.nextSibling;
                break;
            }
            traverseNode = traverseNode.nextSibling;
        }
        return result;
    }
}
