/**
  * Registers required script for the plugin to work as DatePicker
  */
 public function registerClientScript()
 {
     $js_datepicker = [];
     $view = $this->getView();
     // @codeCoverageIgnoreStart
     if ($this->language !== null) {
         $this->clientOptions['language'] = $this->language;
         DatePickerMaskedWidgetLanguageAsset::register($view)->js[] = 'bootstrap-datepicker.' . $this->language . '.min.js';
     } else {
         DatePickerMaskedWidgetAsset::register($view);
     }
     // @codeCoverageIgnoreEnd
     $id = $this->options['id'];
     //the id of the element where to place the datepicker & inputmask
     $selector = ";jQuery('#{$id}')";
     if ($this->addon || $this->inline) {
         $selector .= ".parent()";
     }
     $options = !empty($this->clientOptions) ? Json::encode($this->clientOptions) : '';
     if ($this->inline) {
         $this->clientEvents['changeDate'] = "function (e){ jQuery('#{$id}').val(e.format());}";
     }
     $js_datepicker[] = "{$selector}.datepicker({$options});";
     if (!empty($this->clientEvents)) {
         foreach ($this->clientEvents as $event => $handler) {
             $js_datepicker[] = "{$selector}.on('{$event}', {$handler});";
         }
     }
     /* end of DatePicker registration */
     /*********************** maskedInput *************************/
     $js_mask = '';
     $view = $this->getView();
     $this->initMaskOptions();
     //MaskedInput
     if (!empty($this->mask)) {
         $this->maskOptions['mask'] = $this->mask;
     }
     $this->hashPluginOptions($view);
     if (is_array($this->definitions) && !empty($this->definitions)) {
         $js_mask .= '$.extend($.' . self::PLUGIN_NAME . '.defaults.definitions, ' . Json::htmlEncode($this->definitions) . ");\n";
     }
     if (is_array($this->aliases) && !empty($this->aliases)) {
         $js_mask .= '$.extend($.' . self::PLUGIN_NAME . '.defaults.aliases, ' . Json::htmlEncode($this->aliases) . ");\n";
     }
     $id2 = $this->options['id'];
     $js_mask .= '$("#' . $id2 . '").' . self::PLUGIN_NAME . "(" . $this->_hashVar . ");\n";
     /* end of maskedInput code*/
     /*********** end result for both **********/
     $js_datepicker = implode("\n", $js_datepicker);
     $js_result = $js_datepicker . $js_mask;
     $view->registerJS($js_result);
 }
 /**
  * Registers required script for the plugin to work as DateRangePicker
  */
 public function registerClientScript()
 {
     $js_datepicker = [];
     $view = $this->getView();
     // @codeCoverageIgnoreStart
     if ($this->language !== null) {
         $this->clientOptions['language'] = $this->language;
         DatePickerMaskedWidgetLanguageAsset::register($view)->js[] = 'bootstrap-datepicker.' . $this->language . '.min.js';
     } else {
         DateRangePickerMaskedWidgetAsset::register($view);
     }
     // @codeCoverageIgnoreEnd
     $id = $this->options['id'];
     $selector = ";jQuery('#{$id}').parent()";
     if ($this->form && $this->hasModel()) {
         // @codeCoverageIgnoreStart
         $selector .= '.parent()';
         $class = "field-" . Html::getInputId($this->model, $this->attribute);
         $js_datepicker[] = "{$selector}.closest('.{$class}').removeClass('{$class}');";
         // @codeCoverageIgnoreEnd
     }
     $options = !empty($this->clientOptions) ? Json::encode($this->clientOptions) : '';
     $js_datepicker[] = "{$selector}.datepicker({$options});";
     // @codeCoverageIgnoreStart
     if (!empty($this->clientEvents)) {
         foreach ($this->clientEvents as $event => $handler) {
             $js_datepicker[] = "{$selector}.on('{$event}', {$handler});";
         }
     }
     /*********************** maskedInput *************************/
     $js_mask = '';
     $view = $this->getView();
     $this->initMaskOptions();
     //MaskedInput
     if (!empty($this->mask)) {
         $this->maskOptions['mask'] = $this->mask;
     }
     $this->hashPluginOptions($view);
     if (is_array($this->definitions) && !empty($this->definitions)) {
         $js_mask .= '$.extend($.' . self::PLUGIN_NAME . '.defaults.definitions, ' . Json::htmlEncode($this->definitions) . ");\n";
     }
     if (is_array($this->aliases) && !empty($this->aliases)) {
         $js_mask .= '$.extend($.' . self::PLUGIN_NAME . '.defaults.aliases, ' . Json::htmlEncode($this->aliases) . ");\n";
     }
     $id2 = $this->options['id'];
     $js_mask .= '$("#' . $id2 . '").' . self::PLUGIN_NAME . "(" . $this->_hashVar . ");\n";
     $js_mask .= '$(".w1").' . self::PLUGIN_NAME . "(" . $this->_hashVar . ");\n";
     /* end of maskedInput code*/
     /*********** end result for both **********/
     $js_datepicker = implode("\n", $js_datepicker);
     $js_result = $js_datepicker . $js_mask;
     // @codeCoverageIgnoreEnd
     $view->registerJS($js_result);
 }