var EXPO = EXPO || {}; //isolated namespace EXPO.organizer = EXPO.organizer || {}; if (EXPO.organizer.add) { console.warn('WARNING: EXPO.eventsFeed is already defined!'); } else { EXPO.organizer.add = (function () { /** * private (visible inside this module only) variables */ /** * @type {Object} - module API interafce realization */ var that = {}; /** * @type {Object} default setting */ that.opt = {}; /** * dependencies.Place where you can switch on dependencies for module * @type {EXPO.common|*} - mostly used in project functions and data (block.common.js) */ var com = EXPO.common; /** * current module general initialization * @param {Object} options - options recieved from web page view */ that.init = function (options) { // settings extending $.extend(this.opt, options); // begin of initialization var self = this; $(function () { /* Если на страницах "Добавить событие" не выбран ни один из типов форму делаем неактивной и наоборот */ $('#'+self.opt.steps[0].id).each(function () { var $form = $(this); var $rads = $form.find('.'+self.opt.steps[0] .typeClass+' input[type="radio"]'); var $formBody = $('.'+self.opt.steps[0].formBodyClass, $form); function formState () { var radsChecked = $rads.filter(':checked').length > 0; var $inputs = $formBody.find('input, select, textarea, button'); var $selectBox = $formBody.find('div.c-select-box'); if (radsChecked) { $formBody.removeClass('disabled'); $selectBox.removeClass('disabled'); $inputs.prop('disabled', false); } else { $formBody.addClass('disabled'); $selectBox.addClass('disabled'); $inputs.prop('disabled', true); } } formState(); $rads.on('change', formState); for(var i =0;i< self.opt.steps[0].dateClasses.length; i++){ $('.'+self.opt.steps[0].dateClasses[i], $form).datepicker({ dateFormat: 'dd.mm.yy', showOn: 'button', showOtherMonths: true, constrainInput: true, onClose: function( selectedDate ) { var $dateInput; if($(this).hasClass('dateFrom')){ $dateInput = $(this).closest('.period').find('.'+self.opt.steps[0].dateClasses[1]); $dateInput.datepicker( "option", "minDate", selectedDate ); }else if($(this).hasClass('dateTo')){ $dateInput = $(this).closest('.period').find('.'+self.opt.steps[0].dateClasses[0]); $dateInput.datepicker( "option", "maxDate", selectedDate ); }else if($(this).hasClass('dateFromLast')){ $dateInput = $form.find('.date-to-date').find('.'+self.opt.steps[0].dateClasses[1]); $dateInput.datepicker( "option", "minDate", selectedDate ); } } }); } }); }); }; return that; }()); }