var defaultMapZoom = 12;

categories_array = new Array();
// init checked pois
categories_array = [101, 201, 202, 203, 204, 205, 206, 207] //208, 301, 302, 303, 304, 305, 306, 307];


var zangoa = window.zangoa || {};
zangoa.settings = zangoa.settings || {
	               mapType: 0,
	               categories: categories_array	 ,
	               wikipedia: 1
//	               zoom: 6,
//	               lat: 40.162083,
//	               lon: -1.867676,

                 };

function setCenterMap(lat, lng, zoom) {
	if (map.getCurrentMapType().getMaximumResolution()<zoom) {
	 	zoom=map.getCurrentMapType().getMaximumResolution();
	}
	map.setCenter(new GLatLng(lat, lng), zoom);
}

function setCenterMap(ne_lat, ne_lng, sw_lat, sw_lng) {
	bounds = new GLatLngBounds(new GLatLng(sw_lat, sw_lng), new GLatLng(ne_lat, ne_lng));
	map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	
}


function pageselectCallbackMap(page_index, jq){
	$('#map_item_list').empty();
	for (i=0;i<10;i++) {
       var new_content = $('#map_item_list_ajax div.result:eq('+(page_index*10+i)+')').clone();
       $('#map_item_list').append(new_content);
    }
    return false;
}

 /** 
  * Callback function for the AJAX content loader.
  */
function initPaginationMap() {
     var num_entries = $('#map_item_list_ajax div.result').length;
     // Create pagination element
     $("#PaginationMap").pagination(num_entries, {
         callback: pageselectCallbackMap
     });
}  


function pageselectCallback(page_index, jq){
	$('#list-results-item').empty();
	for (i=0;i<10;i++) {
       var new_content = $('#list-results-item-ajax div.result:eq('+(page_index*10+i)+')').clone();
       $('#list-results-item').append(new_content);
    }
    return false;
}

 /** 
  * Callback function for the AJAX content loader.
  */
function initPagination() {
     var num_entries = $('#list-results-item-ajax div.result').length;
     // Create pagination element
     $("#Pagination").pagination(num_entries, {
         callback: pageselectCallback
     });
}      


// ====== Geocoding ======
function search() {
		var search = document.getElementById("address-search").value;
		
		if(search=='¿dónde quieres ir?') return;
		if (search.length < 3) {
			$('#result-message').text(translate('search_min_len'));
			$('#results-error').show();
			$('#results-item').hide();
			$('#results-places').hide();
			$('#search-result').show();
		 	return;
		 }
		
		$('#list-results-location').empty();
		$('#list-results-item').empty();
		
		var search_geo = search + ' ,spain';
		var results_geo = 0;
		var results_search = 0;
		var gObject = null; 
		var url_to = '/';
		
 		var params = {
        "search_value": search
        };


		$.ajax({
        url: buildAjaxUrl("/ajax/search/"),
        data: params,
        dataType: 'json',
        async: false,
        cache: false,

        error: function(){},

        success: function(rs,textstatus){
					 //clear list results
					$('#list-results-item ul').empty();
					$('#list-results-places').empty();
					$('#list-results-item-ajax').empty();
					$('#results-error').hide();
					
					results_search = rs.items_count;
					results_geo = rs.places_count;
					
					i = 0;
					if (results_search>10){
						$.each(rs.items, function(i, json) {
							if (json.has_photo && json.credential != 2){
								$('#list-results-item-ajax').append('<div class="result"><li class="premium"><a id="item_'+i+'" href="'+json.url+'">'+json.title+'</a></li></div>');
							} else {
								$('#list-results-item-ajax').append('<div class="result"><li><a id="item_'+i+'" href="'+json.url+'">'+json.title+'</a></li></div>');
							}
						});
						$('#results-item').show();
					} else if (results_search>0){
						$.each(rs.items, function(i, json) {
							if (json.has_photo && json.credential != 2){
								$('#list-results-item').append('<li class="premium"><a id="item_'+i+'" href="'+json.url+'">'+json.title+'</a></li>');
							} else {
								$('#list-results-item').append('<li><a id="item_'+i+'" href="'+json.url+'">'+json.title+'</a></li>');
							}
						});
					} else {
						$('#list-results-item').append('<li>No se han encontrado alojamientos con este nombre</li>');
					}
					if (results_geo>0){
					    $.each(rs.places, function(i, json) {
				            $('#list-results-places').append('<li><a id="place_'+i+'" href="#">'+json.name+'</a></li>');
				            $('#place_'+i).click(function() { setLocation(json.lat, json.lon); }); 
					    });
					    $('#results-places').show();
					} else {
						$('#list-results-places').append('<li>No se han encontrado localidades con este nombre</li>');
					}
				  $('#search-result').show();

				  if (results_search>10){
					  initPagination();
				  } else {
						$('#list-results-item-ajax').empty();
						$("#Pagination").empty();
				  }
        }
    });		
}


function searchMapDetail() {
	var search = document.getElementById("mapdetail-search").value;

	var params = {
      "search_value": search
      };

	$('#error-msg').html('');
	
	$.ajax({
        url: buildAjaxUrl("/ajax/search_detail/"),
        data: params,
        dataType: 'json',
        async: false,
        cache: false,

        error: function(){},

        success: function(rs,textstatus){
					
				if (rs.places.length>0){
					    $.each(rs.places, function(i, json) {
	            		map.setCenter(new google.maps.LatLng(json.lat, json.lon), 14);
	            		map.clearOverlays(); 
	            		addItemMapDetail();
					    });
					} else {
						$('#error-msg').html('No se han encontrado localidades con este nombre');
					}
        }
    });		
}

function addItemMapDetail() {
	var item = new GMarker(map.getCenter(), {draggable: true});
  map.addOverlay(item);
  //$("#id_longitude").val(map.getCenter().lng());
 // $("#id_latitude").val(map.getCenter().lat());
  /*
  GEvent.addListener(item, "dragend", function(){
    var point_ = this.getLatLng();
    var lon = point_.lng();
    var lat = point_.lat();
    $("#id_longitude").val(lon);
    $("#id_latitude").val(lat);
  });
  */
  GEvent.addListener(map,'click',function(overlay,latlng,overlaylatlng){
    if (latlng) {
      item.setLatLng(latlng);
    //  $("#id_longitude").val(latlng.lng());
//      $("#id_latitude").val(latlng.lat());
    }
  });

}

function submitenter(myfield,e)
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13){
      search();
      return false;
    } else return true;
}

function submitenterdetail(myfield,e)
{
    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13){
      searchMapDetail();
      return false;
    } else return true;
}

function setLocation(lat, lon, zoom)
{
	if ($('#homepage').length > 0) {
		map.setCenter(new google.maps.LatLng(lat, lon), defaultMapZoom);
		$('a#close-search').click();
	} else {
		if (!zoom) {
			zoom = defaultMapZoom;
		}
		saveStatus(lat, lon, zoom);
		//window.location = '/'+dj_culture;
		window.location = '/';
	}
	
	return false;
}


function loadStatus(){
    var settings = zangoa.settings;
    
    try {
	    var string =  $.cookies.get('zangoamap');
	    if(string){
	        var bits =  string.split("|");
	        settings.lat = parseFloat(bits[0]);
	        settings.lon = parseFloat(bits[1]);
	        settings.zoom = parseInt(bits[2]); 
	        settings.mapType = parseInt(bits[3]);
		      if (bits[4]) {
		        cats = bits[4].split("-");
		        for(var i=0;i< cats.length; i++) {
							cats[i] = parseInt(cats[i])
						}
						settings.categories = cats;
					}
					if (bits.length == 6) {
						settings.wikipedia = parseInt(bits[5])
					}            
	    }
    } catch(e){
    	
    }
     
} //end loadStatus


function saveStatus(lat, lon, zoom){
    var settings = zangoa.settings;
    
    if (lat) settings.lat = lat;
    if (lon) settings.lon = lon;
    if (zoom) settings.zoom = zoom;

    var string = settings.lat + "|" + settings.lon + "|" + settings.zoom + "|" + settings.mapType + "|" + settings.categories + "|" + settings.wikipedia;
    $.cookies.set('zangoamap',string);
} //end saveStatus

function showTooltip(marker) {
	tooltip.innerHTML = marker.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new google.maps.Point(0,0),true),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
	var anchor=marker.getIcon().iconAnchor;
	var width=marker.getIcon().iconSize.width;
	var height=tooltip.clientHeight;
	var pos = new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT, new google.maps.Size(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
	pos.apply(tooltip);
	tooltip.style.visibility="visible";
}

function add_favorite (id_fav) {
   var value_title = $('#title_'+id_fav).val();
   var value_slug = $('#slug_'+id_fav).val();
   var string =  jaaulde.utils.cookies.get('favs_zangoa');
   var add = false;
   if(string) {
     	var bits =  string.split("-");
	 		if (jQuery.inArray(id_fav, bits) == -1) {
	 			//alert('afegint i no trobat');
	 			string = string +'-'+id_fav;
	 			add = true;
	 		} else {
	 			//alert('no afegint pq trobat');
	 		}
	 } else {
	 		//alert('afegint i buit');
	 		add = true;
	 		string = id_fav;
	 }

		if (add) {
			$('#favorites_list').append('<li id="favorite_'+id_fav+'"><a href="'+url_show_item.replace('item_slug/item_slug/item_slug', value_slug)+'">'+value_title+'</a></li>');
			$('#remove_fav_'+id_fav).click(function() { remove_favorite(id_fav+''); }); 
			
 			if ($('#title_'+id_fav)) {
 				$('#add_to_favorite').hide();
 				$('#remove_to_favorite').show();
 			}
 			$('#favorites-explain').hide();
 			$('#favorites-contact').show();
 			//$('#box-favorites').show();
		}
		 	
		 	jaaulde.utils.cookies.set('favs_zangoa',string, {hoursToLive: 240});
		 	return false;
}


function remove_favorite(id_fav)  {
 if (!confirmMessage(translate('quit_list'))) return;
 var string =  jaaulde.utils.cookies.get('favs_zangoa');
      if(string){
		 		var bits =  string.split("-");
		 		if (jQuery.inArray(id_fav, bits) > -1) {
		 			$('#favorite_'+id_fav).remove();
		 			$('#favorite_list_'+id_fav).remove();

		 		  bits.splice(jQuery.inArray(id_fav, bits), 1);
		 		  //alert('trobat1'); 
		 		  if ($('#title_'+id_fav)) {
		 				$('#add_to_favorite').show();
		 				$('#remove_to_favorite').hide();
		 			}
		 		} else {
		 			//alert('borrant i no trobat');
		 		}
			}
		 	
		 	if (bits.length == 0) {
		 		$('#favorites-contact').hide();
		 		$('#favorites-explain').show();
		 	}
		 	
		 	string_2_save = bits.join("-");
		 	jaaulde.utils.cookies.set('favs_zangoa',string_2_save, {hoursToLive: 240});
}

function setErrorMsg(text) {
	$("#error_messages").html('<p><span class="ui-icon ui-icon-info" style="float: left; margin-right: 0.3em;"></span><strong>'+text+'</strong></p>');
	$("error_messages_container").show();
	
}

function priceRange2String(range) {
	return parseInt(range*20-19) +'&euro;-'+ parseInt(range*20) +'&euro;'; 
}

function buildAjaxUrl(url) {
	return url;
	//return "/" + dj_culture + url
}

function confirmMessage(message) {
	if (confirm(message)) {
		return true;
	}
	
	return false;
}

function translate(msg_id) {
	switch (msg_id) {
		case 'quit_list':
			switch (dj_culture) {
				case 'es': return 'Estás seguro que lo quieres quitar de Favoritos';
				case 'ca': return 'Estàs segur que el vols treure de la meva llista';
			}
		case 'search_min_len':
			switch (dj_culture) {
				case 'es': return 'Longitud mínima 3 carácteres';
				case 'ca': return 'Longitud mínima 3 caràcters';
			}
		case 'no_home_results':
			switch (dj_culture) {
				case 'es': return 'No hay alojamientos con estas características en esta zona';
				case 'ca': return 'No hi ha allotjaments amb aquestes característiques en aquesta zona';
			}
	}
}
$(document).ready(function(){
	if($.browser.msie && /6.0/.test(navigator.userAgent)){
		var IE_BAR="Internet Explorer está desactualizado para ver este sitio. Haz clic para actualizar...";
		$('body').prepend('<a href="http://www.microsoft.com/windows/internet-explorer/default.aspx" class="ie_bar" target="_blank">' + IE_BAR + '</a>');
	}

	$("#loading-wrapper").bind("ajaxSend", function(){
		   $(this).show();
		 }).bind("ajaxComplete", function(){
		   $(this).hide();
		 });	
});

