if (typeof(Instinct) == 'undefined') {
    var Instinct = window.Instinct || {};
    Instinct.isDebug = Instinct.IsDebug || false;
}
Instinct.KernelDom = Class.create();
Object.extend(Instinct.KernelDom, {
    evalDisplay: function(id, expressionArray) {
        var showHash = new Hash();
        var hideHash = new Hash();
        var value;
        if (typeof(id) == 'function') {
            value = id();
        } else {
            var id2 = $(id);
            if (id2 != null) {
                value = ((id2.type == 'checkbox') || (id2.type == 'radio') ? id2.checked.toString() : id2.value);
            } else {
                if (Instinct.isDebug == true) {
                    throw 'Unable to find [' + id + ']';
                }
                return;
            }
        }
        for (var index = 0; index < expressionArray.length; index += 2) {
            var evalText = expressionArray[index];
            var elementArray = expressionArray[index + 1];
            {
                var isDisplay = eval(evalText);
                if (!(elementArray instanceof Array)) {
                    elementArray = [elementArray];
                }
                elementArray.each(function(id) {
                    var id2 = $(id);
                    if (id2 != null) {
                        if (isDisplay) {
                            if (hideHash.index(id)) {
                                hideHash.unset(id);
                            }
                            showHash.set(id, id2);
                        } else if (!showHash.index(id)) {
                            hideHash.set(id, id2);
                        }
                    } else if (Instinct.isDebug == true) {
                        throw 'Unable to find [' + id + ']';
                    }
                });
            }
        }
        hideHash.values().each(function(element) {
            element.style.display = 'none';
        });
        showHash.values().each(function(element) {
            element.style.display = '';
        });
    }
});
