/* CITY MAP JAVASCRIPT */

function load_arrondissement(number){
    $("#city-loading").fadeIn();
	
    $('#map-image-arrondissement').attr('src', '/images/map/'+LOCALISATION.ville.code+'/'+number+'.jpg' + "?" + new Date().getTime());
    $('#map-image-arrondissement').load(function(){
		$(this).unbind('load');	
		$('img#map-image-arrondissement').fadeIn(600);
			
		var current_point_zindex = 100;
		$.each(appartements, function(index, apt){
			if (parseInt(apt.arrondissement) == number){
				var elt;
				elt = $('<span class="appartement-point"></span>').css({
					top: apt.map_position_y+'px',
					left: apt.map_position_x+'px'
				});
				$("#map-area-arrondissement").append(elt);
				elt.click(function(){
                    return apartment_map_click(apt.id, apt.url);
					//window.location.href = apt.url; return false;
				});
				elt.hover(function(e){
					current_point_zindex++;
					$(this).css({
						cursor: 'pointer',
						zIndex: current_point_zindex
					});
                    
                    $("#box-image").hide();
                    $("#box-image-loading").show();
					$("#box-image").attr('src', apt.photo + "?" + new Date().getTime());
                    $("#box-image").load(function(){
                        $("#box-image-loading").hide();
                        $("#box-image").show();
                    });
                    
					$("#box-picto").attr('src', apt.type_standing_image);
					$("#box-quartier").html(apt.quartier);
					$("#box-capacite").html(apt.capacite);
					$("#box-surface").html(apt.surface);
					$("#box-tarif").html(apt.tarif);
                    $("#city-apt-box a").unbind().click(function(){ return apartment_map_click(apt.id, apt.url); });
                    //$("#city-apt-box a").attr('href', apt.url);
					$("#city-apt-box").show();
					$(this).animate({width: '18px',height: '18px',top: '-=4',left: '-=4'}, 100).animate({width: '14px',height: '14px',top: '+=2',left: '+=2'}, 100);
				}, function(){
					$(this).animate({
						width: '10px',
						height: '10px',
						top: '+=2',
						left: '+=2'
					}, 100);
					$("#city-apt-box").hide();
				});
			}
		});

		$('#map-image-arrondissement').attr('usemap', '#map-area-arrondissement-'+number);			
		$('map[name="map-area-arrondissement-'+number+'"] area').click(function(){
			$(this).unbind('click');
			$('.appartement-point').remove();
            $("#city-apt-box").hide();
			$('#map-image-arrondissement').fadeOut(600, function(){
			   $('#map-image-arrondissement').removeAttr('src');
			});
			return false;
		});
            
        $("#city-loading").fadeOut();
      });        
}

function run_map(data_url){
    $("#city-noresult").hide();
    $("#city-loading").show();
    var url = data_url+"?date_debut="+$("#date_debut").val()+"&date_fin="+$("#date_fin").val()+"&occupant_nb="+$("#occupant_nb").val()+"&type_standing="+$("input[name='type_standing']:checked").val();
    jQuery.getJSON(url, function(data){
        arrondissements = data.arrondissements;
        appartements = data.appartements;
        if (appartements.length == 0) $("#city-noresult").fadeIn();
        //$("#city-message .nombre").html(appartements.length);
        $("#arrondissement-nb div").removeClass('not-empty');
        $('area[id^="arrondissement-"]').removeClass('not-empty').unbind();
        $.each(arrondissements, function(index, value){
            $("#arrondissement-"+index+"-nb").html(value);
            if (value != 0){
                $("#arrondissement-"+index+"-nb").addClass('not-empty');
                $("area#arrondissement-"+index).addClass('not-empty').attr('href', '#');
            } else {
                $("area#arrondissement-"+index).removeAttr('href');
            }
        });
        
        $('area.not-empty[id^="arrondissement-"]').hover(function(){
            var reg = new RegExp("arrondissement-(.*)");
            var number = parseInt($(this).attr('id').replace(reg, "$1"));            
            $("#city-main-hover-"+number).fadeIn(100);
        }, function(){
            var reg = new RegExp("arrondissement-(.*)");
            var number = parseInt($(this).attr('id').replace(reg, "$1"));            
            $("#city-main-hover-"+number).fadeOut(100);
        });
        
        $('area.not-empty[id^="arrondissement-"]').click(function(){
            var reg = new RegExp("arrondissement-(.*)");
            var number = parseInt($(this).attr('id').replace(reg, "$1"));
            load_arrondissement(number);
            return false;
        });
        
        $("#city-loading").fadeOut();
    });
}

function first_run_map(data_url){
	$('#map-area-main').load('/images/map/'+LOCALISATION.ville.code+'/map.html', function(){
        var blocW = $('#city-apt-box').outerWidth();
        var mapW = $('#city-map').width();
        $('#city-map').mousemove(function(e){
            var relativeX = e.pageX - $('#city-map').offset().left - 60;
            var relativeY = e.pageY - $('#city-map').offset().top + 30;
            if (relativeX > (mapW - blocW)) relativeX = mapW - blocW;
            if (relativeX < 0) relativeX = 0;
            $("#city-apt-box").css({top: relativeY, left: relativeX});
        });
        run_map(data_url);
    });
}

