ANCS = {

  onSignupCallback: function(res) {
    if (Kwo.hasError(res)) {
      $('signup-error').show();
      $('signup-error').update(Kwo.error(res));
    } else {
      Kwo.go('/middle/ancs/middle.residence.home');
    }
  },

  'tabSwap': function(element) {
    if (element.up('li').hasClassName('selected')) {
      return;
    }
    element.up('ul').select('li').each(function(elm) {
      if (elm.hasClassName('selected')) {
        elm.removeClassName('selected');
        elm.up('.middle-content-wrapper').down('div.tab-' + elm.down('a').readAttribute('data-tab')).hide();
      }
    });
    element.up('li').addClassName('selected');
    element.up('.middle-content-wrapper').down('div.tab-' + element.readAttribute('data-tab')).show();
    if ($$('.tab-' + element.readAttribute('data-tab') + ' textarea').size() > 0) {
      $$('.tab-' + element.readAttribute('data-tab') + ' textarea').each(function(elm) {
        if (!elm.hasAttribute('data-processed')) {
          elm.writeAttribute({'data-processed': 1});
          new Kwo.Editor(elm);
        }
      });
    }
  }
};

ANCS.Middle = {};

ANCS.Middle.Residence = {
  save: function(form) {
    form = $(form);
    var errors = [];

    form.select('.required input, .required textarea').each(function(elm) {
      if ($F(elm).blank()) {
        var labels = $$('label[for=' + elm.id + ']');
        if(labels.size() == 0) return;
        var label = $$('label[for=' + elm.id + ']').first().innerHTML;
        label = label.replace(/[:\*]/g, '').strip();
        this.push(label);
      }
    }.bind(errors));
    if (errors.size() > 0) {
      return Kwo.warn('Veuillez remplir tous les champs obligatoires ! ' + "\n" + errors.join("\n"));
    }

    Kwo.exec('/middle/ancs/middle.residence.save', form, {
      'callback': function(res) {
        if (Kwo.hasError(res)) {
          Kwo.warn(Kwo.error(res));
        } else {

          Kwo.warn('Enregistrement effectué avec succès.');
        }
      }});
  }
};

ANCS.Diaporama = {
  diapoAdd: function(element) {
    new Kwo.Class.Upload(ANCS.Diaporama.onDiapoAdd.curry(element).bind($(this)), {filter:'image'});
  },
  onDiapoAdd: function(element, image) {
    var container = element.up().insert({'before': '<div class="diaporama-block"></div>'}).previous(0);
    //console.log(container);


    Kwo.exec('/middle/ancs/middle.residence.diaporama.diapo.save',
    { image:image },
    {callback: function(res) {
      //console.log(arguments);
      if (Kwo.hasError(res)) {
        Kwo.warn(Kwo.error(res));
      } else {
        var diapo_id = res['result']['id'];
        ANCS.Diaporama.onDiapoSave(container, diapo_id);
      }
    }});
  },
  diapoModify: function(element, id) {
    new Kwo.Class.Upload(ANCS.Diaporama.onDiapoModify.curry(element, id).bind($(this)), {filter:'image'});
  },
  onDiapoModify: function(element, id, image) {
    var container = element.up('.diaporama-block');

    Kwo.exec('/middle/ancs/middle.residence.diaporama.diapo.save',
    { image:image, id:id },
    {callback: function(res) {
      //console.log(arguments);
      if (Kwo.hasError(res)) {
        Kwo.warn(Kwo.error(res));
      } else {
        var diapo_id = res['result']['id'];
        ANCS.Diaporama.onDiapoSave(container, diapo_id);
      }
    }});
  },
  'onDiapoRemove': function(element, id) {
    Kwo.exec('/middle/ancs/middle.residence.diaporama.diapo.remove', {'id': id}, {'confirm': 'Êtes-vous sûr de vouloir supprimer définitivement cette diapo ?',
      'callback': function(res) {
        if (Kwo.hasError(res)) {
          Kwo.warn(Kwo.error(res));
        } else {
          element.up('.diaporama-block').remove();
          $$('.diaporama-block').each(function(elm, index) {
            $(elm).setStyle({'margin': '0 10px 10px 0'});
            if (index % 3 == 2) {
              $(elm).setStyle({'margin': '0 0 10px 0'});
            }
          });
          //Kwo.warn('Diapo supprimée avec succès.');
        }
      }});
  },
  'onDiapoSave': function(container, id) {
    Kwo.exec('/middle/ancs/middle.residence.diaporama.diapo',
    {
      diapo_id:id
    },
    {
      container: container,
      callback: function(res) {
        $$('.diaporama-block').each(function(elm, index) {
          $(elm).setStyle({'margin': '0 10px 10px 0'});
          if (index % 3 == 2) {
            $(elm).setStyle({'margin': '0 0 10px 0'});
          }
        });
      }
    });
  }
};

ANCS.Middle.Review = {
  toggleDisplay: function(elt) {
    elt = $(elt);
    var form = elt.up('form');
    var container = form.down('.news-reduction-content');
    var imgSwitch = form.down('a.switch').down('img');
    var btnModify = form.down('a.btn-modify');

    var isVisible = container.visible();
    if (isVisible) {
      container.hide();
      imgSwitch.src = '/app/ancs/pix/arrow-expand.gif';
      btnModify.show();
      form.disable();
    } else {
      container.show();
      imgSwitch.src = '/app/ancs/pix/arrow-reduce.gif';
      btnModify.hide();
      form.enable();
      if (!container.down('.richtext')) {
        new Kwo.Editor($(container).down('textarea'));
      }
    }
  },
  add: function(id, container) {
    Kwo.exec('/middle/ancs/middle.residence.review.add', {id:id}, {callback: ANCS.Middle.Review.show.curry(id, container, true).bind(this)});
  },
  show:function(id, container, iscontainerOpen) {
    var callback = Prototype.emptyFunction;
    if (iscontainerOpen === true) {
      callback = function() {
        ANCS.Middle.Review.toggleDisplay($(container).down('form').down(0));
      }
    }
    Kwo.exec('/middle/ancs/middle.residence.review', {id:id}, {container: container, callback: callback});
  },
  save: function(form, container, id) {
    form = $(form);
    var errors = [];
    form.select('.required input, .required textarea').each(function(elm) {
      if ($F(elm).blank()) {
        var label = $$('label[for=' + elm.id + ']').first().innerHTML;
        label = label.replace(/[:\*]/g, '').strip();
        this.push(label);
      }
    }.bind(errors));
    if (errors.size() > 0) {
      return Kwo.warn('Veuillez remplir tous les champs obligatoires ! ' + "\n" + errors.join("\n"));
    }

    Kwo.exec('/middle/ancs/middle.residence.review.save', form, {
      'callback': function(res) {
        if (Kwo.hasError(res)) {
          Kwo.warn(Kwo.error(res));
        } else {
          ANCS.Middle.Review.show(id, container, false);
        }
      }.bind(this)
    });
  },
  remove:function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir supprimer définitivement cette actualité ?')) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.review.remove', {id:id}, {callback: ANCS.Middle.Review.show.curry(id, container).bind(this)});
  },
  publish:function(id, container) {
    if (!confirm('Confirmez-vous la publication cette actualité sur votre fiche résidence ?')) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.review.publish', {id:id}, {callback: ANCS.Middle.Review.show.curry(id, container).bind(this)});
  },
  unpublish:function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir annuler la publication de cette actualité ?')) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.review.unpublish', {id:id}, {callback: ANCS.Middle.Review.show.curry(id, container).bind(this)});
  },
  cancel: function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir annuler vos modifications ?')) {
      return false;
    }
    ANCS.Middle.Review.show(id, container, false);
  }
};

ANCS.Middle.Appartement = {
  toggleDisplay: function(elt) {
    elt = $(elt);
    var form = elt.up('form');
    var container = form.down('.news-reduction-content');
    var imgSwitch = form.down('a.switch').down('img');
    var btnModify = form.down('a.btn-modify');

    var isVisible = container.visible();
    if (isVisible) {
      container.hide();
      imgSwitch.src = '/app/ancs/pix/arrow-expand.gif';
      btnModify.show();
      form.disable();
      form.down('input[name="appartement[name]"]').addClassName('disabled');
    } else {
      container.show();
      imgSwitch.src = '/app/ancs/pix/arrow-reduce.gif';
      btnModify.hide();
      form.enable();
      form.down('input[name="appartement[name]"]').removeClassName('disabled');
      if (!container.down('.richtext')) {
        new Kwo.Editor($(container).down('textarea'));
      }
    }
  },
  add: function(container) {
    Kwo.exec('/middle/ancs/middle.residence.appartement.add', {},
    {
      callback: function(res) {
        var id = res['result']['id'];
        ANCS.Middle.Appartement.show(id, container, true);
      }
    });
  },
  remove:function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir supprimer définitivement cette annonce ?')) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.appartement.remove', {id:id}, {callback: ANCS.Middle.Appartement.reload});
  },
  show:function(id, container, iscontainerOpen) {
    var callback = Prototype.emptyFunction;
    if (iscontainerOpen === true) {
      callback = function(res) {
        ANCS.Middle.Appartement.toggleDisplay($(container).down('form').down(0));
      }
    }
    Kwo.exec('/middle/ancs/middle.residence.appartement', {id:id}, {container: container, callback:callback });
  },
  reload:function() {
    Kwo.exec('/middle/ancs/middle.residence.appartements', {}, {container: $$('.middle-residence-appartements').first().up(0)});
  },
  save: function(form, container, id) {
    form = $(form);
    var errors = [];
    form.select('.required input, .required textarea').each(function(elm) {
      if ($F(elm).blank()) {
        var label = $$('label[for=' + elm.id + ']').first().innerHTML;
        label = label.replace(/[:\*]/g, '').strip();
        this.push(label);
      }
    }.bind(errors));
    if (errors.size() > 0) {
      return Kwo.warn('Veuillez remplir tous les champs obligatoires ! ' + "\n" + errors.join("\n"));
    }

    Kwo.exec('/middle/ancs/middle.residence.appartement.save', form, {
      'callback': function(res) {
        if (Kwo.hasError(res)) {
          Kwo.warn(Kwo.error(res));
        } else {
          ANCS.Middle.Appartement.show(id, container, false);
        }
      }.bind(this)
    });
  },
  publish:function(id, container) {
    if (!confirm("Confirmez-vous la publication cette annonce sur votre fiche résidence ?\n(cette annonce sera soumise à modération au conseil d'administration avant d'être publiée).")) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.appartement.publish', {id:id}, {callback: ANCS.Middle.Appartement.show.curry(id, container).bind(this)});
  },
  unpublish:function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir annuler la publication de cette annonce ?')) {
      return false;
    }
    Kwo.exec('/middle/ancs/middle.residence.appartement.unpublish', {id:id}, {callback: ANCS.Middle.Appartement.show.curry(id, container).bind(this)});
  },
  cancel: function(id, container) {
    if (!confirm('Êtes-vous sûr de vouloir annuler vos modifications ?')) {
      return false;
    }
    ANCS.Middle.Appartement.show(id, container, false);
  }
};

ANCS.Middle.Evenements = {
  init: function(tabbedFramesID) {
    new TabbedFrames(tabbedFramesID);
    $$('.tab-button').each(function(tab) {
      tab.observe('click', ANCS.Middle.Evenements.clickTab.curry(tab));
    });
  },
  clickTab: function(elt) {
    var evenementBox = elt.up('.evenement');
    if (evenementBox.hasClassName('reduced')) {
      evenementBox.removeClassName('reduced');
    } else {
      evenementBox.addClassName('reduced');
    }
  }
};

ANCS.Residence = {
  init: function(residence_tabs) {
    residence_tabs = $(residence_tabs);
    var frames = new TabbedFrames(residence_tabs);
    if (window.location.hash.match('#plan-acces')) {      

      frames.showFrame('plan-acces');
    }


  }
};

ANCS.Map = {
  'init': function() {
    if ($('MapFranceBox')) {
      $('MapFranceBox').select('area').each(function(el) {
        var cG = el.readAttribute('data-gravity').split(',');
        var adjustX = 0;
        var adjustY = 0;
        var residences_count = Number(el.readAttribute('data-number'));
        if (residences_count > 0) {
          $('MapFranceBox').down('.regions-box').insert(new Element('div').setStyle({top:cG[1] + 'px', left: cG[0] + 'px'}).update(residences_count));
        }
        el.observe('mouseover', ANCS.Map.show);
        el.observe('mouseout', ANCS.Map.hide);
      });
    }
  },
  'show': function(e) {
    $('MapFranceBox').setStyle({backgroundPosition:(Number($(this).readAttribute('data-region')) * -240) + 'px 0'});
  },
  'hide': function(e) {
    $('MapFranceBox').setStyle({backgroundPosition:'0 0'});
  }
};

ANCS.Implantations = {

  select_region: null,
  select_department: null,
  input_code_postal: null,

  init: function(select_region, select_department, input_code_postal) {
    ANCS.Implantations.select_region = select_region;
    ANCS.Implantations.select_department = select_department;
    ANCS.Implantations.input_code_postal = input_code_postal;
    ANCS.Implantations.select_region.observe('change', ANCS.Implantations.onSelectRegionChange);
  },

  onSelectRegionChange: function (e) {
    Kwo.exec('get.departments.options',
    { region_id: $F(ANCS.Implantations.select_region)},
    {container: $(ANCS.Implantations.select_department), callback:function() {
      $(ANCS.Implantations.input_code_postal).setValue('');
    }
    });
  }

};

ANCS.Gmap = {
  map: null,
  init: function(latitude, longitude, zoom, contentContainer) {
    var content = $(contentContainer);//.innerHTML;
    if (ANCS.Gmap.map != null) return;
    var point = new google.maps.LatLng(latitude, longitude);
    var myOptions = {
      zoom: zoom,
      center: point,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    ANCS.Gmap.map = map;

    var marker = new google.maps.Marker({
      position: point,
      map: map,
      title:"",
      icon:"/app/ancs/pix/picto-gmap.png"
    });

    var infowindow = new google.maps.InfoWindow({ content: content });
    google.maps.event.addListener(marker, 'click', function() {
      infowindow.open(map, marker);
    });
    infowindow.open(map, marker);

  }
};

ANCS.Zoom = {
  current : 10,
  min : 10,
  max : 20,
  init : function () {
    if (ANCS.Cookie.check('Zoom')) {
      ANCS.Zoom.current = parseInt(ANCS.Cookie.get('Zoom'));
      ANCS.Zoom.set(ANCS.Zoom.current);
    }
  },
  expand : function() {
    ANCS.Zoom.set(ANCS.Zoom.current + 2);
  },
  reduce : function() {
    ANCS.Zoom.set(ANCS.Zoom.current - 2);
  },
  set : function(val) {
    if (val < ANCS.Zoom.min) val = ANCS.Zoom.min;
    if (val > ANCS.Zoom.max) val = ANCS.Zoom.max;
    ANCS.Zoom.current = val;
    ANCS.Cookie.set('Zoom', ANCS.Zoom.current);
    if ($$('.wrapper-content .home-content .content-wrapper').length > 0)
      $$('.wrapper-content .home-content .content-wrapper')[1].setStyle({fontSize: ANCS.Zoom.current + 'px'});
    else if ($$('.wrapper-content .content-wrapper .middle-pattern, .wrapper-content .content-wrapper .middle-pattern .editorial-content').length > 0)
      $$('.wrapper-content .content-wrapper .middle-pattern, .wrapper-content .content-wrapper .middle-pattern .editorial-content').invoke('setStyle', {fontSize: ANCS.Zoom.current + 'px'});
  }
};

ANCS.Cookie = {
  get : function (c_name) {
    var i,x,y,ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
      x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
      y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
      x = x.replace(/^\s+|\s+$/g, "");
      if (x == c_name) return unescape(y);
    }
    return false;
  },
  set : function (c_name, value, exdays) {
    var exdate = new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()) + "; path=/";
    document.cookie = c_name + "=" + c_value;
  },
  check : function (c_name) {
    var c = ANCS.Cookie.get(c_name);
    if (c != null && c != "") return true;
    return false;
  }
}

