<h2>Lege deinen Standort fest:</h2><form id="pu_accountLocationForm" action="/location/save" method="POST"><input id="pu_lat" name="latitude" type="hidden" value="48.13722"/><input id="pu_lng" name="longitude" type="hidden" value="11.5755"/><div class="modalBoxCont"><dl class="modalList locationInput"><dt><label for="pu_accountLocationDescription">Mein Standort:</label></dt><dd><input id="pu_accountLocationDescription" name="description" type="text" value="M&uuml;nchen" maxlength="255"/><em title="" id="pu_accountLocation_reset" class="resetLocationButton"><img alt="" src="/images/fi_btn/del.png"/></em><div class="clear"></div></dd></dl><div class="clear"></div><div style="display:none;" id="pu_accountLocationManage"><dl class="modalList"><dt>&nbsp;</dt><dd><div class="alterLocationIntro" id="pu_accountLocationStatus">Zu deinen Angaben wurden mehrere Orte gefunden.&lt;br /&gt;Bitte w&auml;hle einen aus:</div><div style="display:none;" class="alterLocationList" id="pu_accountLocationSeveral"></div></dd></dl></div><div class="clear"></div><div class="buttonBar"><input class="save" value="speichern" type="submit" id="pu_accountLocation_save"/><em id="pu_accountLocation_close" class="close">abbrechen</em><div class="clear"></div></div><div class="clear"></div></div></form><script type="text/javascript">

        var severalMode = false;
        
        function sendLocationAjaxRequest() {
          $.ajax({
            url: $('#pu_accountLocationForm').attr('action'),
            data: $('#pu_accountLocationForm').serialize(),
            dataType: 'html',
            type: 'POST',
            success: function(data) {
              if (data.indexOf('DOCTYPE') == 2) {
                window.location.href = '/search';
              } else {
                $('#pu_accountLocationContent').html(data);
              }
            }
          });
        }
        
        function setCookies() {
          var cookieExpiry = new Date();
          var expiryTime = cookieExpiry.getTime() + (30 * 24 * 60 * 60 * 1000);
          cookieExpiry.setTime(expiryTime);
          document.cookie = "finderia-latitude=" + $('#pu_lat').val() + "; expires=" + cookieExpiry.toGMTString();
          document.cookie = "finderia-longitude=" + $('#pu_lng').val() + "; expires=" + cookieExpiry.toGMTString();
          document.cookie = "finderia-location=" + encodeURIComponent($('#pu_accountLocationDescription').val()) + "; expires=" + cookieExpiry.toGMTString();
        }
        
        function reactOnGeocoder(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
            if (results.length == 1) {
              $('#pu_lat').val(results[0].geometry.location.lat());
              $('#pu_lng').val(results[0].geometry.location.lng());
              var loc = results[0].formatted_address;
              $('#pu_accountLocationDescription').val(loc);
              $('#pu_myPlace').text(loc);
              $('#pu_myPlace').attr('title',loc);
              setCookies();
              sendLocationAjaxRequest();
            } else {
              severalMode = true;
              $('#pu_accountLocation_save').attr('disabled', true);
              $('#pu_accountLocationDescription').attr('disabled', true);
              $('#pu_accountLocationManage').css('display', '');
              $('#pu_accountLocationStatus').html('Zu deinen Angaben wurden mehrere Orte gefunden.<br />Bitte wähle einen aus:');
              $('#pu_accountLocationSeveral').empty();
              for (var i = 0; i < results.length; i++) {
                $('#pu_accountLocationSeveral').append('<a id="pu_severalloc' + i + '" class="pu_severalloc" href="#">' + results[i].formatted_address + '</a><br/>');
                $('#pu_severalloc' + i).data('loc', results[i].geometry.location);
              }
              $('#pu_accountLocationSeveral').css('display', '');
            }
          } else {
            $('#pu_accountLocationManage').css('display', '');
            $('#pu_accountLocationSeveral').css('display', 'none');
            if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
              $('#pu_accountLocationStatus').html('Zu deinen Angaben wurde kein Ort gefunden. <br />Bitte ändere deine Angaben.');
              $('#pu_accountLocationDescription').focus();
            } else {
              $('#pu_accountLocationStatus').html('Beim Versuch, deinen Standort zu finden, ist ein Fehler aufgetreten. Bitte versuche es in einigen Minuten noch einmal.');
            }
          }        	
        }

        $('#pu_accountLocationDescription').focus();

        $('#pu_accountLocation_close').click(function(e) {
      	  var overlay = $('#pu_accountLocationProxy').data('overlay');
      	  overlay.close();
        });

        $('#pu_accountLocation_reset').click(function(e) {
            $('#pu_accountLocationManage').css('display', 'none');
            $('#pu_accountLocationStatus').slideDown();
            $('#pu_accountLocationDescription').val('');
            $('#pu_accountLocationDescription').attr('disabled', false);
            $('#pu_accountLocationDescription').focus();
            $('#pu_accountLocation_save').attr('disabled', false);
            severalMode = false;
        });
        
        $('.pu_severalloc').live('click', function(e) {
          e.preventDefault();
          $('#pu_accountLocationDescription').val($(this).html());
          $('#pu_lat').val($(this).data('loc').lat());
          $('#pu_lng').val($(this).data('loc').lng());
          $('#pu_accountLocation_save').attr('disabled', false);
          $('#pu_accountLocationStatus').slideUp('slow');
        });

        $('#pu_accountLocationForm').submit(function(e) {
          e.preventDefault();
          var address = $('#pu_accountLocationDescription').val();
          if (address == null || address == '') {
            $('#pu_accountLocationManage').css('display', '');
            $('#pu_accountLocationSeveral').css('display', 'none');
            $('#pu_accountLocationStatus').html('Bitte gib bei Standortangabe einen Ort ein.');
          } else {
        	  
        	  if (severalMode) {
        		  $('#pu_accountLocationDescription').attr('disabled', false);
              $('#pu_myPlace').text(address);
              setCookies();
        		  sendLocationAjaxRequest();
        	  } else {
          	  geocoder = new google.maps.Geocoder();
              geocoder.geocode({ address: address, language: 'de', region: 'DE'}, reactOnGeocoder);
        	  }
          }
        });
      </script>
