var _reg = new RegExp("[_]", "g");
var _newStatus = 0;

function round2(val){
  return Math.round(val * 100) / 100;
}

function messageGlobal(style, msg, dest){
	hideAjaxIndicator();
  var id = dest || 'ajaxMessageGlobal';
  if (style != "") {
    $(id).className = style + 'box';
    new $(id).update(msg);
    $(id).show();
  } else {
    $(id).update('');
    $(id).className = '';
    $(id).hide();
  }
}

// Display ajax wait
function showAjaxIndicator(){
  $('ajax-indicator').show();
}

// Hide ajax wait
function hideAjaxIndicator(){
  $('ajax-indicator').hide();
}


/**
 * Observe les champs input avec une classe date pour afficher le calendrier dessus
 * @param {Object} lang
 */
function calendar(lang){
  var lang = lang || 'fr';
  $$('input.date').each(function(elt){
    new DatePicker({
      relative: elt.id,
      topOffset: '20px',
      leftOffset: '0px',
      showDuration: 0,
      disableFutureDate: false,
      enableCloseEffect: false,
      language: lang,
      zindex: 20
    });
  });
}

// update select departement
function map_updateDpt(target, url){
  var elt = typeof(target) == 'object' ? target : $(target);
  
  new Ajax.Request(url, {
    onCreate: showAjaxIndicator,
    onComplete: function(xhr, json){
      hideAjaxIndicator();
      elt.update(xhr.responseText);
    }
  });
}


/**
 * pic_createSortable créé des éléments déplaçable et re triable
 * pour trier facilement les photos. Une fois le tri fait,
 * une requêteAjax sauvegarde le nouveau tri en base.
 */
function pic_createSortable(elt){
  var elt = typeof(elt) == 'object' ? elt : $(elt);
  Sortable.create(elt, {
    tag: 'dl',
    constraint: 'vertical',
    handle: 'dragndrop',
    onUpdate: function(){
      var infos = elt.id.split(_reg);
      var order = Sortable.serialize(elt, {
        name: 'id'
      });
      order = order.toQueryParams();
      order = Object.toJSON(order['id[]']);
      new Ajax.Request('./ajax.php', {
        postBody: $H({
          'action': 'centre_pic_move',
          'centre': infos[1],
          'order': order
        }).toQueryString(),
        onComplete: function(xhr, json){
          messageGlobal((json.error == 0 ? 'valid' : 'error'), xhr.responseText);
        }
      });
    }
  });
}

/**
 * Toggle pour les critères des formulaires de recherche
 */

function onoff_criteres(){
	if (Element.visible('criteres')) {
		$('gest_criteres').innerHTML = 'Afficher et saisir vos critères.++';
	} else {
		$('gest_criteres').innerHTML = 'Masquer les critères';
	}
	new Effect.toggle('criteres','blind');
}

/**
 * @param elt: $(element) or id
 * @param: status est non obligatoire et permet de forcer un statut
 * Si il n'est pas précisé, un toggle sera efectué
 */
function status_change(elt, type, id, status,row,remove) {
  if (type == '' || id <= 0) return false;
	var row = row || null;
	var remove = remove == true ? true : false;
  
  elt = typeof(e) == 'string' ? $(elt) : elt;
  
  var status = status == 0 || status == 1 ? status : -1;

  new Ajax.Request('./ajax.php', {
    postBody: $H({
      'action': 'status_change',
      'type': type,
      'id': id,
      'status': status
    }).toQueryString(),
    onCreate: function(){
      showAjaxIndicator();
    },
    onComplete: function(xhr, json) {
      hideAjaxIndicator();
      if (json.error == 1) messageGlobal('error', xhr.responseText);
      else {
        messageGlobal('valid', xhr.responseText)
        elt.src = json.img;
				if (remove && $(row)) $(row).replace('');
      }
    }
  });
}