function fn_change_options(obj_id, id, option_id) { var $ = Tygh.$; // Change cart status var cart_changed = true; var params = []; var update_ids = []; var cache_query = true; var defaultValues = {}; var parents = $('.cm-reload-' + obj_id); $.each(parents, function(id, parent_elm) { var reload_id = $(parent_elm).prop('id'); update_ids.push(reload_id); defaultValues[reload_id] = {}; var elms = $(':input:not([type=radio]):not([type=checkbox])', parent_elm); $.each(elms, function(id, elm) { if (elm.type != 'submit' && elm.type != 'file' && !($(this).hasClass('cm-hint') && elm.value == elm.defaultValue) && elm.name.length != 0) { if (elm.name == 'no_cache' && elm.value) { cache_query = false; } params.push({name: elm.name, value: elm.value}); } }); elms = $(':input', parent_elm); $.each(elms, function(id, elm) { if ($(elm).is('select')) { var elm_id = $(elm).prop('id'); $('option', elm).each(function() { if (this.defaultSelected) { defaultValues[reload_id][elm_id] = this.value; } }); } else if ($(elm).is('input[type=radio], input[type=checkbox]')) { defaultValues[reload_id][elm_id] = elm.defaultChecked; } else { defaultValues[reload_id][elm_id] = elm.defaultValue; } }); }); var radio = $('input[type=radio]:checked, input[type=checkbox]', parents); $.each(radio, function(id, elm) { if ($(elm).prop('disabled')) { return true; } var value = elm.value; if ($(elm).is('input[type=checkbox]:checked')) { if (!$(elm).hasClass('cm-no-change')) { value = $(elm).val(); } } else if ($(elm).is('input[type=checkbox]')) { if (!$(elm).hasClass('cm-no-change')) { value = 'unchecked'; } else { value = ''; } } params.push({name: elm.name, value: value}); }); var url = fn_url('products.options?changed_option[' + id + ']=' + option_id); for (var i = 0; i < params.length; i++) { url += '&' + params[i]['name'] + '=' + encodeURIComponent(params[i]['value']); } $.ceAjax('request', url, { result_ids: update_ids.join(',').toString(), caching: cache_query, force_exec: true, pre_processing: fn_pre_process_form_files, callback: function(data, params) { fn_post_process_form_files(data, params); var parents = $('.cm-reload-' + obj_id); $.each(parents, function(id, parent_elm) { if (data.html[$(parent_elm).prop('id')]) { var reload_id = $(parent_elm).prop('id'); var elms = $(':input', parent_elm); if (defaultValues[reload_id] != null) { $.each(elms, function(id, elm) { var elm_id = $(elm).prop('id'); if (defaultValues[reload_id][elm_id] != null) { if ($(elm).is('select')) { var selected = {}; var is_selected = false; $('option', elm).each(function() { selected[this.value] = this.defaultSelected; this.defaultSelected = (defaultValues[reload_id][elm_id] == this.value) ? true : false; }); $('option', elm).each(function() { this.selected = selected[this.value]; if (this.selected == true) { is_selected = true; } }); if (!is_selected) { $('option', elm).get(0).selected = true; } } else if ($(elm).is('input[type=radio], input[type=checkbox]')) { var checked = elm.defaultChecked; elm.defaultChecked = defaultValues[reload_id][elm_id]; elm.checked = checked; } else { var value = elm.defaultValue; elm.defaultValue = defaultValues[reload_id][elm_id]; elm.value = value; } } }); } } }); }, method: 'post' }); } function fn_set_option_value(id, option_id, value) { var $ = Tygh.$; var elm = $('#option_' + id + '_' + option_id); if (elm.prop('disabled')) { return false; } if (elm.prop('type') == 'select-one') { elm.val(value).change(); } else { elms = $('#option_' + id + '_' + option_id + '_group'); if ($.browser.msie) { $('input[type=radio][value=' + value + ']', elms).prop('checked', true); } $('input[type=radio][value=' + value + ']', elms).click(); } return true; } function fn_pre_process_form_files(data, params) { var $ = Tygh.$; if (data.html) { // Create temporarily div element $(Tygh.body).append('
'); var container = {}; container = $('#file_container'); // Move files blocks to the temporarily created container for (var k in data.html) { $('#' + k + ' .fileuploader ,' + '#' + k + ' .ty-fileuploader').each(function(idx, elm){ var jelm = $(elm); var jparent = jelm.parents('.control-group, .ty-control-group'); jparent.appendTo(container); jparent.prop('id', 'moved_' + jparent.prop('id')); }); } } } function fn_post_process_form_files(data, params) { var $ = Tygh.$; var container = {}; container = $('#file_container'); $('div.control-group, div.ty-control-group', container).each(function(idx, elm){ var jelm = $(elm); var elm_id = jelm.prop('id').replace('moved_', ''); var target = $('#' + elm_id); target.html(''); jelm.children().appendTo(target); }); container.remove(); } function fn_change_variant_image(prefix, opt_id, var_id) { var $ = Tygh.$; var images = $('[id*=variant_image_' + prefix + '_' + opt_id + ']'); images.removeClass('product-variant-image-selected').addClass('product-variant-image-unselected'); if (typeof(var_id) == 'undefined') { var_id = $('select[id*=_' + prefix + '_' + opt_id + ']').val(); } $('[id*=variant_image_' + prefix + '_' + opt_id + '_' + var_id + ']').removeClass('product-variant-image-unselected').addClass('product-variant-image-selected'); }