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;
    }
    $('#searchform').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); });
}
