http://bitdefender.techcommerce.co.il/index.php/bitdefender/total-security-2015.html
Here I have two selects: on top and on the bottom of page. If you change any select, there will be no changes because there are two selects with same ID's and they creates confusion in JS. Please, if someone know how to fix this problem, help me with it.
Here is a code. You can find it at the page too )
Product.Options = Class.create();
Product.Options.prototype = {
initialize : function(config) {
this.config = config;
this.reloadPrice();
document.observe("dom:loaded", this.reloadPrice.bind(this));
},
reloadPrice : function() {
var config = this.config;
var skipIds = [];
$$('body .product-custom-option').each(function(element){
var optionId = 0;
element.name.sub(/[0-9]+/, function(match){
optionId = parseInt(match[0], 10);
});
if (config[optionId]) {
var configOptions = config[optionId];
var curConfig = {price: 0};
if (element.type == 'checkbox' || element.type == 'radio') {
if (element.checked) {
if (typeof configOptions[element.getValue()] != 'undefined') {
curConfig = configOptions[element.getValue()];
}
}
} else if(element.hasClassName('datetime-picker') && !skipIds.include(optionId)) {
dateSelected = true;
$$('.product-custom-option[id^="options_' + optionId + '"]').each(function(dt){
if (dt.getValue() == '') {
dateSelected = false;
}
});
if (dateSelected) {
curConfig = configOptions;
skipIds[optionId] = optionId;
}
} else if(element.type == 'select-one' || element.type == 'select-multiple') {
if ('options' in element) {
$A(element.options).each(function(selectOption){
if ('selected' in selectOption && selectOption.selected) {
if (typeof(configOptions[selectOption.value]) != 'undefined') {
curConfig = configOptions[selectOption.value];
}
}
});
}
} else {
if (element.getValue().strip() != '') {
curConfig = configOptions;
}
}
if(element.type == 'select-multiple' && ('options' in element)) {
$A(element.options).each(function(selectOption) {
if (('selected' in selectOption) && typeof(configOptions[selectOption.value]) != 'undefined') {
if (selectOption.selected) {
curConfig = configOptions[selectOption.value];
} else {
curConfig = {price: 0};
}
optionsPrice.addCustomPrices(optionId + '-' + selectOption.value, curConfig);
optionsPrice.reload();
}
});
} else {
optionsPrice.addCustomPrices(element.id || optionId, curConfig);
optionsPrice.reload();
}
}
});
}
}
var opConfig = new Product.Options(<?php echo $this->getJsonConfig() ?>);