var UserLocationBar = function()
{
  var me = this;
  
  $(document).ready(function()
  {
    me.init();
    me.initUI();
  });
}

UserLocationBar.prototype.init = function()
{
}

UserLocationBar.prototype.initUI = function()
{
  var me = this;
  
  $("#user-location-estimation-confirm").click(function()
  {
    me.onConfirmLocationEstimation();
  });
  
  $("#user-location-estimation-modify").click(function()
  {
    me.onModifyLocationEstimation();
  });
  
  $("#user-location-estimation-input").click(function()
  {
    me.onModifyLocationEstimation();
  });
  
  $("#user-location-bar-form-adress").submit(function()
  {
    me.onSubmitFormAdress();
    
    return false;
  });
  
  $("#user-location-modify-btn").click(function()
  {
    me.onClickLocationModifyBtn();
  });
  
  if (Tool.getCookie("userLocationType") == null || Tool.getCookie("userLocationType") == "estimation")
  {
    this.showBar(1500);
  }
  else
  {
    this.hideBar();
  }
}

UserLocationBar.prototype.onClickLocationModifyBtn = function()
{
  this.showBar();
}

UserLocationBar.prototype.onConfirmLocationEstimation = function()
{
  var me = this;
  $.ajax({type:"POST", url:"/user/confirmLocationEstimation", success:function()
  {
    me.hideBar();
  }});
  
  var event = {name:"user_location_confirm", type:"visitor_action", object:"user_location"};
  Tool.sendStats(application, event);
}

UserLocationBar.prototype.onModifyLocationEstimation = function()
{
  $("#user-location-bar-estimation-section").hide();
  $("#user-location-bar-form-adress-section").show();
}

UserLocationBar.prototype.onSubmitFormAdress = function()
{
  var me = this;
  
  var formSerialize = $("#user-location-bar-form-adress").serializeArray();
  
  if ($('input[name="user_location[city]"]').val().length > 0 || $('input[name="user_location[zip]"]').val().length > 0) 
  {
    $("#user-location-modify-btn").text($('input[name="user_location[city]"]').val().length > 0 ? $('input[name="user_location[city]"]').val() : $('input[name="user_location[zip]"]').val());
    
    me.hideBar();
    
    $.ajax({type:"POST", url:"/user/submitUserLocation", data:formSerialize ,success:function()
    {
      //window.location.reload();
      window.location.href = window.location.href;
    }});
    
    var userLocation = new Object();
    
    jQuery.each(formSerialize, function(i, field)
    {
      var fieldShortName = field.name;
      var left = fieldShortName.indexOf("[");
      var right = fieldShortName.indexOf("]");
      
      if (left != -1 && right != -1)
      {
        fieldShortName = field.name.substr(left+1, right - left - 1);
        
        userLocation[fieldShortName] = field.value;
      }
    });

    var event = {name:"user_location_input", type:"visitor_action", object:"user_location", data:userLocation};
    Tool.sendStats(application, event);
  }
}

UserLocationBar.prototype.showBar = function(delay)
{
  if (!delay)
    delay = 0;
    
  $("#user-location-modify-btn").hide();
  setTimeout(function() {$("#user-location-bar").slideDown("slow")}, delay);
}

UserLocationBar.prototype.hideBar = function()
{
  $("#user-location-bar").slideUp("slow", function() 
  {
    $("#user-location-modify-btn").show();
    $("#user-location-modify-btn").css("left", $("#page").position().left + $("#content").width() - $("#user-location-modify-btn").outerWidth());
  });
}

var userLocationBar = new UserLocationBar();
