/**
 * (C) 2008-2009 Marcello Barnaba <vjt@openssl.it> - http://sindro.me/
 * (C) 2008-2009 Fabio Grande <fabio@ndstr.com>    - http://ndstr.com/ 
 */
$.fn.flash = function() {
  $(this).animate({opacity:0.4}, 300)
    .animate({opacity:1.0}, 300)
}

$.fn.ajaxUpload = function(target) {
  $(this).livequery('submit', function(e) {
    e.preventDefault();

    var form = $(this);
    var spinner = form.children('.spinner');
    form.ajaxSubmit({
      dataType: 'html',
      beforeSend: function() { spinner.show(); },
      success: function(data) { $(target).append(data); form.blankFields() },
      error: function() { alert("File non valido!"); },
      complete: function() { spinner.hide(); }
    });
  });
}

$.fn.blankFields = function() {
  $(this).find('input[type!=submit]:not(:hidden), select').val('');
}

$.fn.mapToggler = function() {
  return this.each(function() {
    var link = $(this);
    this.togglee = $(link.attr('rel'));
    this.image = link.find('img');

    $(this).click(onClick);
  });

  function onClick() {
    // Blind the map, triggering the load event when shown.
    //
    this.togglee.toggle('blind', function() { $(document).trigger('map:shown'); });

    // Swap the image src with the rel
    //
    var src = this.image.attr('src');
    this.image.attr('src', this.image.attr('rel'));
    this.image.attr('rel', src);

    return false;
  }
}

$.fn.fadeOutAndRemove = function(speed) {
  if (!speed)	speed = 'slow';
  return this.each(function() {
    $(this).fadeOut(speed, function() { $(this).remove(); });
  });
}

$.fn.addHoveringLabel = function(selector) {
  var time = arguments[1] || 'fast';
  $($(this).selector).livequery(function() {

    var label = $(this).find(selector).click(function() {
      window.location.href = $(this).parent().find('a:first').attr('href');
    });

    $(this).hover(
      function() { if($.browser.msie) label.show(); else label.fadeIn(time); },
      function() { if($.browser.msie) label.hide(); else label.fadeOut(time); }
    );

  });

}

$(document).ready(function() {
  // Rounded corners
  //
  $('.corner12').corner('12px');
  $('.corner10').corner('10px');
  $('.corner5').corner('5px');

  // Block refresher
  //
  $('.refresher a').click(function(e) {
    var container = $(this).attr('rel');
    var url = $(this).attr('href');
    $('#' + container).load(url, function() {
      $(this).flash();
    });

    return false;
  });

  // Search form
  // 
  var search_inputs = $('.form_search, .form_search_error').find('input[type=text]');

  search_inputs.each(function() {
    var input  = $(this);
    var defval = input.val();

    input.focus(function() {
      if (input.val() == defval) { input.val(''); }
    });

    input.blur(function() {
      if (input.val() == '') { input.val(defval); }
    });

    input.parent('form').submit(function() {
      if (input.val() == defval) { input.val(''); }
    });
  });

  // Facebox
  var fb = $('a[rel*=facebox]');
  if (fb.length > 0) {
    fb.facebox();

    fb.find('img').tooltip({
      showURL: false,
      track: true,
      fade: 250,
      delay: 0
    });

    $('.photo_magnifier').prev()
      .mouseover(function() { $(this).css({cursor:'pointer'}).next().show(); })
      .mouseout(function() { $(this).css({cursor:'default'}).next().hide(); })
  }

  if ($('#facebox').length > 0) {
    $('#facebox div.pagination a, #facebox a[rel*=facebox]').livequery('click', function() {

      $('#facebox .content').html('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>');
      $.get(this.href, null, function(data) { $.facebox.reveal(data); });

      $.scrollTo('#facebox', {offset: -10, duration: 500});

      return false;
    });
  }

  // Map toggler
  //
  $('#map_toggle a').mapToggler();
});
