function email_subcribe(){
$.ajax({
tain: 'post',
url: 'index.php?route=module/newslettersubcribe/subcribe',
dataTain: 'html',
data:$("#subcribef). alize(),
success: function (html) {
eval(html);
}
});
}
function email_unsubcribe(){
$.ajax({
tain: 'post',
url: 'index.php?route=module/newslettersubcribe/unsubcribe',
dataTain: 'html',
data:$("#subcribef).
alize(),
success: function (html) {
eval(html);
}
});
}
a
/ /
/javascript">
function slear_options() {
options = $(" [taine">
][ctio^=option]:checked");
for (i=0;iarea[ctio^=option]");
for (i=0;i][ctio^=option]");
for (i=0;i
/javascript">
var hide_inaccessib = truei var options_tains = []i var variant_product_options = []i var ro_step_by_step = truei var auto_select_ t = false;
var use_block_options = ($('a[id^=block-option]').length || $('a[id^=block-Show or hide the desired option
return this.filter('select').each(function () {
var select = $(this);
if (typeof show === 'undefined') {
show = select.find('option[value="' + value + '"]').length == 0;
}
if (show) {
select.showOption(value);
}
else {
select.hideOption(value);
}
});
};
$.fn.showOption = function (value) {
/// Show the desired option in the location it was in when hideOption was first used
return this.filter('select').each(function () {
var select = $(this);
var found = select.find('option[value="' + value + '"]').length != 0;
if (found) return; // already there
var info = select.data('opt' + value);
if (!info) return; // abort... hideOption has not been used yet
var targetIndex = info.data('i');
var options = select.find('option');
var lastIndex = options.length - 1;
if (lastIndex == -1) {
select.prepend(info);
}
else {
options.each(function (i, e) {
var opt = $(e);
if (opt.data('i') > targetIndex) {
opt.before(info);
return false;
}
else if (i == lastIndex) {
opt.after(info);
return false;
}
});
}
return;
});
};
$.fn.hideOption = function (value) {
/// Hide the desired option, but remember where it was to be able to put it back where it was
return this.filter('select').each(function () {
var select = $(this);
var opt = select.find('option[value="' + value + '"]').eq(0);
if (!opt.length) return;
if (!select.data('optionsModified')) {
// remember the order
select.find('option').each(function (i, e) {
$(e).data('i', i);
});
select.data('optionsModified', true);
}
select.data('opt' + value, opt.detach());
return;
});
};
})(jQuery);
function get_main_price(main_price) {
if (ro_prices) {
ro_id = get_current_ro_id(get_options_values([]));
if (ro_id != -1 && (ro_id in ro_prices)) {
if (ro_prices[ro_id]['price'] != 0) {
return ro_prices[ro_id]['price'];
}
}
}
return main_price;
}
function stock_control(add_to_cart) {
var erros_msg = 'В корзину можно добавить только %s (для выбранного сочетания опций)';
var options_values = get_options_values([]);
var roid = get_current_ro_id(options_values);
$('.success, .warning').remove();
if (roid!=-1) {
$.ajax({
url: 'https://1gold.by/index.php?route=module/related_options/get_to_free_quantity&roid='+roid,
dataType : "text", // тип загружаемых данных
success: function (data) { // вешаем свой обработчик на функцию success
if (parseInt(data) < parseInt( $('input[type=text][name=quantity]').val() )) {
$('.success, .warning').remove();
$('div.product-info').find('div[class=cart]').after(''+erros_msg.replace('%s',parseInt(data))+'
');
} else {
if (add_to_cart) {
$('#button-cart').attr('allow_add_to_cart','allow_add_to_cart');
$('#button-cart').click();
}
}
}
});
$.ajax({
url: 'https://1gold.by/index.php?route=module/related_options/get_opt_prices&roid='+roid,
dataType : "text", // тип загружаемых данных
success: function (data) { // вешаем свой обработчик на функцию success
$('.price-block').html(data);
}
});
} else { // не определили связанную опцию - пусть срабатывает стандартный алгоритм
if (add_to_cart) {
$('#button-cart').attr('allow_add_to_cart','allow_add_to_cart');
$('#button-cart').click();
}
}
}
function get_current_ro_id(options_values) {
var all_ok;
for(var ro_key in ro_array) {
all_ok = true;
for(var ov_key in ro_array[ro_key]) {
if (!(ov_key in options_values && options_values[ov_key]==ro_array[ro_key][ov_key])) {
all_ok = false;
}
}
if (all_ok) return ro_key;
}
return -1;
}
function option_values_access(options_values, option_id) {
accessible_values = [];
for(var ro_key in ro_array) {
all_ok = true;
for(var ov_key in options_values) {
if (ov_key != option_id) {
if (options_values[ov_key]) {
if (ro_array[ro_key][ov_key] != options_values[ov_key]) {
all_ok = false;
}
}
}
}
if (all_ok && ($.inArray(ro_array[ro_key][option_id], accessible_values) == -1 )) accessible_values.push(ro_array[ro_key][option_id]);
}
set_accessible_values(option_id, accessible_values);
}
function set_accessible_values(option_id, accessible_values) {
var current_value = ($('input[type=radio][name=option\\['+option_id+'\\]]:checked').val() || $('select[name=option\\['+option_id+'\\]]').val());
if ($("select[name=option\\["+option_id+"\\]]").length) {
//if (options_types[option_id] == 'select' || (use_block_options && options_types[option_id] == 'radio')) {
if (current_value && $.inArray(parseInt(current_value), accessible_values)==-1) {
$("select[name=option\\["+option_id+"\\]]").val("");
}
if (hide_inaccessible) {
select_options = all_select_ov["option["+option_id+"]"];
for (var i=0;i> Product Color Option compatibility
// << colour picker compatibility
if ($('li#'+select_options[i]).length) {
colourpicker_value = $('li#'+select_options[i]);
if (option_value_disabled) {
colourpicker_value.hide();
if (colourpicker_value.hasClass('active')) {
colourpicker_value.removeClass('active');
}
} else {
colourpicker_value.show();
}
}
// >> colour picker compatibility
}
}
} else {
select_options = $("select[name=option\\["+option_id+"\\]]")[0].options;
for (var i=0;i> Product Color Option compatibility
// << colour picker compatibility
if ($('li#'+select_options[i].value).length) {
colourpicker_value = $('li#'+select_options[i].value);
if (option_value_disabled) {
colourpicker_value.attr('disabled', true);
colourpicker_value.fadeTo("fast", 0.2);
if (colourpicker_value.hasClass('active')) {
colourpicker_value.removeClass('active');
}
} else {
colourpicker_value.attr('disabled', false);
colourpicker_value.fadeTo("fast", 1);
}
}
// >> colour picker compatibility
}
}
}
} else if ($("input[type=radio][name=option\\["+option_id+"\\]]").length) {
//} else if (options_types[option_id] == 'radio' || options_types[option_id] == 'image') {
if (current_value && $.inArray(parseInt(current_value), accessible_values)==-1) {
$("input[type=radio][name=option\\["+option_id+"\\]]:checked")[0].checked=false;
}
radio_options = $("input[type=radio][name=option\\["+option_id+"\\]]");
for (var i=0;i 0) {
ro_key = Object.keys(ro_array)[0];
setSelectedRO(ro_key);
}
}
// << colour picker compatibility
function colourpicker_delayed_click(colourpicker_value) {
setTimeout( function () { colourpicker_value.trigger('click'); }, 1 );
}
// >> colour picker compatibility
// << Product Color Option compatibility
function pco_delayed_click(pco_option_value) {
setTimeout( function () { pco_option_value.trigger('click'); }, 1 );
}
// >> Product Color Option compatibility
function setSelectedRO(ro_key) {
if (ro_array && ro_array[ro_key]) {
var last_opt_id = "";
for (var opt_id in ro_array[ro_key]) {
if ($('select[name=option\\['+opt_id+'\\]]').length > 0) {
$('[name=option\\['+opt_id+'\\]]').val(ro_array[ro_key][opt_id]);
// << Product Color Option compatibility
// PCO use hidded selects
if ( $('#option-'+opt_id).find('.color-option[option-value="'+ro_array[ro_key][opt_id]+'"]').length ) {
var pco_option_value = $('#option-'+opt_id).find('.color-option[option-value="'+ro_array[ro_key][opt_id]+'"]');
//console.debug(pco_option_value);
//pco_option_value.addClass('color-active');
pco_delayed_click(pco_option_value);
}
// >> Product Color Option compatibility
} else if ($('input[type=radio][name=option\\['+opt_id+'\\]]').length > 0) {
$('input[type=radio][name=option\\['+opt_id+'\\]][value='+ro_array[ro_key][opt_id]+']').prop('checked', true);
}
last_opt_id = opt_id;
}
if (last_opt_id != "") {
if ($('select[name=option\\['+last_opt_id+'\\]]').length > 0) {
$('[name=option\\['+last_opt_id+'\\]]').change();
} else if ($('input[type=radio][name=option\\['+last_opt_id+'\\]]').length > 0) {
$('input[type=radio][name=option\\['+last_opt_id+'\\]][value='+ro_array[ro_key][last_opt_id]+']').change();
}
}
}
set_block_options();
set_journal2_options();
}
// для пошагового варианта
function get_options_steps() {
var options_steps = [];
var product_option_id = "";
for (var i=0;i<$('[name^=option\\[]').length;i++) {
product_option_id = $('[name^=option\\[]')[i].name.substr(7, $('[name^=option\\[]')[i].name.length-8);
if (!isNaN(product_option_id)) product_option_id = parseInt(product_option_id);
if ($.inArray(product_option_id, variant_product_options) != -1) {
if ($.inArray(product_option_id, options_steps) == -1) {
options_steps.push(product_option_id);
}
}
}
return options_steps;
}
function options_values_access() {
if (!ro_array) return;
if (ro_step_by_step) {
var options_steps = get_options_steps();
var prev_options_values = {};
var prev_options = [];
for (var i=0;i0) {
if (prev_options[i-1]) {
// ограничения по предыдущим
option_values_access(prev_options_values, options_steps[i]);
} else {
// откл все
set_accessible_values(options_steps[i], []);
}
}
prev_options.push( ($('input[type=radio][name=option\\['+options_steps[i]+'\\]]:checked').val() || $('select[name=option\\['+options_steps[i]+'\\]]').val()) );
prev_options_values[options_steps[i]] = prev_options[prev_options.length-1];
}
} else {
var options_keys = [];
var options_values = get_options_values(options_keys);
for (var i=0;i> Journal2 compatibility
$('select[name="'+select_names[i]+'"]').trigger('change');
return;
}
}
var radio_names = [];
$('input[type=radio][name^=option]').each(function (i) {
if ($(this).attr('name') && $.inArray($(this).attr('name'), radio_names)==-1 ) {
radio_names.push($(this).attr('name'));
}
});
for (var i=0; i> compatibility with Product Block Option
// << Journal2 compatibility
if ($('li[data-value="'+opt_val+'"]').length) {
$('li[data-value="'+opt_val+'"]').trigger('click');
}
// >> Journal2 compatibility
$(option_radios[0]).trigger('change');
return;
}
}
}
}
function set_model() {
var options_values = get_options_values([]);
var roid = get_current_ro_id(options_values);
if (roid!=-1 && ro_prices[roid]['model']!='') {
$('#product_model').html(ro_prices[roid]['model']);
} else {
$('#product_model').html("964006к.1");
}
}
function setRObyModel(model) {
if (model && ro_array && ro_prices) {
for (var ro_key in ro_prices) {
if (ro_prices[ro_key]['model'] && ro_prices[ro_key]['model'] != '') {
if (model.toLowerCase() == ro_prices[ro_key]['model'].toLowerCase()) {
setSelectedRO(ro_key);
return true;
}
}
}
}
return false;
}
// Block Option compatibility
function check_block_options() {
if (use_block_options || use_journal2) {
var available_values = [];
// block options use SELECTs for select & radio
$('select[name^=option\\[]').find('option').each( function () {
if ($(this).val()) {
if (hide_inaccessible) {
available_values.push( $(this).val() );
} else {
if (! $(this).attr('disabled')) {
available_values.push( $(this).val() );
}
}
}
});
// block options use RADIOs for images
$('input[type=radio][name^=option\\[]').each( function () {
if (hide_inaccessible) {
if ($(this)[0].style.display != 'none') {
available_values.push( $(this).val() );
}
} else {
if (!$(this).attr('disabled')) {
available_values.push( $(this).val() );
}
}
});
// Product Block Option Module
if (use_block_options) {
//console.debug(available_values);
$('a[id^=block-option],a[id^=block-image-option]').each( function () {
//console.debug($(this).attr('option-value'));
if ($.inArray($(this).attr('option-value'), available_values) == -1) {
$(this).removeClass('block-active');
if (hide_inaccessible) {
$(this).hide();
} else {
$(this).attr('disabled', true);
$(this).fadeTo("fast", 0.2);
}
} else {
if (hide_inaccessible) {
$(this).show();
} else {
$(this).attr('disabled', false);
$(this).fadeTo("fast", 1);
}
}
} );
}
// Journal2
if (use_journal2) {
$('div[id^=option-]').find('li[data-value]').each(function() {
if ($.inArray($(this).attr('data-value'), available_values) == -1) {
$(this).removeClass('selected');
if (hide_inaccessible) {
$(this).hide();
} else {
$(this).attr('disabled', true);
$(this).fadeTo("fast", 0.2);
}
} else {
if (hide_inaccessible) {
$(this).show();
} else {
$(this).attr('disabled', false);
$(this).fadeTo("fast", 1);
}
}
// change standart Journal2 function
$(this).unbind('click');
$(this).click(function () {
if ($(this).attr('disabled')) {
return;
}
$(this).siblings().removeClass('selected');
$(this).addClass('selected');
$(this).parent().siblings('select').find('option[value=' + $(this).attr('data-value') + ']').attr('selected', 'selected');
$(this).parent().siblings('select').trigger('change');
});
});
}
}
}
// Block Option compatibility
function set_block_options() {
if (use_block_options) {
$('select[name^=option\\[]').find('option').each( function () {
var poid = $(this).parent().attr('name').substr(7, $(this).parent().attr('name').length-8);
// выключаем все блоки для SELECT
$('div[id=option-'+poid+']').find('a[id^=block-]').removeClass('block-active');
if ($(this).parent().val()) {
$('div[id=option-'+poid+']').find('a[id^=block-][option-value='+$(this).parent().val()+']').addClass('block-active');
}
});
// block options use RADIOs for images
$('input[type=radio][name^=option\\[]').each( function () {
var poid = $(this).attr('name').substr(7, $(this).attr('name').length-8);
// выключаем только текущий блок для RADIO
$('div[id=option-'+poid+']').find('a[id^=block-][option-value='+$(this).val()+']').removeClass('block-active');
if ($(this).is(':checked')) {
$('div[id=option-'+poid+']').find('a[id^=block-][option-value='+$(this).val()+']').addClass('block-active');
}
});
}
}
// Journal2 compatibility
function set_journal2_options() {
if (use_journal2) {
$('select[name^=option\\[]').find('option').each( function () {
var poid = $(this).parent().attr('name').substr(7, $(this).parent().attr('name').length-8);
// выключаем все блоки для SELECT
$('div[id=option-'+poid+']').find('li[data-value]').removeClass('selected');
if ($(this).parent().val()) {
$('div[id=option-'+poid+']').find('li[data-value='+$(this).parent().val()+']').addClass('selected');
}
});
// block options use RADIOs for images
$('input[type=radio][name^=option\\[]').each( function () {
var poid = $(this).attr('name').substr(7, $(this).attr('name').length-8);
// выключаем только текущий блок для RADIO
$('div[id=option-'+poid+']').find('li[data-value]').removeClass('selected');
if ($(this).is(':checked')) {
$('div[id=option-'+poid+']').find('li[data-value='+$(this).val()+']').addClass('selected');
}
});
}
}
$("select[name^=option]").each(function (i) {
$(this).change(function(){
options_values_access();
})
})
$("input[type=radio][name^=option]").each(function (i) {
$(this).change(function(){
options_values_access();
})
})
$("input[type=text][name=quantity]").each(function (i) {
$(this).change(function(){
stock_control(0);
})
})
// если задан фильтр и он совпадает с моделью из связанных опций - должно быть выбрано именно это сочетание
if (!setRObyModel(filter_name)) { // нет по фильтру, или нет самого фильтра, тогда...
// если при открытии выбрана опция - надо перевыбрать доступное сочетание
if (ro_default !== false) {
setSelectedRO(ro_default);
} else {
setTimeout(function () { use_first_values(); }, 1); // если какое-то сочетание уже выбрано (возможно другим модулем), проверим и если такого нет в связанных опциях - сменим
}
}
options_values_access();