// ///////////////////////////////////////////////////////////////////////////
// Neuen Record anlegen / Record bearbeiten
//

function yellowpages_create_step2forward()
{

  if(category_proposed) {
  	$("#yellowpages_create .toggle_form .form_content.basedata p.categoryproposehint").show();
  } else {
  	$("#yellowpages_create .toggle_form .form_content.basedata p.categoryproposehint").hide();
  }

  $("#yellowpages_create .toggle_form .title .item.category").removeClass("active");
  $("#yellowpages_create .toggle_form .title .item.category").addClass("inactive");

  $("#yellowpages_create .form_content.category").fadeOut(500, function() {
    
    $('#yellowpages_create form .form_content.basedata').fadeIn(500, function() { 
	  $("#yellowpages_create .toggle_form .title .item.details").removeClass("inactive");
      $("#yellowpages_create .toggle_form .title .item.details").addClass("active");
    });
  });
}

function yellowpages_create_step1backward()
{

  $("#yellowpages_create .toggle_form .title .item.details").removeClass("active");
  $("#yellowpages_create .toggle_form .title .item.details").addClass("inactive");

  $("#yellowpages_create .form_content.basedata").fadeOut(500, function() {
    
    $('#yellowpages_create form .form_content.category').fadeIn(500, function() { 
	  $("#yellowpages_create .toggle_form .title .item.category").removeClass("inactive");
      $("#yellowpages_create .toggle_form .title .item.category").addClass("active");    
    });
  });
}

function yellowpages_create_onchangecategory()
{
  
  var category = $("#yellowpages_create form .form_content.category select[name=category]");
  var subcategory = $("#yellowpages_create form .form_content.category select[name=subcategory]");
  
  $("#yellowpages_create form .form_content.category div.disablesubcategory").css("visibility", "hidden")
  subcategory.attr("value", "");
  subcategory.html("");
  
  
  if(category.attr("value")) {
  	jQuery.get("/werwaswo/unterkategorie/"+category.attr("value"), function(data, status) {
  	  if(data) {
  	    subcategory.html(data);
  	    $("#yellowpages_create form .form_content.category div.disablesubcategory").css("visibility", "visible");
  	  }
  	});
  }
  
}

/**
 *
 */
function yellowpages_create_step3forward()
{

  $("#yellowpages_create form .message_error ul li").remove();
  $("#yellowpages_create form .message_error_hide").hide();
  
  $("#yellowpages_create form .basedata input, #yellowpages_create form .basedata select, #yellowpages_create form .basedata textarea").removeClass("error");
  
  var name = $("#yellowpages_create form .basedata input[name=name]").attr("value");
  var street = $("#yellowpages_create form .basedata input[name=street]").attr("value");
  var zip = $("#yellowpages_create form .basedata input[name=zip]").attr("value");
  var city = $("#yellowpages_create form .basedata input[name=city]").attr("value");
  var country = $("#yellowpages_create form .basedata select[name=country]").attr("value");
  
  error = false;
  
  if(name == "") {
    $("#yellowpages_create form .basedata input[name=name]").addClass("error");
    $("#yellowpages_create form .message_error ul").append('<li class="inputerror">Bitte einen Name angeben.</li>');
  	error = true;
  }
  
  if(street == "") {
    $("#yellowpages_create form .basedata input[name=street]").addClass("error");
    $("#yellowpages_create form .message_error ul").append('<li class="inputerror">Bitte eine StraÃŸe angeben.</li>');
  	error = true;
  }
  
  if(zip == "") {
    $("#yellowpages_create form .basedata input[name=zip]").addClass("error");
    $("#yellowpages_create form .message_error ul").append('<li class="inputerror">Bitte eine Postleitzahl angeben.</li>');
  	error = true;
  }
  
  if(city == "") {
    $("#yellowpages_create form .basedata input[name=city]").addClass("error");
    $("#yellowpages_create form .message_error ul").append('<li class="inputerror">Bitte eine Stadt angeben.</li>');
  	error = true;
  }

  if(country == "") {
    $("#yellowpages_create form .basedata select[name=country]").addClass("error");
    $("#yellowpages_create form .message_error ul").append('<li class="inputerror">Bitte eine Land angeben.</li>');
  	error = true;
  }

  if(error) {
    $("#yellowpages_create form .message_error_hide").show();
    return;
  }

  $("#yellowpages_create form button.recordnext").css("visibility", "hidden");
  $("#yellowpages_create form button.categoryback").css("visibility", "hidden");
  var location = street+", "+zip+" "+city;
  geocoder = new GClientGeocoder();
  geocoder.setBaseCountryCode(country);
  geocoder.getLocations(location, yellowpages_create_step3forward_callback);
}

/**
 *
 */
function yellowpages_create_step2backward()
{

  if(category_proposed) {
  	$("#yellowpages_create .toggle_form .form_content.basedata p.categoryproposehint").show();
  } else {
  	$("#yellowpages_create .toggle_form .form_content.basedata p.categoryproposehint").hide();
  }

  $("#yellowpages_create .toggle_form .title .item.map").removeClass("active");
  $("#yellowpages_create .toggle_form .title .item.map").addClass("inactive");

  $("#yellowpages_create .form_content.mapdata").fadeOut(500, function() {
    $("#yellowpages_create .toggle_form .title .details.details").removeClass("inactive");
    $("#yellowpages_create .toggle_form .title .details.details").addClass("active");
    $("#yellowpages_googlemap .googlemap").html("");
    $('#yellowpages_create form .form_content.basedata').fadeIn(500);
  });
}

/**
 *
 */
var yellowpages_create_step3forward_callback2_alternativePositions = new Array();
var yellowpages_create_step3forward_callback2_marker = null;
function yellowpages_create_step3forward_callback(response)
{
  
  if(response.Status.code != G_GEO_SUCCESS) {
    $("#yellowpages_create form .message_error ul").html('<li class="geoerror">Deine Eingabe ist leider unvollständig: Aus den Angaben konnte leider keine Geo-Koordinaten erzeugt werden. Bitte überprüfe deine Angaben.</li>');
    $("#yellowpages_create form .message_error_hide").show();
    $("#yellowpages_create form button.recordnext").css("visibility", "visible");
    $("#yellowpages_create form button.categoryback").css("visibility", "visible");
    
    $("#yellowpages_create form .basedata input[name=street]").addClass("error");
    $("#yellowpages_create form .basedata input[name=zip]").addClass("error");
    $("#yellowpages_create form .basedata input[name=city]").addClass("error");
    $("#yellowpages_create form .basedata select[name=country]").addClass("error");
    
    return;
  }
  
  yellowpages_create_step3forward_callback2_alternativePositions = new Array();
  var i=0;
  var firstpoint;
  var firstpoint2;
  for(i=0;i<response.Placemark.length;i++) {
  
    var place = response.Placemark[i];
    if(i == 0) {
      firstpoint2 = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
    }
    if((!place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality || !place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.PostalCode) && !place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode) continue;
  
      
    var position = { 
      lat: place.Point.coordinates[1],
      lon: place.Point.coordinates[0]
    };
    
    if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare) {
      position.street = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
    } else {
      position.street = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.Thoroughfare.ThoroughfareName;
    }
    
    if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode) {
      position.zip = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;
    } else {
      position.zip = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.PostalCode.PostalCodeNumber;
    }
    
    position.city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
    position.country = place.AddressDetails.Country.CountryNameCode;
      
    if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality && place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.DependentLocalityName) {
      position.district = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.DependentLocality.DependentLocalityName;
    }
      
    yellowpages_create_step3forward_callback2_alternativePositions[i] = position;
    
    if(!firstpoint) {
      firstpoint = new GLatLng(position.lat, position.lon);
    }
  }
  
  if(!firstpoint) {
    firstpoint = firstpoint2;
  }
  
  if(!firstpoint) {
    $("#yellowpages_create form .message_error ul").html('<li class="geoerror">Deine Eingabe ist leider unvollständig: Aus den Angaben konnte leider keine Geo-Koordinaten erzeugt werden. Bitte überprüfe deine Angaben.</li>');
    $("#yellowpages_create form .message_error_hide").show();
    $("#yellowpages_create form button.recordnext").css("visibility", "visible");
    $("#yellowpages_create form button.categoryback").css("visibility", "visible");
    
    $("#yellowpages_create form .basedata input[name=street]").addClass("error");
    $("#yellowpages_create form .basedata input[name=zip]").addClass("error");
    $("#yellowpages_create form .basedata input[name=city]").addClass("error");
    $("#yellowpages_create form .basedata select[name=country]").addClass("error");
    
    return;
  }

  $("#yellowpages_create .toggle_form .title .item.details").removeClass("active");
  $("#yellowpages_create .toggle_form .title .item.details").addClass("inactive");

  $("#yellowpages_googlemap .availableaddress").html("");

  $("#yellowpages_create form div.form_content.basedata").fadeOut(500, function() {
   
    $("#yellowpages_create form button.recordnext").css("visibility", "visible");
    $("#yellowpages_create form button.categoryback").css("visibility", "visible");

    $("#yellowpages_create .toggle_form .title .item.map").removeClass("inactive");
    $("#yellowpages_create .toggle_form .title .item.map").addClass("active");

    $("#yellowpages_create form input[name=lat]").attr("value", firstpoint.lat());
    $("#yellowpages_create form input[name=lon]").attr("value", firstpoint.lng());

    $("#yellowpages_create form .mapdata").show();

	
	yellowpages_map_create(firstpoint.lat(), firstpoint.lng(), 15, false, false);
	yellowpages_create_step3forward_callback2_marker = yellowpages_map_addmarker(1, 1, firstpoint, false, true, true);
	GEvent.addListener(yellowpages_create_step3forward_callback2_marker, "dragend", function(point) {
      $("#yellowpages_create form input[name=lat]").attr("value", point.lat());
      $("#yellowpages_create form input[name=lon]").attr("value", point.lng());
    });
	
	if(yellowpages_create_step3forward_callback2_alternativePositions.length > 1) {
	  var list_html = '';
	  list_html += '<h3 style="margin: 0; padding: 0;">Meinten sie: </h3>';
	  
	  for(i=0;i<yellowpages_create_step3forward_callback2_alternativePositions.length;i++) {
	    var address = '';
        address += yellowpages_create_step3forward_callback2_alternativePositions[i].street; 
        address += ", "+yellowpages_create_step3forward_callback2_alternativePositions[i].zip;
        address += " "+yellowpages_create_step3forward_callback2_alternativePositions[i].city;
        if(yellowpages_create_step3forward_callback2_alternativePositions[i].district) {
          address += " "+yellowpages_create_step3forward_callback2_alternativePositions[i].district;
        }
        address += ", "+yellowpages_create_step3forward_callback2_alternativePositions[i].country;
        
        list_html += '<a href="" onclick="yellowpages_create_step3_changealternative('+i+', this); return false;">'+address+'</a><br />';
	  }
	  
	  $("#yellowpages_googlemap .availableaddress").html(list_html);
	}
  });
  
  
}

function yellowpages_create_step3_changealternative(i, obj)
{
  yellowpages_create_step3forward_callback2_marker.setLatLng(new GLatLng(yellowpages_create_step3forward_callback2_alternativePositions[i].lat, yellowpages_create_step3forward_callback2_alternativePositions[i].lon));
  currentmap.panTo(yellowpages_create_step3forward_callback2_marker.getPoint());
 
  $("#yellowpages_googlemap .availableaddress a").removeClass("selected");
  $(obj).addClass("selected");
  
  $("#yellowpages_create form input[name=lat]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].lat);
  $("#yellowpages_create form input[name=lon]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].lon);
  $("#yellowpages_create form input[name=street]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].street);
  $("#yellowpages_create form input[name=zip]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].zip);
  $("#yellowpages_create form input[name=city]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].city);
  $("#yellowpages_create form select[name=country]").attr("value", yellowpages_create_step3forward_callback2_alternativePositions[i].country);
}

/**
 *
 */
function yellowpages_upload_record_image(srcid, targetid, obj)
{
  $("#yellowpages_create form .message_error_hide").hide();
  $("#yellowpages_create form .message_error ul li").remove();

  $("#yellowpages_create form button.recordnext").css("visibility", "hidden");

  $("#"+srcid).appendTo("#yellowpages_create_record_photo_upload_fakeform");
  
  $("#yellow_pages_upload_record_image_preview input[type=hidden]").attr("value", "");
  $("#yellow_pages_upload_record_image_preview").hide();
  $("#yellow_pages_upload_record_image_input").hide();
  $("#yellow_pages_upload_record_image_loader").show();

  $("#yellowpages_create_record_photo_upload_fakeform").submit();

  $("#"+srcid).clone().attr("value", "").removeClass("error").appendTo("#yellow_pages_upload_record_image_input");
  $("#yellowpages_create_record_photo_upload_fakeform").html("");
}

/**
 *
 */
function yellowpages_upload_record_image_display(name)
{
	$("#yellow_pages_upload_record_image_loader").hide();
	
	$("#yellow_pages_upload_record_image_error").hide();
	$("#yellow_pages_upload_record_image_preview img").attr("src", "/uploads/yellowpages/preview/"+name+"_large.png");
	$("#yellow_pages_upload_record_image_preview input[type=hidden]").attr("value", name);
	$("#yellow_pages_upload_record_image_preview").show();
	
	$("#yellow_pages_upload_record_image_input").show();
	$("#yellowpages_create form button.recordnext").css("visibility", "visible");
}

/**
 *
 */
function yellowpages_upload_record_image_error(message)
{
	$("#yellow_pages_upload_record_image_loader").hide();

    $("#yellowpages_create form .message_error ul").append('<li class="uploaderror">'+message+'</li>');
    $("#yellowpages_create form .message_error_hide").show();
	$("#yellow_pages_upload_record_image_input input").addClass("error");
	
	$("#yellow_pages_upload_record_image_input").show();
	$("#yellowpages_create form button.recordnext").css("visibility", "visible");
}

// ///////////////////////////////////////////////////////////////////////////
// Suche
//

/** Handler fÃ¼r das Starten einer Suche
 *
 */
function yellowpages_onsearch()
{
  var location = $("#yellowpages_searchbox .searchform input[name=location]").attr("value");
	
  if(!location) {
    yellowpages_onsearch_location_callback(null);
    return;
  }
	
  geocoder = new GClientGeocoder();
  geocoder.setBaseCountryCode("de");
  geocoder.getLatLng(location, yellowpages_onsearch_location_callback);
	
}

/** Callback fÃ¼r GClientGeocoder::getLatLng() aus yellowpages_onsearch()
 * 
 * @param GLatLng point
 */
function yellowpages_onsearch_location_callback(point)
{
	
  if(!point) {
    point = new GLatLng(-1, -1);
  } 

  jQuery.post(
    $("#yellowpages_searchbox form").attr("action"),
    {
      pattern: $("#yellowpages_searchbox .searchform input[name=pattern]").attr("value"),
      location: $("#yellowpages_searchbox .searchform input[name=location]").attr("value"),
      lat: point.lat(),
      lon: point.lng()
    },	
    function(data, status) {
      $("#yellowpages_categories").remove();
      $("#yellowpages_searchresults").html(data);
    }
  );
}


// ///////////////////////////////////////////////////////////////////////////
//
//

function yellowpages_closer_toggle(obj)
{

	var parent = obj.parentNode;
	
	while(parent && !$(parent).hasClass("content")) {
		parent = parent.parentNode;
	}

	if(!parent) return;

	$(parent).find(".closer").css("visibility", "hidden");
	$(parent).find(".closer .right, .closer .left").toggleClass("inactive").toggleClass("active");
	$(parent).find(".closeable").slideToggle(1000, function() {
		$(parent).find(".closer").css("visibility", "visible"); 
	});

}

// ///////////////////////////////////////////////////////////////////////////
//
//

function yellow_pages_previewstars(obj, value)
{
	$(obj.parentNode).find(".star").each(function(i, obj) {
		$(obj).removeClass("filled").removeClass("empty");
		if(i < value) $(obj).addClass("filled");
		else $(obj).addClass("empty");
	});
}

function yellow_pages_previewstars_reset(obj)
{
	var value = parseInt($(obj.parentNode).find("input[type=hidden]").attr("value"));
	$(obj.parentNode).find(".star").each(function(i, obj) {
		$(obj).removeClass("filled").removeClass("empty");
		if(i < value) $(obj).addClass("filled");
		else $(obj).addClass("empty");
	});
}

function yellow_pages_setstars(obj, value)
{
	$(obj.parentNode).find("input[type=hidden]").attr("value", value);
}


// ///////////////////////////////////////////////////////////////////////////
// Comment Abuse
//

/**
 *
 */
function yellowpages_commentabuse_open(id)
{
  if($("#yellowpages_comment_abuse_"+id).css("display")!="block") {
    $("#yellowpages_record_comments .comment .footline .abuse .form").each(function(i, obj) {
      if(obj.id!="yellowpages_comment_abuse_"+id) {
        $(obj).slideUp(500);
      }
    });
    $("#yellowpages_comment_abuse_"+id).slideDown(500);
  } else {
    $("#yellowpages_comment_abuse_"+id).slideUp(500);
  }
}

/**
 *
 */
function yellowpages_commentabuse_submit(id, url)
{
  jQuery.post(
    url,
    {
      name: $("#yellowpages_comment_abuse_"+id+" input[name=name]").attr("value"),
      email: $("#yellowpages_comment_abuse_"+id+" input[name=email]").attr("value"),
      reason: $("#yellowpages_comment_abuse_"+id+" textarea[name=reason]").attr("value")
    },
    function(data, status) {
      if(data == "ok") {
      	$("#yellowpages_comment_abuse_"+id).slideUp();
      } else {
      	alert("Die Nachricht konnte nicht verschickt werden. Bitte Ã¼berprÃ¼fe deine Eingaben.");
      }
    }
  );
}

// ///////////////////////////////////////////////////////////////////////////
// propose category
//

var category_proposed = false;
function yellowpages_propose_category(url)
{
  var value = $("#yellowpages_create form .category .propose input[name=propose]").attr("value");
  
  if(value == "") {
    return;
  }
  
  jQuery.get(url, { propose: value }, function(data, status) {
    $("#yellowpages_create form .category div.propose").hide();
    category_proposed = true;
    yellowpages_create_step2forward();
    //$("#yellowpages_create form .category div.propose div.message").html(data);
    //$("#yellowpages_create form .category div.propose div.message").show();
  });
  
}

// ///////////////////////////////////////////////////////////////////////////
// 
//

function yellowpages_load_commentcomments(url, id)
{

  var target = $("#yellowpages_comment_subcomments_"+id); 

  if(target.css("display") == "block") {
    target.slideUp(500);
    return;
  }
 
  if(jQuery.trim(target.html()) != "<!--  -->") {
    target.slideDown(500);
    return;
  }

  jQuery.get(url, function(data, status) {
    if(data) {
      target.html(data);
      target.slideDown(500);
    }
  });
}


function yellowpages_submit_commentcomments(url, id)
{
  var params = { text: $("#yellowpages_comment_subcomments_"+id+" form textarea[name=text]").attr("value") };
  
  if($("#yellowpages_comment_subcomments_"+id+" form input[name=helpful]").attr("checked")) {
    params['helpful'] = $("#yellowpages_comment_subcomments_"+id+" form input[name=helpful]").attr("value");
  }
  
  if($("#yellowpages_comment_subcomments_"+id+" form input[name=wellwritten]").attr("checked")) {
    params['wellwritten'] = $("#yellowpages_comment_subcomments_"+id+" form input[name=wellwritten]").attr("value");
  }
  
  jQuery.post(url, params, function(data, status) {
      $("#yellowpages_comment_subcomments_"+id).html(data);
    }
  );
}

// ///////////////////////////////////////////////////////////////////////////
// 
//

var current_markers = new Array();
var selected_marker = -1;
var currentmap = null;
var used_markers = new Array();
function yellowpages_map_create(lat, lng, zoom, clickable)
{
	if(!GBrowserIsCompatible || !GBrowserIsCompatible()) return;

	currentmap = new GMap2($("#yellowpages_googlemap .googlemap").get(0));
	currentmap.addControl(new GSmallMapControl());
	currentmap.addControl(new GMapTypeControl());
	currentmap.enableScrollWheelZoom()
	currentmap.setCenter(new GLatLng(lat, lng), zoom);

	GEvent.addListener(currentmap, "zoomend", function() {
		if(selected_marker < 0) return;
		yellowpages_mapinfo_overlayposition(selected_marker);
	});

	GEvent.addListener(currentmap, "move", function() {
		if(selected_marker < 0) return;
		yellowpages_mapinfo_overlayposition(selected_marker);
	});

	GEvent.addListener(currentmap, "click", function(Overlay,  latlng) {
		if(selected_marker < 0 || Overlay || !latlng) return;
		yellowpages_mapinfo_setunselect(selected_marker);
	});
	
	current_markers = new Array();
	used_markers = new Array();
	selected_marker = -1
}

var yellowpages_map_marker_zindex = 10;
function yellowpages_map_addmarker(id, position, latlng, clickable, defaulticon, moveable)
{

  if(!GBrowserIsCompatible || !GBrowserIsCompatible()) return;

  if(defaulticon) {
    var img_1 = "/images/icons/maps/marker1.png"
    var img_2 = "/images/icons/maps/marker2.png"
  } else {
    if(position < 10) {
      img_nr = "0"+position;
    } else {
      img_nr = position;
    }
    var img_1 = "/images/icons/maps/marker1_"+img_nr+".png"
    var img_2 = "/images/icons/maps/marker2_"+img_nr+".png"
  }

  var icon = new GIcon();
  icon.image = img_1;
  icon.shadow = "/images/icons/maps/marker_shadow.png";
  icon.iconSize = new GSize(30, 30);
  icon.shadowSize = new GSize(45, 45);
  icon.iconAnchor = new GPoint(15, 15);
  icon.infoWindowAnchor = new GPoint(15, 0);

  var opts = {
    "icon": icon,
    "title":  "",
    "zIndexProcess": function(obj) {
      return yellowpages_map_marker_zindex--;
    },
    "clickable": clickable,
    "draggable": moveable
  };

  current_markers[id] = new GMarker(latlng, opts);

  if(clickable) {

    GEvent.addListener(current_markers[id], "click", function(marker, point) {
      yellowpages_mapinfo(id, true);
    });

    GEvent.addListener(current_markers[id], "mouseover", function(marker, point) {
      if(selected_marker >=0 && yellowpages_mapinfo_ismarkervisible(selected_marker)) return;
      $("#googlemap_infooverlay .background .overlaycontent").html($("#yellow_pages_result_"+id+" .googlemap_record_hint").html());
      yellowpages_mapinfo_overlayposition(position-1);
      current_markers[id].setImage(img_2);
    });

    GEvent.addListener(current_markers[id], "mouseout", function(marker, point) {
      if(selected_marker >=0 && yellowpages_mapinfo_ismarkervisible(selected_marker)) return;
      $("#googlemap_infooverlay").hide();
      if(selected_marker != position-1) {
      	current_markers[id].setImage(img_1);
      }
    });

    used_markers.push(id);

  }

  currentmap.addOverlay(current_markers[id]);
  return current_markers[id];
}

var yellowpages_map_marker_oldzindex = -1;
function yellowpages_mapinfo(id)
{
	var i;

	if(selected_marker >= 0) {
		if(used_markers[selected_marker] != id) {
		  yellowpages_mapinfo_setunselect(selected_marker);
		} else {
			if(yellowpages_mapinfo_ismarkervisible(selected_marker)) {
				yellowpages_mapinfo_setunselect(selected_marker);
			} else {
				currentmap.panTo(current_markers[id].getPoint());
			}

			return;
		}
	}

	for(i=0;i<used_markers.length;i++) {

		if(!used_markers[i] || !current_markers[used_markers[i]]) {
			continue;
		}

		if(used_markers[i] == id) {
			yellowpages_mapinfo_setactive(i);
		} else {
			yellowpages_mapinfo_setinactive(i);
		}
	}
}

function yellowpages_mapinfo_setactive(position)
{
	var record_image = $("#yellow_pages_result_"+used_markers[position]+" .title img");
	var marker = current_markers[used_markers[position]];
	var p = position+1;
	if(p < 10) {
	  p = "0"+p;
	} else {
	  p = p;
	}
	var marker_image = $("div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker1_"+p+".png], div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker2_"+p+".png]");

	selected_marker = position;

	record_image.attr("origsrc", record_image.attr("src"));
	record_image.attr("src", "/images/icons/maps/marker2_"+p+".png");
	marker.setImage(record_image.attr("src"));

	yellowpages_map_marker_oldzindex = marker_image.css("z-index");
	marker_image.css("z-index", "11");

	$("#googlemap_infooverlay .background .overlaycontent").html($("#yellow_pages_result_"+used_markers[position]+" .googlemap_record_hint").html());

	yellowpages_mapinfo_overlayposition(position);
	currentmap.panTo(marker.getPoint());
}

function yellowpages_mapinfo_setunselect(position)
{

	yellowpages_mapinfo_setinactive(position)

	$("#googlemap_infooverlay").hide();
	var p = position+1;
	if(p < 10) {
	  p = "0"+p;
	} else {
	  p = p;
	}
	$("div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker1_"+p+".png], div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker2_"+p+".png]").css("z-index", yellowpages_map_marker_oldzindex);
	selected_marker = -1;
}

function yellowpages_mapinfo_setinactive(position)
{ 
 	var record_image = $("#yellow_pages_result_"+used_markers[position]+" .title img");
	var marker = current_markers[used_markers[position]];
	var p = position+1;
	if(p < 10) {
	  p = "0"+p;
	} else {
	  p = p;
	}
	var marker_image = $("div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker1_"+p+".png], div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker2_"+p+".png]");

	marker.setImage(record_image.attr("origsrc"));
	record_image.attr("src", record_image.attr("origsrc"));
}

function yellowpages_mapinfo_ismarkervisible(position)
{
	var p = position+1;
	if(p < 10) {
	  p = "0"+p;
	} else {
	  p = p;
	}
	var marker_image = $("div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker1_"+p+".png], div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker2_"+p+".png]");

	var marker_offset = marker_image.offset();
	var marker_width = marker_image.width();
	var marker_height = marker_image.height();

	var map = $("#yellowpages_googlemap .googleborder .googlemap");
	var map_offset = map.offset();
	var map_height = map.height();
	var map_width = map.width();

	if(marker_offset.left+marker_width     > map_offset.left + map_width  || marker_offset.left+marker_width     < map_offset.left ||
	   marker_offset.top+(marker_height/2) > map_offset.top  + map_height || marker_offset.top+(marker_height/2) < map_offset.top) {
	   return false;
	}

	return true;
}

function yellowpages_mapinfo_overlayposition(position)
{
	//var marker = $("#mtgt_unnamed_"+position);
	var p = position+1;
	if(p < 10) {
	  p = "0"+p;
	} else {
	  p = p;
	}
	var marker = $("div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker1_"+p+".png], div#yellowpages_googlemap_toggle img[src=/images/icons/maps/marker2_"+p+".png]");
	
	var offset = marker.offset();
	var width = marker.width();
	var height = marker.height();

	var overlay_top = offset.top + (height/2) - 275;
	var overlay_left = offset.left + width - 15;

	$("#googlemap_infooverlay").css("top", overlay_top).css("left", overlay_left);

	var map = $("#yellowpages_googlemap .googleborder .googlemap");
	var map_offset = map.offset();
	var map_height = map.height();
	var map_width = map.width();


	if(!yellowpages_mapinfo_ismarkervisible(position)) {
		$("#googlemap_infooverlay").hide();
	} else {
		$("#googlemap_infooverlay").show();
	}
}
