var save_in_progress = false;

/**
 * initiates the search
 *
 * @author sweber
 */
function doSearch(page) {

	var error = false;

	if(document.getElementById('search_mode')) {

	  var mode  = document.getElementById('search_mode').value;

		if(mode == 'adr_search') {

		  /*
		   * we need to ensure taht zipcode and city are given
		   */
		  var city_fld    = document.getElementById('city');
		  var zipcode_fld = document.getElementById('zipcode');

		  if(city_fld.value == '' && zipcode_fld.value == '') {

			  if(city_fld.value == '') {

					city_fld.style.borderColor = '#CC0000';
					error = true;
			  } else {

					city_fld.style.borderColor = '#C4E0FA';
			  }

			  if(zipcode_fld.value == '' || zipcode_fld.value.length != 5) {

					zipcode_fld.style.borderColor = '#CC0000';
					error = true;
			  } else {

					zipcode_fld.style.borderColor = '#C4E0FA';
			  }
		  }
	  } else {

		  var lat_fld = document.getElementById('search_lat');
		  var lon_fld = document.getElementById('search_lon');

		  if(lat_fld.value == '' || lon_fld.value.length == '') {

				error = true;
		  }
	  }
  }

  if(!error) {

		if(document.getElementById('page') && page != '') {

			document.getElementById('page').value = page;
		}
  	$('#search').submit();
  }
}

/**
 * Saves the acutal search
 *
 * @author
 */
function ajaxSaveSearch() {

	var url = document.getElementById('search').action;

	document.getElementById('search').action = '/search/ajaxSaveSearch';
  $('#search').ajaxSubmit({
      target:   '#ajax_puffer',
      success:  function() { tb_show('','/search/ajaxSearchSaved?save=true&height=200&width=400',''); }
  });

  document.getElementById('search').action = url;
}

/**
 * scrolls down to the meeting point creation and opens the menu
 *
 * @author sweber
 */
function gotoNewMeetingPoint() {

  $('#new_meeting').css('background-image','url(/images/bg/arrow_down.gif)');
  $('#new_meeting').parents("h2").next(".lp-dynamic").slideDown("fast");

  $('body').scrollTo($('#new_meeting'), 1000);
}

/**
 * scrolls down to the search agent overview and opens the menu
 *
 * @author sweber
 */
function gotoSearchAgents() {

  $('#search_agents').css('background-image','url(/images/bg/arrow_down.gif)');
  $('#search_agents').parents("h2").next(".lp-dynamic").slideDown("fast");

  $('body').scrollTo($('#search_agents'), 1000);
}

/**
 * reports an user
 *
 * @author sweber
 */
function doProfileReport() {

  var error = false;

	/*
	 * reason has to be filled.
	 */
  var report_reason = document.getElementById('report_reason');

  if(report_reason.value == '') {

		report_reason.style.borderColor = '#CC0000';
		error = true;
  } else {

		report_reason.style.borderColor = '#C4E0FA';
  }

	if(!error) {

	  $('#report_form').ajaxSubmit({
	      target:   '#TB_ajaxContent'
	  });
	}
}

function ajaxSaveMeetingPlace(meeting_place_id) {

 if(save_in_progress == false) {

	 save_in_progress = true;

	 $('#'+meeting_place_id+'_edit_form').ajaxSubmit({
	      target:   '#results_'+meeting_place_id,
	      success:  function() { save_in_progress = false;
															document.getElementById('zip_city_'+meeting_place_id).innerHTML = document.getElementById(meeting_place_id+'_zip_city').value;
														  document.getElementById('raw_city_'+meeting_place_id).value     = document.getElementById(meeting_place_id+'_raw_city').value; }
	  });
 }
}

function initGoogleMap(mode) {

	if(mode == 'create') {

	  window.setTimeout("drawMap('map_create_', 'create', '');", 100);
	} else {

		var maps   = $(".mpl_j");
		var buffer = '';
		for(counter = 0; counter < maps.length; counter++) {

			if(parseInt(maps[counter].value) > 0) {

	  	  buffer += "drawMap('map_edit_"+maps[counter].value+"', 'edit', '"+maps[counter].value+"');posGoogleMapByKoord("+maps[counter].value+"); ";
			}
		}

		window.setTimeout(buffer, 200);
	}
}

function drawMap(target_id, mode, ele_id) {

	eval("if (map_"+mode+"_"+ele_id+"_holder == null) { " +
			 "  map_"+mode+"_"+ele_id+"_holder = new GMap2(document.getElementById('"+target_id+"'));" +
		   "  map_"+mode+"_"+ele_id+"_holder.addControl(new GSmallZoomControl());" +
		   "  map_"+mode+"_"+ele_id+"_holder.setCenter(new GLatLng('51.344339', '10.415039'), 7);" +
		   "  map_"+mode+"_"+ele_id+"_holder.enableScrollWheelZoom();" +
		   "  GEvent.addListener(map_"+mode+"_"+ele_id+"_holder, 'click', function(overlay, latlng) { "+
       "    map_"+mode+"_"+ele_id+"_holder.clearOverlays();"+
       "    var lat   = latlng.lat();"+
       "    var lon   = latlng.lng();"+
       "    var point = new GLatLng(lat, lon); "+
       "    marker    = new GMarker(point);"+
       "    map_"+mode+"_"+ele_id+"_holder.addOverlay(new GMarker(point));"+
       "    document.getElementById('mpl_"+ele_id+"_lat').value = lat;"+
       "    document.getElementById('mpl_"+ele_id+"_lng').value = lon;"+
       "    map_"+mode+"_"+ele_id+"_holder.addOverlay(new GMarker(point));"+
       "    ajaxSaveMeetingPlace("+ele_id+");"+
       "  });" +
		   "}");
}

function posGoogleMapByString(value, mode, ele_id) {

  geocoder = new GClientGeocoder();
  geocoder.getLatLng(value, function (latlng) { eval("map_"+mode+"_"+ele_id+"_holder.setCenter(new GLatLng('"+latlng.lat()+"', '"+latlng.lng()+"'), 11);"); });
  ajaxSaveMeetingPlace(ele_id);
}

function posGoogleMapByKoord(ele_id) {

  eval("var lat   = document.getElementById('mpl_"+ele_id+"_lat').value;"+
       "var lon   = document.getElementById('mpl_"+ele_id+"_lng').value;"+
       "var point = new GLatLng(lat, lon); "+
       "marker    = new GMarker(point);"+
       "map_edit_"+ele_id+"_holder.setCenter(new GLatLng(lat, lon), 13);" +
       "map_edit_"+ele_id+"_holder.addOverlay(new GMarker(point));" +
       "ajaxSaveMeetingPlace("+ele_id+");");
}

function checkMeetingplaceDatafilled(mode, ele_id) {

	var ele_city = document.getElementById('raw_city_'+ele_id).value;
	var ele_lat  = document.getElementById('mpl_'+ele_id+'_lat').value;
	var ele_lng  = document.getElementById('mpl_'+ele_id+'_lng').value;
	var form     = document.getElementById(ele_id+'_'+mode+'_form')
	var message  = '';

	if(ele_city == '') {

		message = 'Bitte geben Sie einen Ort ein';
	}

	if(ele_lat == '' || ele_lng == '') {

		message += (message.length == 0) ? 'Bitte wählen Sie in der Karte Ihren Treffpunkt aus' : ' und wählen Sie in der Karte Ihren Treffpunkt aus';
	}

	if(message != '') {

		message += '!';
		document.getElementById('message_'+ele_id).innerHTML = message;
		return false;
	} else {

		if(form.action.indexOf('/saveMeetingPlace/true') > 0) {

			ajaxSaveMeetingPlace(ele_id);
			return false;
		} else {

			form.submit();
		}
	}
}

search_map = null;

function changeSearch(atag) {

	document.getElementById('search_mode').value = atag.id;

	if(atag.id == 'address') {

		var lat_fld    = document.getElementById('search_lat').value;
		var lon_fld    = document.getElementById('search_lon').value;

		document.getElementById('lp-form').style.display           = 'none';
		document.getElementById('lp-mapform').style.display        = 'block';
		document.getElementById('normal').className                = 'startsearch_inactive';
		atag.className                                             = 'startsearch_active';
		document.getElementById('card_search_field').style.display = 'block';

	  search_map = new GMap2(document.getElementById('search_mapholder'));
		search_map.addControl(new GSmallZoomControl());
		search_map.setCenter(new GLatLng('51.344339', '10.415039'), 5);
		search_map.enableScrollWheelZoom();
		GEvent.addListener(search_map, 'click', function(overlay, latlng) {
		  search_map.clearOverlays();
		  var lat   = latlng.lat();
		  var lon   = latlng.lng();
		  var point = new GLatLng(lat, lon);
		  marker    = new GMarker(point);
		  search_map.addOverlay(new GMarker(point));
		  document.getElementById('search_lat').value = lat;
		  document.getElementById('search_lon').value = lon;
		});

		if(lat_fld != '') {

		  var point = new GLatLng(lat_fld, lon_fld);
		  marker    = new GMarker(point);
		  search_map.addOverlay(new GMarker(point));
		}
	} else {

		document.getElementById('lp-form').style.display           = 'block';
		document.getElementById('lp-mapform').style.display        = 'none';
		document.getElementById('card_search_field').style.display = 'none';
		document.getElementById('address').className               = 'startsearch_inactive';
		atag.className                                             = 'startsearch_active';
	}
}

/*
 * deaktiviert Flashobjekte
 */
function disableFlashObjects(holder) {

	if(holder) {

	  var list = holder.getElementsByTagName('OBJECT');
	} else {

	  var list = document.getElementsByTagName('OBJECT');
	}

  for(var counter = 0; counter < list.length; counter++) {

    list[counter].style.display = 'none';
  }
}

/*
 * aktiviert Flashobjekte
 */
function enableFlashObjects(holder) {

	if(holder) {

	  var list = holder.getElementsByTagName('OBJECT');
	} else {

	  var list = document.getElementsByTagName('OBJECT');
	}

  for(var counter = 0; counter < list.length; counter++) {

    list[counter].style.display = 'block';
  }
}

function posSearchGMap(value) {

  geocoder = new GClientGeocoder();
  geocoder.getLatLng(value, function (latlng) { search_map.setCenter(new GLatLng(latlng.lat(), latlng.lng()), 11); });
}