text: /**
   * @module     日历
   * @creator  拔赤<lijing00333@163.com>
   */
  KISSY.add('calendar/time', function(S, Node,Calendar) {
  
      S.augment(Calendar, {
  
          /**
           * 时间选择构造器
           * @constructor S.Calendar.TimerSelector
           * @param {object} ft ,timer所在的容器
           * @param {object} father 指向S.Calendar实例的指针，需要共享父框的参数
           */
          TimeSelector:function(ft, father) {
              //属性
              this.father = father;
              this.fcon = ft.parent('.ks-cal-box');
              this.popupannel = this.fcon.one('.ks-selectime');//点选时间的弹出层
              if (typeof father._time == 'undefined') {//确保初始值和当前时间一致
                  father._time = new Date();
              }
              this.time = father._time;
              this.status = 's';//当前选择的状态，'h','m','s'依次判断更新哪个值
              this.ctime = Node('<div class="ks-cal-time">时间：<span class="h">h</span>:<span class="m">m</span>:<span class="s">s</span><!--{{arrow--><div class="cta"><button class="u"></button><button class="d"></button></div><!--arrow}}--></div>');
              this.button = Node('<button class="ct-ok">确定</button>');
              //小时
              this.h_a = ['00','01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23'];
              //分钟
              this.m_a = ['00','10','20','30','40','50'];
              //秒
              this.s_a = ['00','10','20','30','40','50'];
  
  
              //方法
              /**
               * 创建相应的容器html，值均包含在a中
               * 参数：要拼装的数组
               * 返回：拼好的innerHTML,结尾还要带一个关闭的a
               *
               */
              this.parseSubHtml = function(a) {
                  var in_str = '';
                  for (var i = 0; i < a.length; i++) {
                      in_str += '<a href="javascript:void(0);" class="item">' + a[i] + '</a>';
                  }
                  in_str += '<a href="javascript:void(0);" class="x">x</a>';
                  return in_str;
              };
              /**
               * 显示ks-selectime容器
               * 参数，构造好的innerHTML
               */
              this.showPopup = function(instr) {
                  var self = this;
                  this.popupannel.html(instr);
                  this.popupannel.removeClass('hidden');
                  var status = self.status;
                  self.ctime.all('span').removeClass('on');
                  switch (status) {
                      case 'h':
                          self.ctime.all('.h').addClass('on');
                          break;
                      case 'm':
                          self.ctime.all('.m').addClass('on');
                          break;
                      case 's':
                          self.ctime.all('.s').addClass('on');
                          break;
                  }
              };
              /**
               * 隐藏ks-selectime容器
               */
              this.hidePopup = function() {
                  this.popupannel.addClass('hidden');
              };
              /**
               * 不对其做更多的上下文假设，仅仅根据time显示出来
               */
              this.render = function() {
                  var self = this;
                  var h = self.get('h');
                  var m = self.get('m');
                  var s = self.get('s');
                  self.father._time = self.time;
                  self.ctime.all('.h').html(h);
                  self.ctime.all('.m').html(m);
                  self.ctime.all('.s').html(s);
                  return self;
              };
              //这里的set和get都只是对time的操作，并不对上下文做过多假设
              /**
               * set(status,v)
               * h:2,'2'
               */
              this.set = function(status, v) {
                  var self = this;
                  v = Number(v);
                  switch (status) {
                      case 'h':
                          self.time.setHours(v);
                          break;
                      case 'm':
                          self.time.setMinutes(v);
                          break;
                      case 's':
                          self.time.setSeconds(v);
                          break;
                  }
                  self.render();
              };
              /**
               * get(status)
               */
              this.get = function(status) {
                  var self = this;
                  var time = self.time;
                  switch (status) {
                      case 'h':
                          return time.getHours();
                      case 'm':
                          return time.getMinutes();
                      case 's':
                          return time.getSeconds();
                  }
              };
  
              /**
               * add()
               * 状态值代表的变量增1
               */
              this.add = function() {
                  var self = this;
                  var status = self.status;
                  var v = self.get(status);
                  v++;
                  self.set(status, v);
              };
              /**
               * minus()
               * 状态值代表的变量增1
               */
              this.minus = function() {
                  var self = this;
                  var status = self.status;
                  var v = self.get(status);
                  v--;
                  self.set(status, v);
              };
  
  
              //构造
              this._init = function() {
                  var self = this;
                  ft.html('').append(self.ctime);
                  ft.append(self.button);
                  self.render();
                  self.popupannel.on('click', function(e) {
                      var el = Node(e.target);
                      if (el.hasClass('x')) {//关闭
                          self.hidePopup();
                      } else if (el.hasClass('item')) {//点选一个值
                          var v = Number(el.html());
                          self.set(self.status, v);
                          self.hidePopup();
                      }
                  });
                  //确定的动作
                  self.button.on('click', function() {
                      //初始化读取父框的date
                      var d = typeof self.father.dt_date == 'undefined' ? self.father.date : self.father.dt_date;
                      d.setHours(self.get('h'));
                      d.setMinutes(self.get('m'));
                      d.setSeconds(self.get('s'));
                      self.father.fire('timeSelect', {
                          date:d
                      });
                      if (self.father.popup && self.father.closable) {
                          self.father.hide();
                      }
                  });
                  //ctime上的键盘事件，上下键，左右键的监听
                  //TODO 考虑是否去掉
                  self.ctime.on('keyup', function(e) {
                      if (e.keyCode == 38 || e.keyCode == 37) {//up or left
                          //e.stopPropagation();
                          e.preventDefault();
                          self.add();
                      }
                      if (e.keyCode == 40 || e.keyCode == 39) {//down or right
                          //e.stopPropagation();
                          e.preventDefault();
                          self.minus();
                      }
                  });
                  //上的箭头动作
                  self.ctime.one('.u').on('click', function() {
                      self.hidePopup();
                      self.add();
                  });
                  //下的箭头动作
                  self.ctime.one('.d').on('click', function() {
                      self.hidePopup();
                      self.minus();
                  });
                  //弹出选择小时
                  self.ctime.one('.h').on('click', function() {
                      var in_str = self.parseSubHtml(self.h_a);
                      self.status = 'h';
                      self.showPopup(in_str);
                  });
                  //弹出选择分钟
                  self.ctime.one('.m').on('click', function() {
                      var in_str = self.parseSubHtml(self.m_a);
                      self.status = 'm';
                      self.showPopup(in_str);
                  });
                  //弹出选择秒
                  self.ctime.one('.s').on('click', function() {
                      var in_str = self.parseSubHtml(self.s_a);
                      self.status = 's';
                      self.showPopup(in_str);
                  });
  
  
              };
              this._init();
  
  
          }
  
      });
  
      return Calendar;
  
  }, { requires:["node","calendar/base"] });
  