(function(_, $) {
var url_prefix = 'http://';
var methods = {
dispatch_quick_menu_event: function(e) {
var jelm = $(e.target);
if (e.type == 'click' && $.browser.mozilla && e.which != 1) {
return true;
}
if (e.type == 'click') {
if (jelm.hasClass('cm-delete-section') && jelm.parents('#quick_menu').length) {
var root = jelm.parents('tr:first');
$.ceAjax('request', fn_url('tools.remove_quick_menu_item'), {data: {id: root.data('caQmItem'), parent_id: root.data('caQmParentId')}, result_ids: 'quick_menu', callback: 'ce.quick_menu_content_switch_callback'});
} else if (jelm.hasClass('cm-add-link') && jelm.parents('#quick_menu').length) {
methods.show_quick_box('', jelm.parents('tr:first').data('caQmItem'), '', url_prefix, '', 'new_link');
return false;
} else if (jelm.hasClass('cm-add-section') && jelm.parents('#quick_menu').length) {
methods.show_quick_box('', 0, '', '', '', 'new_section');
return false;
} else if (jelm.hasClass('cm-update-item') && jelm.parents('#quick_menu').length) {
var root = jelm.parents('tr:first');
var name_holder = $('.cm-qm-name:first', root);
var title = "editing_quick_menu_section";
if (Number(root.data('caQmParentId'))) {
title = "editing_quick_menu_link";
}
methods.show_quick_box(root.data('caQmItem'), Number(root.data('caQmParentId')), name_holder.text(), (name_holder.prop('href') ? name_holder.prop('href') : ''), root.data('caQmPosition'), title);
return false;
} else if (jelm.prop('id') == 'qm_current_link') {
$('#qm_item_link').val(location.href);
return false;
} else if (jelm.hasClass('cm-lang-link') && jelm.parents('.cm-select-list').length) {
methods.change_language(jelm.data('caName'));
$.ceAjax('request', jelm.prop('href'), {data: {id: $('#qm_item_id').val()}, caching: false, callback: methods.change_quick_box});
jelm.parents('.cm-popup-box:first').hide();
return false;
} else if (jelm.hasClass('cm-qm-show-hide')) {
$.ceAjax('request', fn_url('tools.update_quick_menu_handler?enable=') + (jelm.prop('checked') ? 'Y' : 'N'), {
cache: false,
result_ids: 'quick_menu',
callback: 'ce.quick_menu_content_switch_callback'
});
}
}
},
change_language: function(lang_code) {
var sl = $('#quick_menu_language_selector');
if (sl.children().length) {
var jelm = $('a[name=' + lang_code +']', sl);
$('a.dropdown-toggle', sl).html(' ' + jelm.text() + ' '); // set new text
$('#qm_descr_sl').val(lang_code); // change descriptions language
}
},
change_quick_box: function(data) {
$('#qm_item_name').val(data.description);
},
show_quick_box: function(id, parent_id, name, url, pos, title) {
var quick_box = $('#quick_box');
title = _.tr(title);
$('#qm_item_id').val(id);
$('#qm_item_parent').val(parent_id);
$('#qm_item_name').val(name);
$('#qm_item_link').val(url);
$('#qm_item_position').val(pos);
methods.change_language(_.cart_language);
var sl = $('#quick_menu_language_selector');
if (sl.children().length) {
$('ul.cm-select-list a', sl).addClass('cm-lang-link');
}
var link_holder = $('#qm_item_link').parents('.control-group:first');
if (parent_id) {
link_holder.show();
$('label', link_holder).addClass('cm-required');
$('#qm_current_link').parents('.control-group:first').show();
} else {
link_holder.hide();
$('label', link_holder).removeClass('cm-required');
$('#qm_current_link').parents('.control-group:first').hide();
}
quick_box.ceDialog('open', {
title: title,
height: 'auto',
width: '500px'
});
}
};
$(_.doc).on('click', function(e) {
return methods.dispatch_quick_menu_event(e);
});
$.ceEvent('on', 'ce.formpost_quick_menu_form', function() {
$('#quick_box').ceDialog('close');
$ceEvent('trigger', 'ce.quick_menu_content_switch_callback');
});
$.ceEvent('on', 'ce.quick_menu_content_switch_callback', function() {
var container = $('#quick_menu_content');
var scroll_elm = $('.menu-container', container);
var elm = $('#sw_quick_menu_content').get(0);
var w = $.getWindowSizes();
var offset = container.offset();
var max_height = offset.top - w.offset_y > w.view_height / 2 ? offset.top - w.offset_y - elm.offsetHeight: w.offset_y + w.view_height - offset.top;
if (container.get(0).offsetHeight > max_height) {
var diff = container.get(0).offsetHeight - scroll_elm.get(0).offsetHeight;
scroll_elm.css('height', max_height - diff - 10 + 'px');
}
});
$.ceEvent('on', 'ce.switch_quick_menu_content', function(flag) {
if (!flag) {
$.ceEvent('trigger', 'ce.quick_menu_content_switch_callback');
}
});
})(Tygh, Tygh.$);