var magicToolboxLinks = [];
var optionLabels = {};
//var magicToolboxOptionTitles = '';defined in header.phtml
var allowMagicToolboxChange = true;

function MagicToolboxPrepareOptions() {
    var container = document.getElementById('MagicToolboxSelectorsContainer');
    if(container) magicToolboxLinks = container.getElementsByTagName('a');
    //for configurable products
    if(typeof spConfig != 'undefined' && typeof spConfig.config.attributes != 'undefined') {
        for(var attributeID in spConfig.config.attributes) {
            optionLabels[attributeID] = {};
            for(var optionID in spConfig.config.attributes[attributeID].options) {
                var option = spConfig.config.attributes[attributeID].options[optionID];
                if(typeof option == 'object') {
                    optionLabels[attributeID][option.id] = option.label.replace(/(^\s+)|(\s+$)/g, "")/*.replace(/"/g, "'")*/.toLowerCase();
                }
            }
        }
    }
    //if(typeof opConfig != 'undefined') { opConfig.reloadPrice();
}

function MagicToolboxClickElement(element, eventType, eventName) {
    var event;
    if (document.createEvent) {
        event = document.createEvent(eventType);
        event.initEvent(eventName, true, true);
        element.dispatchEvent(event);
    } else {
        event = document.createEventObject();
        event.eventType = eventType;
        element.fireEvent('on' + eventName, event);
    }
    return event;
}

function MagicToolboxChangeOption(element, optionTitle) {
    if(!allowMagicToolboxChange) {
        allowMagicToolboxChange = true;
        return;
    }
    for(var i = 0, l = magicToolboxOptionTitles.length; i < l; i++) {
        if(magicToolboxOptionTitles[i] == optionTitle) {
            var id = '';
            if(element.type == 'radio' && element.checked) {
                id = element.name.replace('options[', '').replace(']', '');
            } else if(element.type == 'select-one') {
                id = element.id.replace('select_', '').replace('attribute', '');
            } else {
                break;
            }
            if(element.value == '' || (typeof optionLabels[id][element.value] == 'undefined')) {
                break;
            }
            var label = optionLabels[id][element.value];
            for(var j = 0, linksLength = magicToolboxLinks.length; j < linksLength; j++) {
                if(magicToolboxLinks[j].firstChild.getAttribute('alt').replace(/(^\s+)|(\s+$)/g, "")/*.replace(/"/g, "'")*/.toLowerCase() == label) {
                    allowMagicToolboxChange = false;
                    MagicToolboxClickElement(magicToolboxLinks[j], 'MouseEvents', MagicToolbox_click);
                    break;
                }
            }
            break;
        }
    }

}

function MagicToolboxChangeSelector(a) {
    if(!allowMagicToolboxChange) {
        allowMagicToolboxChange = true;
        return;
    }
    var label = a.firstChild.getAttribute('alt').replace(/(^\s+)|(\s+$)/g, "").toLowerCase();
    var reloadPrice = false;
    for(var optionID in optionLabels) {
        for(var optionValue in optionLabels[optionID]) {
            if(optionLabels[optionID][optionValue] == label) {
                var elementNames = ['options['+optionID+']', 'super_attribute['+optionID+']'];
                for(var elementNameIndex = 0, elementNamesLength = elementNames.length; elementNameIndex < elementNamesLength; elementNameIndex++) {
                    var elements = document.getElementsByName(elementNames[elementNameIndex]);
                    for(var i = 0, l = elements.length; i < l; i++) {
                        if(elements[i].type == 'radio') {
                            if(elements[i].value == optionValue) {
                                var radios = document.getElementsByName(elements[i].name);
                                for(var radioIndex = 0, radiosLength = radios.length; radioIndex < radiosLength; radioIndex++) {
                                    radios[radioIndex].checked = false;
                                }
                                elements[i].checked = true;
                                allowMagicToolboxChange = false;
                                MagicToolboxClickElement(elements[i], 'Event', 'click');
                                return;
                            }
                        } else if(elements[i].type == 'select-one') {
                            if(elements[i].options) {
                                for(var j = 0, k = elements[i].options.length; j < k; j++) {
                                    if(elements[i].options[j].value == optionValue) {
                                        elements[i].value = elements[i].options[j].value;
                                        elements[i].selectedIndex = j;
                                        allowMagicToolboxChange = false;
                                        MagicToolboxClickElement(elements[i], 'Event', 'change');
                                        return;
                                    }
                                }
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }
    }
}

