(function($) {
  var _map, _markers, _infowindow;
  
  function onLoad()
  {     
    if ($('#search-form').length > 0)
      initSearchControls();
    if ($('#trier-par').length > 0)
      initSearchResults();
    else if ($('#nos-coups-de-coeur').length > 0)
      initAnnonceThumbnails();
    if ($('#annonce-photos').length > 0)
      initAnnonceDetail();
    if ($('#anc-map').length > 0)
      initMap();
    if ($('body.home').length == 1)
      initHomeAnim('', 6);
    else if ($('body.page-locaux-commerciaux').length == 1)
        initHomeAnim('-co', 4);
    if ($('#contact-form').length > 0)
      initContactForm();
    
    var home_tab = $('li.anc-home-tab');  
    if (home_tab.length > 0)
    {
      home_tab.append('<div></div>');
      home_tab.find('div').click(function() {
        window.location.href = home_tab.find('a').attr('href');
      });
    }
    $('#client-login a').click(function() {
      window.open('/acces-client', 'Accès client', '_blank');
    });
  }
  
  function initContactForm()
  {
    var v = $('#surface').val();
    $('#surface').focus(function() {
      if (isNaN(parseInt($(this).val())))
        $(this).val('');
    })
    .blur(function() {
      if (isNaN(parseInt($(this).val())))
        $(this).val(v);
    });
  }
  
  function initHomeAnim(suffix, nb_images)
  {
    var container = $('div.anim-container' + suffix);
    for (var i = 1; i <= nb_images; i++)
      container.append('<div class="slide'+i+(i == 1 ? ' active' : '')+'"></div>');
    
    window.setInterval(function() {
      var active = container.find('div.active');
      if (active.length == 0) active = container.find('div:last');

      var next =  active.next().length ? active.next() : container.find('div:first');
      active.addClass('last-active');

      next.css({opacity: 0.0})
          .addClass('active')
          .animate({opacity: 1.0}, 2000, function() {
              active.removeClass('active last-active');
          });
    }, 5000 );
  }
         
  function initMap()
  {
    var container = $('#anc-map');
    _map = new google.maps.Map(container[0], {
      zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: new google.maps.LatLng(48.87250602041713, 2.3419761657714844)
    });
    _infowindow = new google.maps.InfoWindow();
    $('input[name="map-filter"]').change(function() {
      createMarkers();
    });
    createMarkers();
  }

  function createMarkers()
  {                 
    if (_markers)
      $.each(_markers, function(i, m) {m.setMap(null); _markers[i] = null;})
    _markers = [];
    
    var type = $('input[name="map-filter"]:checked').val();
    if (type == 'tous')
    {
      createMarkersByType('acheter');
      createMarkersByType('louer');
    }
    else
    {
      createMarkersByType(type);
    }
  }
  
  function createMarkersByType(type)
  {                              
    $.each(ANC.annonces[type], function(index, a) {
      var img_url = ANC.template_url + '/images/' + 'map-' + type + '.png';
      var img = new google.maps.MarkerImage(img_url, null, null, new google.maps.Point(13, 16), new google.maps.Size(26, 37));
      var marker = new google.maps.Marker({
        icon: img, map: _map, title: a.title,
        position: new google.maps.LatLng(a.lat, a.lng)
      });                                     
      _markers.push(marker);
      google.maps.event.addListener(marker, 'click', function() {
        _infowindow.close();     
        _infowindow.setContent('<div id="map-infowindow"><img src="'+a.thumb+'"></img><a href="' + ANC.home_url +'/categorie/'+type+'/?co=0&p='+a.id+'&id='+a.id+'&t='+type+'">' + a.title + '</a><p>' + a.price + a.surface + '</p></div>');
        _infowindow.open(_map, marker);
      });
    });
  }
  
  function initSearchControls()
  {                                  
    $('#'+ANC.args.t).attr('checked', 'checked');

    $('input[name="t"]').change(dataToForm);
    $('#btn-search').click(search);                
    dataToForm();
  }
                                      
  function dataToForm()
  {
    fillControls();
    setSelectedIndex('#typeBien', ANC.args.n);
    setSelectedIndex('#localite', ANC.args.v);
    setSelectedIndex('#trier-par', ANC.args.o);
  }
  
  function setSelectedIndex(sel, value)
  {
    var options = $(sel+' option');
    for (var i = 0, n = options.length; i < n; i++)
    {      
      var o = $(options[i]);
      if (o.attr('value') == value)
      {
        o.attr('selected', 'selected');
        return;
      }
    }
  }
  
  function initSearchResults()
  {       
    $('a.prev').click(function() {ANC.args.pg = parseInt(ANC.args.pg) - 1; process()});
    $('a.next').click(function() {ANC.args.pg = parseInt(ANC.args.pg) + 1; process()});
    $('a.page').click(function(e) {ANC.args.pg = parseInt(e.target.innerHTML); process()});
    $('#trier-par').change(function(e) {if (e.target.selectedIndex != 0) {ANC.args.pg = 1; ANC.args.o = e.target.options[e.target.selectedIndex].value; process()}});
    
    initAnnonceThumbnails();
  }
  
  function initAnnonceThumbnails()
  {
    $('div[ann_id]').find('.entry-picture, .entry-title, .entry-link, .entry-details-link').click(function() {
      var thumb = $(this).closest('div[ann_id]'),
          s = thumb.attr('ann_id'),
          id = s.split('_');
      ANC.args.p = ANC.args.id = id[1];
      ANC.args.ref = s;
      var t = thumb.attr('ann_t');
      if (t != undefined)
        ANC.args.t = t;
      process(thumb.attr('ann_offset'));           
    });
  }
  
  function initAnnonceDetail()
  {
    var div = $('#annonce-photos'), 
        photo = div.find('img.attachment-medium');
    
    div.find('img.attachment-thumbnail').hover(function() {
      photo.attr('src', $(this).parent().attr('href'));
    });
    photo.click(function() {
      $('#annonce-photos a[href="' + photo.attr('src') + '"]').click();
    });
    
    // add lightbox
    $('#annonce-photos li.gallery-icon a').lightBox({
      txtOf: 'sur',
      imageLoading:			ANC.template_url+'/images/lightbox-ico-loading.gif',
  		imageBtnPrev:			ANC.template_url+'/images/lightbox-btn-prev.gif',	
  		imageBtnNext:			ANC.template_url+'/images/lightbox-btn-next.gif',	
  		imageBtnClose:		ANC.template_url+'/images/lightbox-btn-close.gif',
  		imageBlank:				ANC.template_url+'/images/lightbox-blank.gif'		
    });
    
    // back to list button
    $('#back-to-list').click(function() {
      delete ANC.args.ref;
      ANC.args.id = ANC.args.p = '';           
      process();
    });
    
    $('a.raf_link').attr('title', 'Envoyer à un ami');
    $('div.annonce-print')
      .attr('title', 'Imprimer cette annonce')
      .click(function() {
        window.open(ANC.home_url + '/print/?id=' + ANC.args.id, '_blank');
      });
  }
  
  function search()
  {
    ANC.args.n = $('#typeBien').val();
    ANC.args.v = $('#localite').val();
    ANC.args.pg = 1;
    ANC.args.p = '';
    ANC.args.id = '';
    process();
  }
  
  function process(offset)
  {                       
    var r = ANC.args.ref,
        c = (ANC.args.t == 'acheter-m' || ANC.args.t == 'acheter-c' ? 'acheter' : ANC.args.t) + (ANC.args.co == 1 ? '-co' : '');                                           
    if (r && r != '')                                         
    {                    
      delete ANC.args.ref;
      delete ANC.args.p;                                                 
      window.location.href = ANC.home_url + '/' + c + '/' + r + '/?' + $.param(ANC.args) + (typeof offset != 'undefined' ? '&of='+offset : '');
    }
    else
    {
      window.location.href = ANC.home_url + '/categorie/' + c + '/?' + $.param(ANC.args);
    }
  }
  
  function fillControls()
  {         
    ANC.args.t = $('input[name="t"]:checked').val();
    var d = ANC.cache_data[ANC.args.co == 1 ? 'co' : 'pa'][ANC.args.t == 'acheter-c' || ANC.args.t == 'acheter-m' ? 'acheter' : ANC.args.t];
    if (ANC.args.co != 1)
    {
      fillSelect($('#typeBien'), d.nature);
    }
    else
      fillSelect($('#typeBien'), d.nature[ANC.args.t == 'acheter-c' ? 'c' : 'm']);
    
    fillSelect($('#localite'), d.ville);
  }
  
  function fillSelect(sel, data)
  {
    sel.empty();
    if (data.length == 0 || data.length > 1)
      sel.append('<option value="" selected="selected">Indifférent</option>');
    $.each(data, function(i, d) {
      sel.append('<option value="'+d+'">'+ucfirst(d)+'</option>');
    });
  }
  
  function ucfirst(s)
  {
    return s.substr(0,1).toUpperCase() + s.substr(1, s.length - 1);
  }
  
  $(window).load(onLoad);
})(jQuery);


