var Decorator = new Class({
  model: false,
  initialize: function ( model ) 
  { 
    this.model = model; 
  },
  
  decorate: function ( command, values )
  {
    switch (command) {
      case "PopupEdit.control.option":    this.highTea_PopupEditControl(values); break;
      case "Sheet.view.option":           this.highTea_SheetView(values); break;
      case "Book.model.retrieveDOMTable": this.highTea_BookModel(values); break;
      
      case "BookOnline.model.checkBooking": this.highTea_BookOnlineModel(values); break;
      case "BookOnline.model.save":         this.highTea_BookOnlineModelSave(values); break;

      case "Menu.view.sms":               this.userHide_MenuViewSms(values); break;
    }
    return true;
  },
  
  highTea_PopupEditControl: function ( values )
  {
    var element = values.value;
    var table = values.table;

		var div = new Element('div', { 'class': 'value' });

		var box = new Element('input', { 'type': 'checkbox', 'class': 'checkbox', 'id': 'table_bbl', 'value': '1' });
    var label = new Element('label', { 'for': 'table_bbl' } );
    label.innerHTML = "Brasserie Business Lunch";		  
    if (table && table.bbl == 1) box.checked = true;
    div.appendChild(box); div.appendChild(label); 
    
		var clear = new Element('div', { 'class': 'clear' });
    element.appendChild(div); element.appendChild(clear);

    var weekDay = parseInt(this.model.settings.weekDay,10);
    var days = this.model.settings.hightea.days;
    var maxDay = this.model.settings.hightea.maxDay;

    var totalHighteaPersons = this.model.settings.totalHighteaPersons;
      
    if (table && table.hightea == 1) totalHighteaPersons -= table.persons;

    if (totalHighteaPersons >= this.model.settings.hightea.maxPersons) return true;
    if (!this.model.settings.hightea.days.contains(weekDay)) return true;

    var admin = this.model.settings.currentUser.user_admin;

    if (admin <= 0) {
      var nowDate = new Date();
      var nowYear = parseInt(nowDate.getFullYear(),10);
      var nowMonth = parseInt(nowDate.getMonth()+1,10);
      var nowDay = parseInt(nowDate.getDate(),10);
      var nowHours = parseInt(nowDate.getHours(),10);

      var thenDate = new Date();
      var thenYear = parseInt(this.model.settings.mysqlDate.substring(0,4),10);
      var thenMonth = parseInt(this.model.settings.mysqlDate.substring(5,7),10);
      var thenDay = parseInt(this.model.settings.mysqlDate.substring(8,10),10);
      thenDate.setDate(thenDay);
      thenDate.setMonth(thenMonth-1);
      thenDate.setFullYear(thenYear);
      
      nowDate.setHours(0); nowDate.setMinutes(0); nowDate.setSeconds(0); nowDate.setMilliseconds(0);
      thenDate.setHours(0); thenDate.setMinutes(0); thenDate.setSeconds(0); thenDate.setMilliseconds(0);

      if (nowDate >= thenDate) return true;
      if (weekDay == 0) weekDay = 7;

      thenDate.setDate(thenDate.getDate()-(weekDay-4));
      if (nowDate > thenDate) return true;
      if (nowDate.toString() == thenDate.toString()) {
        if (nowHours >= this.model.settings.hightea.maxTime ) return true;
      }
    }

		var div = new Element('div', { 'class': 'value' });

		var box = new Element('input', { 'type': 'checkbox', 'class': 'checkbox', 'id': 'table_hightea', 'value': '1' });
    var label = new Element('label', { 'for': 'table_hightea' } );
    label.innerHTML = "Hightea";		  
    if (table && table.hightea == 1) box.checked = true;
    div.appendChild(box); div.appendChild(label); 
    
		var clear = new Element('div', { 'class': 'clear' });
    element.appendChild(div); element.appendChild(clear);
  },
  
  highTea_SheetView: function ( values )
  {
    var viewIcons = values.viewIcons;
    var table = values.table;
    
    if (table && table.bbl && table.bbl == 1) {
      var src_info = ( bs.model.settings.css != "touchscreen") ?
        "/modules/book/skins/default/front/icons/bbl.gif" :
        "/modules/book/skins/default/front/icons/bbl.gif";
      var icon = new Element("img", {
        "class": "icon",
        "title": "Deze persoon komt voor de brasserie business lunch",
        "alt": "BBL",
        "src": src_info
      });
      icon.setStyle( 'margin','0px 5px 0px 5px');
      viewIcons.appendChild(icon);
    }
    if (table && table.hightea && table.hightea == 1) {
      var src_info = ( bs.model.settings.css != "touchscreen") ?
        "/modules/book/skins/default/front/icons/hightea.gif" :
        "/modules/book/skins/default/front/icons/hightea.gif";
      var icon = new Element("img", {
        "class": "icon",
        "title": "Deze persoon komt voor de hightea",
        "alt": "Deze persoon komt voor de hightea",
        "src": src_info
      });
      icon.setStyle( 'margin','0px 5px 0px 5px');
      viewIcons.appendChild(icon);
    }
  }, 
  
  highTea_BookModel: function ( values )
  {
    var table = values.table;
    
    table.bbl = ($("table_bbl") && $("table_bbl").checked);
    table.hightea = ($("table_hightea") && $("table_hightea").checked);
  },
  
  highTea_BookOnlineModel: function ( values )
  {
    if (values.date.length != 10) return true;
    
    var totalHighteaPersons = parseInt(values.data,10);
    var dateObj = new Date();
    var day   = parseInt(values.date.substring(0,2),10);
    var month = parseInt(values.date.substring(3,5),10)-1;
    var year  = parseInt(values.date.substring(6,10),10);
    dateObj.setDate(day);
    dateObj.setMonth(month);
    dateObj.setFullYear(year);
    
    var stillTime = true;
    var nowDate = new Date();
    var nowYear = parseInt(nowDate.getFullYear(),10);
    var nowMonth = parseInt(nowDate.getMonth()+1,10);
    var nowDay = parseInt(nowDate.getDate(),10);
    var nowHours = parseInt(nowDate.getHours(),10);

    nowDate.setHours(0); nowDate.setMinutes(0); nowDate.setSeconds(0); nowDate.setMilliseconds(0);
    dateObj.setHours(0); dateObj.setMinutes(0); dateObj.setSeconds(0); dateObj.setMilliseconds(0);

    var weekDay = dateObj.getDay();

    if (nowDate >= dateObj) stillTime = false;
    thenWeek = weekDay;
    if (thenWeek == 0) thenWeek = 7;

    dateObj.setDate(dateObj.getDate()-(thenWeek-4));
    if (nowDate > dateObj) stillTime = false;
    if (nowDate.toString() == dateObj.toString()) {
      if (nowHours >= this.model.settings.hightea.maxTime ) stillTime = false
    }
    
    totalHighteaPersons += parseInt(values.persons,10);

    if (totalHighteaPersons <= this.model.settings.hightea.maxPersons &&
        this.model.settings.hightea.days.contains(weekDay) &&
        this.model.settings.hightea.times.contains(values.time) &&
        stillTime) {
      $("highTeaRow").setStyle("display", "");
    } else {
      $("highTeaRow").setStyle("display", "none");
      $("hightea").checked = false;
    }
  },
  
  highTea_BookOnlineModelSave: function ( values )
  {
    var info = values.info;
    var days = this.model.settings.hightea.days;

    info.bbl = $("bbl").checked;
    
    var dateObj = new Date();
    var day   = parseInt(values.date.substring(0,2),10);
    var month = parseInt(values.date.substring(3,5),10)-1;
    var year  = parseInt(values.date.substring(6,10),10);
    dateObj.setDate(day);
    dateObj.setMonth(month);
    dateObj.setFullYear(year);

    var weekDay = dateObj.getDay();
    if (days.contains(weekDay) &&
        this.model.settings.hightea.times.contains(values.time)) {
      info.hightea = $("hightea").checked;
    } else {
      info.hightea = false;
    }
  },

  userHide_MenuViewSms: function (values)
  {
    var button = values.button;
    var admin = values.admin;

    if (admin <= 0) {
      button.removeEvents();
      button.id = "";
    }
  }
});

