/**
 * CibloBoutique custom scripts
 *
 * Requires Prototype 1.6.
 *
 * @author Christophe Porteneuve <christophe@ciblo.net>
 * @author Guillaume Tournier <guillaume@ciblo.net>
 * @author Julien Vignolles <julien@ciblo.net>
 * @legals © 2008-2009 Ciblo SA.
 */

var SEARCHBOX_PLACEHOLDER = 'Rechercher…';
var gAuthenticityToken = null;
var gAjaxSearchCompletion = null;

function bindDatePickers() {
  $$('input.date').invoke('addClassName', 'jsEnabled');
  document.observe('click', function(e) {
    var editor = e.findElement('input.date');
    if (!editor) return;
    if (editor.disabled) return;
    //editor.writeAttribute('readonly', true);
    new CalendarDateSelect(editor, { buttons: false, popup: 'force' });
  });
} // bindDatePickers

function bindSizes() {
  var menu = $('fontSizes');
  menu && menu.observe('click', function(e) {
    var activator = e.findElement('a');
    if (!activator) return;
    e.stop();
    document.body.addClassName(activator.id);
    menu.select('a').each(function(link) {
      if (link == activator) {
        link.addClassName('selected');
      } else {
        link.removeClassName('selected');
        document.body.removeClassName(link.id);
      }
    });
  });
} // bindMenu

function bindSpecTogglers() {
  var links = $('tabsContent');
  if (!links || links.hasClassName('tabs')) return;
  var activeLink = links.select('li a.active').first();
  if (!activeLink) return;
  var details = $('details');
  if (!details) return;

  activeTab = $(activeLink.readAttribute('href').substring(1));
  details.select('.tabs').each(function(link) {
    if (link != activeTab) link.addClassName('hidden');
  });

  function handleSpecEditorClick(e) {
    e.stop();
    var link = e.findElement('a');
    link.blur();
    if (link == activeLink) return;
    activeLink.removeClassName('active');
    link.addClassName('active');
    //$(activeLink.readAttribute('href').substring(1)).hide();
    //$((activeLink = link).readAttribute('href').substring(1)).show();
    $(activeLink.readAttribute('href').substring(1)).addClassName('hidden');
    $((activeLink = link).readAttribute('href').substring(1)).removeClassName('hidden');
  } // handleSpecEditorClick

  links.observe('click', handleSpecEditorClick);
} // bindSpecTogglers

function initSearchCompletions() {

  var searchBox = $('searchBox');
  if (!searchBox) return;
  
  function addPlaceholder() {
    if ($F(searchBox).blank())
      searchBox.setValue(SEARCHBOX_PLACEHOLDER).addClassName('placeholder');
  }
  
  function removePlaceholder() {
    if ($F(searchBox) == SEARCHBOX_PLACEHOLDER)
      searchBox.setValue('').removeClassName('placeholder');
  }

  addPlaceholder();
  searchBox.observe('focus', removePlaceholder);
  searchBox.observe('blur', addPlaceholder);
  searchBox.up('form').observe('submit', removePlaceholder);
  
  var opts = {
    method:   'get',
    callback: function(element) { return $(element).up('form').serialize(); },
    select:   'productName',
    onShow:   function(element, update){ 
      if (!update.style.position || update.style.position == 'absolute') {
        update.style.position = 'absolute';
        Position.clone(element, update, { setHeight: false, setWidth: false, offsetTop: element.offsetHeight });
      }
      Effect.Appear(update, { duration: 0.15 });
    }
  };
  
  new Ajax.Autocompleter('searchBox', 'searchBoxCompletions', gAjaxSearchCompletion, opts);
  if ($('edtMatch'))
    new Ajax.Autocompleter('edtMatch', 'edtMatchCompletions', gAjaxSearchCompletion, opts);
} // initSearchCompletions

document.observe('dom:loaded', function() {
  initSearchCompletions();
  bindSizes();
  bindSpecTogglers();
  bindDatePickers();
});

