﻿// Eventhandling

  // Documentevents
  $(document).ready(function() {
    activateRegionSearch($(".inputDropDownCity").attr("value").length == 0);
    var citySearchOk = ($(".inputTextCity").attr("value").length == 0 || $(".inputTextCity").attr("value")=="Ort")
                    && ($(".inputTextZipcode").attr("value").length == 0 || $(".inputTextZipcode").attr("value")=="PLZ");
    activateCitySearch(citySearchOk);
  });
  
 $(function() {
     // Keyevents
     $(".inputDropDownCity").change(function() {
        activateRegionSearch($(".inputDropDownCity").attr("value").length == 0);
      });

    $(".inputTextCity").focus(function() {
        if($(".inputTextCity").attr("value")=="Ort")
            $(".inputTextCity").attr("value","");
    });
    
    $(".inputTextZipcode").focus(function() {
        if($(".inputTextZipcode").attr("value")=="PLZ")
            $(".inputTextZipcode").attr("value","");
    });
    
    $(".inputTextCity").keyup(function() {
        loadDataToInputValue('City', $(".inputTextCity").attr('value'));
            var citySearchOk = ($(".inputTextCity").attr("value").length == 0 || $(".inputTextCity").attr("value")=="Ort")
                    && ($(".inputTextZipcode").attr("value").length == 0 || $(".inputTextZipcode").attr("value")=="PLZ");
    activateCitySearch(citySearchOk);
    });

    $(".inputTextZipcode").keyup(function() {
        loadDataToInputValue('Zipcode', $(".inputTextZipcode").attr('value'));
            var citySearchOk = ($(".inputTextCity").attr("value").length == 0 || $(".inputTextCity").attr("value")=="Ort")
                    && ($(".inputTextZipcode").attr("value").length == 0 || $(".inputTextZipcode").attr("value")=="PLZ");
    activateCitySearch(citySearchOk);
     });


    // UI-Events
    $(".inputTextZipcode").change(function() {
        setTimeout(function() {
            $(".seachZipcodeResultText").html("");
            $(".seachZipcodeResultUp").css("display", "none");
        }, 500);
    });

    $(".inputTextCity").focusout(function() {
        if($(".inputTextCity").attr("value")=="")
            $(".inputTextCity").attr("value","Ort");
    
        setTimeout(function() {
            $(".seachCityResultText").html("");
            $(".seachCityResultUp").css("display", "none");
        }, 500);
    });
    
     $(".inputTextZipcode").focusout(function() {
        if($(".inputTextZipcode").attr("value")=="")
            $(".inputTextZipcode").attr("value","PLZ");
    });
  });
  
  //Aktivierung der Regionssuche
  function activateRegionSearch(activate) {
    if (activate) {
      $(".inputTextZipcode").attr("disabled", "");
      $(".inputTextZipcode").css("backgroundColor", "#ffffff");
      $(".inputTextCity").attr("disabled", "");
      $(".inputTextCity").css("backgroundColor", "#ffffff");
      $(".inputDropDownDistance").attr("disabled", "");
      $(".inputDropDownDistance").css("backgroundColor", "#ffffff");
    }
    else {
      $(".inputTextZipcode").attr("disabled", "disabled");
      $(".inputTextZipcode").css("backgroundColor", "#eeeeee");
      $(".inputTextCity").attr("disabled", "disabled");
      $(".inputTextCity").css("backgroundColor", "#eeeeee");
      $(".inputDropDownDistance").attr("disabled", "disabled");
      $(".inputDropDownDistance").css("backgroundColor", "#eeeeee");
    }
  }

  //Aktivierung der Locationsuche
  function activateCitySearch(activate) {
    if (activate) {
      $(".inputDropDownCity").attr("disabled", "");
      $(".inputDropDownCity").css("backgroundColor", "#ffffff");
    }
    else {
      $(".inputDropDownCity").attr("disabled", "disabled");
      $(".inputDropDownCity").css("backgroundColor", "#eeeeee");
    }
  }
  
  //Transfereffekt Start
  function startTransfer(firerItem, inputValue, inputName) {
    var options = { to: ".inputText" + inputName, className: 'seachboxTransfer' };
    $("#"+inputName + firerItem).effect('transfer', options, 500, startFinishPreview(inputName, inputValue));
  }

  //Transfereffekt Zeitverzögerung
  function startFinishPreview(inputName, inputValue) {
    setTimeout(function() { finishPreview(inputName, inputValue) }, 500);  
  }
  
  //Transfereffekt Ende 
  //Vorschau Ende
  function finishPreview(inputName, inputValue) {
    $(".inputText" + inputName).attr('value', inputValue);
    $(".seach" + inputName + "ResultText").html("");
    $(".seach" + inputName + "ResultUp").css("display", "none");
    if (inputName == 'City')
      $(".inputTextZipcode").attr('value', "");
    else {
      getCityToZipcode(inputValue);
    }
  }

  //Suchhilfe für Postleitzahlen
  function getCityToZipcode(inputValue) {
    var dataString = "Plz2City=" + inputValue;
    $.ajax({
      type: "POST",
      url: "../_JqueryPostback/GeoLoactionArrays.aspx",
      data: dataString,
      success: function(html) {
        var items = html.split("#;#");
        if (items != "none") {
          cityname = items[0];
          $(".inputTextCity").attr('value', cityname);
        }
      }
    });
  }       

  // Lade Daten zu Eingabefeld(inputName) und dessen Wert(inputValue)
  function loadDataToInputValue(inputName, inputValue) {
    if(inputValue.length>1){
        var preView = "";
        if (inputValue!=""){
          var dataString = inputName + "=" + inputValue;
          $.ajax({
            type: "POST",
            url: "../_JqueryPostback/GeoLoactionArrays.aspx",
            data: dataString,
            success: function(html) {

              var items = html.split("#;#");


              if (items != "none") {
                if (!(items[0].toLowerCase() == inputValue.toLowerCase() && items.length == 1)) {
                  for (i = 0; i < items.length; i++) {
                    var tempString = items[i];
                    var regExp = new RegExp(inputValue, "ig");
                    tempString = tempString.replace(regExp, "<span class=\"hitHighlighter\">" + inputValue + "</span>");
                    preView += "<a id=\"" + inputName + "" + i + "\" href=\"javascript:startTransfer( '" + i + "', '" + items[i] + "', '" + inputName + "');\" class=\"prevElement" + inputName + "\">" + tempString + "</a><br />";
                  }

                  $(".seach" + inputName + "ResultText").html(preView);
                  $(".seach" + inputName + "ResultUp").css("display", "block");

                  if (previewPosition == "up") {
                    var left = $(".inputText" + inputName).offset().left;
                    var top = $(".inputText" + inputName).offset().top;
                    var height = $(".seach" + inputName + "ResultUp").height();

                    $(".seach" + inputName + "ResultUp").css("left", (left - 12) + "px");
                    $(".seach" + inputName + "ResultUp").css("top", (top - height) + "px");
                  }
                  else {
                    var left = $(".inputText" + inputName).offset().left;
                    var top = $(".inputText" + inputName).offset().top;
                    var height = $(".seach" + inputName + "ResultUp").height();

                    $(".seach" + inputName + "ResultUp").css("left", (left - 12) + "px");
                    $(".seach" + inputName + "ResultUp").css("top", (top + 20) + "px");
                  }
                }

                else {
                  startTransfer(inputName + '0', items[0], inputName);
                }
              }
              else {
                $(".seach" + inputName + "ResultText").html(preView);
                $(".seach" + inputName + "ResultUp").css("display", "none");
              }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
              alert(textStatus);
            }


          });	
        }
        else {
          $(".seach" + inputName + "ResultText").html(preView);
          $(".seach" + inputName + "ResultUp").css("display", "none");
        }
    }
}

