var gml;

function updateCurrentPage(event) {
  event.stopPropagation();
  event.preventDefault();
  var currentPage = $(this).attr("hash").substring(5);
  $('#currentPage').val(currentPage);
  $('#currentPage').trigger('change');
}

function updatePageBrowser(itemPerPage, itemCount) {
  if (itemCount) {
    var pages = Math.ceil(itemCount/itemPerPage);
    var jsonpages = new Array();
    var currentPage = parseInt($('#currentPage').val());
    if(currentPage>pages) {
      currentPage = pages
      $('#currentPage').val(currentPage);
      $('#currentPage').trigger('change');
    }

    if (currentPage>1) {
      jsonpage = {li:
                    [{a: {text:'< Précédent' , attr: {'href':'#page'+(currentPage-1)}}}]
                  };
      jsonpages.push(jsonpage);
    }
    for (i=1; i<=pages; i++) {
      if (i==currentPage) {
        jsonpage = {li:
                      {text:i}
                    };
      } else {
        jsonpage = {li:
                      [{a: {text:i , attr: {'href':'#page'+i}}}]
                    };
      }
      jsonpages.push(jsonpage);
    }
    if (currentPage<pages) {
      jsonpage = {li:
                    [{a: {text:'Suivant >' , attr: {'href':'#page'+(currentPage+1)}}}]
                  };
      jsonpages.push(jsonpage);
    }

    var res = {ul:
                  jsonpages
              };

    $('.pageBrowser').html('page : <ul>' + $.json2dom(res).html() +'</ul>');
    $('.pageBrowser a').bind('click', updateCurrentPage);
  } else {
    $('.pageBrowser').html('');
  }
}

function filter(event) {
  var itemPerPage = 5;
  args = $('#filter').serialize();
  $.ajax({
    type:'POST',
    async:true,
    url:'/fr/general/resultat/',
    data:args,
    dataType:'json',
    success:function(result){
      if (!$('#map').length) {
        window.location.href='/';
      } else {
        $('#noResults').remove();
        updatePageBrowser(itemPerPage, result.length);
        $('#result li[id!="res0"]').hide();
        var markers = gml.overlayman.markers;
        var currentPage = parseInt($('#currentPage').val());
        for (i=0;i<markers.length;i++) {
          markers[i].hide();
          for(j=0;j<result.length;j++) {
            if (markers[i].id==('event' + result[j])) {
              markers[i].show();
              if (j>=(currentPage-1)*itemPerPage && j<currentPage*itemPerPage) {
                $('#result li#res' + result[j]).show();
              }
            }
          }
        }
        if(!result.length) {
          $('#result').prepend('<li id="noResults">Pas de résultats</li>');
          $('#noResults').show();
        }
      }
    },
    error:function(result){
      if (console) {
        console.log(result);
      }
    }
  });
  $('#result li#res0').show();
}

$(window).load(function() {

  $('#slideshow').cycle({
    fx: 'scrollLeft',
    delay:2000
  });

  $('#filter').submit(function(event){
    event.stopPropagation();
    event.preventDefault();
  });

  var defaultLatitude = 47.995953;
  var defaultLongitude = -4.099917;
  var defaultZoom = 9;

  var mapCanvas = $('#map');
  if (mapCanvas.length) {
    var map, defaultIcon;

    map = new GMap2(mapCanvas[0]);
    map.setCenter(new GLatLng(defaultLatitude, defaultLongitude), defaultZoom);
    map.setUIToDefault();

    defaultIcon = new GIcon();
    defaultIcon.iconSize = new GSize(21, 32);
    defaultIcon.iconAnchor = new GPoint(10, 32);
    defaultIcon.infoWindowAnchor = new GPoint(21, 32);

    gml = new GeoXml("gml", map, "http://annees20-30.cornouaille.com/fr/general/kml/", {baseicon:defaultIcon, sidebarid:"sidebar"});
    gml.parse();
    GEvent.addListener(gml, 'parsed', function(){
      filter();
    });
  }
  var mapOneCanvas = $('#mapOne');

  if (mapOneCanvas.length) {
    var map, defaultIcon;

    map = new GMap2(mapOneCanvas[0]);
    map.setCenter(new GLatLng(defaultLatitude, defaultLongitude), defaultZoom);
    map.setUIToDefault();

    var latitude = defaultLatitude;
    var longitude = defaultLongitude;
    if($('#latitude').val()) {
      latitude = parseFloat($('#latitude').val());
      longitude = parseFloat($('#longitude').val());
    }
    if ($('#panel').length) {
      var options = {draggable : true};
    } else {
      var eventIcon = new GIcon();
      eventIcon.image = 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=|' + $('#color').val() + '|000000';
      eventIcon.iconSize = new GSize(21, 32);
      eventIcon.iconAnchor = new GPoint(10, 32);
      eventIcon.infoWindowAnchor = new GPoint(21, 32);
      var options = {icon:eventIcon};
    }

    var marker = new GMarker(new GLatLng(latitude, longitude), options);
    GEvent.addListener(marker, 'dragend', function(latlng) {
      $('#latitude').val(latlng.lat());
      $('#longitude').val(latlng.lng());
      window.edited[$('#latitude').data('parent')] = true;
    })
    map.addOverlay(marker);
  }

  $('.filter').bind('change', filter);

});

