whole_func_string: function DateTimePicker($mdUtil, $mdMedia, $document, picker) {
      return {
          restrict: 'E',
          require: ['^ngModel', 'smDateTimePicker'],
          scope: {
              weekStartDay: '@',
              startView: '@',
              mode: '@',
              format: '@',
              minDate: '@',
              maxDate: '@',
              fname: '@',
              label: '@',
              isRequired: '@',
              disable: '=',
              noFloatingLabel: '=',
              disableYearSelection: '@',
              closeOnSelect: '@',
              onDateSelectedCall: '&'
          },
          controller: ['$scope', '$element', '$mdUtil', '$mdMedia', '$document','$parse', SMDateTimePickerCtrl],
          controllerAs: 'vm',
          bindToController:true,
          template: function (element, attributes){
              var inputType = '';
              if(attributes.hasOwnProperty('onFocus')) {
                  inputType = '<input name="{{vm.fname}}" ng-model="vm.value" '
                              + 'type="text" placeholder="{{vm.label}}"'
                              + ' aria-label="{{vm.fname}}" ng-focus="vm.show()" data-ng-required="vm.isRequired"  ng-disabled="vm.disable"'
                              + ' server-error class="sm-input-container" />' ;
              } else {
                  inputType = 
                      '<input class="" name="{{vm.fname}}" ng-model="vm.value" '
                      + '             type="text" placeholder="{{vm.label}}" '
                      + '             aria-label="{{vm.fname}}" aria-hidden="true" data-ng-required="vm.isRequired" ng-disabled="vm.disable"/>'
                      + '     <md-button tabindex="-1" class="sm-picker-icon md-icon-button" aria-label="showCalender" ng-disabled="vm.disable" aria-hidden="true" type="button" ng-click="vm.show()">'
                      + '         <svg  fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'
                      + '     </md-button>' ;
              }
  
              return '<md-input-container class="sm-input-container md-icon-float md-block" md-no-float="vm.noFloatingLabel">' +
                      inputType +
                      '     <div id="picker" class="sm-calender-pane md-whiteframe-z2">' +
                      '          <sm-date-picker ' +
                      '              id="{{vm.fname}}Picker" ' +
                      '              initial-date="vm.initialDate"' +
                      '              ng-model="vm.value"' +
                      '              mode="{{vm.mode || \'date\'}}" ' +
                      '              disable-year-selection={{vm.disableYearSelection}}' +
                      '              close-on-select="{{vm.closeOnSelect}}"' +
                      '              start-view="{{vm.startView}}" ' +
                      '              data-min-date="vm.minDate" ' +
                      '              data-max-date="vm.maxDate"  ' +
                      '              data-format="{{vm.format}}"  ' +
                      '              data-on-select-call="vm.onDateSelected(date)"' +
                      '              data-week-start-day="{{vm.weekStartDay}}" > ' +
                      '         </sm-date-picker>' +
                      '     </div>' +
                      '     <div></div>'
                      ' </md-input-container>';
          },
          link: function(scope, $element, attr, ctrl) {
              var ngModelCtrl = ctrl[0];
              var pickerCtrl = ctrl[1];
              pickerCtrl.configureNgModel(ngModelCtrl);
          }
      }
  }
func_code_string: function DateTimePicker($mdUtil, $mdMedia, $document, picker) {
      return {
          restrict: 'E',
          require: ['^ngModel', 'smDateTimePicker'],
          scope: {
              weekStartDay: '@',
              startView: '@',
              mode: '@',
              format: '@',
              minDate: '@',
              maxDate: '@',
              fname: '@',
              label: '@',
              isRequired: '@',
              disable: '=',
              noFloatingLabel: '=',
              disableYearSelection: '@',
              closeOnSelect: '@',
              onDateSelectedCall: '&'
          },
          controller: ['$scope', '$element', '$mdUtil', '$mdMedia', '$document','$parse', SMDateTimePickerCtrl],
          controllerAs: 'vm',
          bindToController:true,
          template: function (element, attributes){
              var inputType = '';
              if(attributes.hasOwnProperty('onFocus')) {
                  inputType = '<input name="{{vm.fname}}" ng-model="vm.value" '
                              + 'type="text" placeholder="{{vm.label}}"'
                              + ' aria-label="{{vm.fname}}" ng-focus="vm.show()" data-ng-required="vm.isRequired"  ng-disabled="vm.disable"'
                              + ' server-error class="sm-input-container" />' ;
              } else {
                  inputType = 
                      '<input class="" name="{{vm.fname}}" ng-model="vm.value" '
                      + '             type="text" placeholder="{{vm.label}}" '
                      + '             aria-label="{{vm.fname}}" aria-hidden="true" data-ng-required="vm.isRequired" ng-disabled="vm.disable"/>'
                      + '     <md-button tabindex="-1" class="sm-picker-icon md-icon-button" aria-label="showCalender" ng-disabled="vm.disable" aria-hidden="true" type="button" ng-click="vm.show()">'
                      + '         <svg  fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>'
                      + '     </md-button>' ;
              }
  
              return '<md-input-container class="sm-input-container md-icon-float md-block" md-no-float="vm.noFloatingLabel">' +
                      inputType +
                      '     <div id="picker" class="sm-calender-pane md-whiteframe-z2">' +
                      '          <sm-date-picker ' +
                      '              id="{{vm.fname}}Picker" ' +
                      '              initial-date="vm.initialDate"' +
                      '              ng-model="vm.value"' +
                      '              mode="{{vm.mode || \'date\'}}" ' +
                      '              disable-year-selection={{vm.disableYearSelection}}' +
                      '              close-on-select="{{vm.closeOnSelect}}"' +
                      '              start-view="{{vm.startView}}" ' +
                      '              data-min-date="vm.minDate" ' +
                      '              data-max-date="vm.maxDate"  ' +
                      '              data-format="{{vm.format}}"  ' +
                      '              data-on-select-call="vm.onDateSelected(date)"' +
                      '              data-week-start-day="{{vm.weekStartDay}}" > ' +
                      '         </sm-date-picker>' +
                      '     </div>' +
                      '     <div></div>'
                      ' </md-input-container>';
          },
          link: function(scope, $element, attr, ctrl) {
              var ngModelCtrl = ctrl[0];
              var pickerCtrl = ctrl[1];
              pickerCtrl.configureNgModel(ngModelCtrl);
          }
      }
  }
func_documentation_string: /* global moment