jQuery(document).ready(function($){

  $(".login-session-button .login-session-slide-panel").click(function(event) {
    var s = $(this);
    var force_left = ($("#wrapper").offset().left + $("#wrapper").width() - 302);
    $(".login-panel").css({left: force_left});
    
    over = s.data("overlay");
    if (!over) {
      over = new OverlayObject({
        name          : 'jquery-lightbox',
        style         : {'opacity': 0.6},
        hideOnClick   : true,
        zIndex        : 7000,
        callback      : function() {
          $(".login-panel").animate({top: -300}, {duration: 300});
          over.hide();
        },
        showDuration  : 300,
        closeDuration : 300
      });
      s.data("overlay", over);
    }

    over.show();
    $(".login-panel").animate({top: 0}, {duration: 300, complete: function() {
      $(this).find("input[type=text]").filter(":visible").first().focus();
    }});
    
    return false;
  });
  
  $(".lightbox").lightbox({
  onOpen: function() {
      $(".jquery-lightbox-html input[type=text]").filter(":visible").first().focus();
      if ($(".lightbox-comprar-form").length > 0) {
        ajax_comprar_calcular_total();
      }
    }
  });

  $.extend($.lightbox().options, {
    moveDuration    : 800,
    resizeDuration  : 800
  });
  
  $(".categorias.tabs li a").click(function(event){
    $(this).parents("ul").children("li").removeClass('active');
    $(this).parents("li").addClass('active');
    
    $('.contenido .tab').hide();
    $('.contenido #tab-' + $(this).attr('href').replace("#", "").replace(" ","_")).fadeIn();

    event.preventDefault();
  });

  $(".sidebar .tabs a").click(function(event){
    $(".sidebar tab").hide();
    $('.sidebar #tab-' + $(this).attr('href').replace("#", "").replace(" ","_")).fadeIn();

    event.preventDefault();
  });
  
  $("#wrapper").mouseleave(function(event) {
    $('.contenido .tab').hide();
    $('.contenido .tabs ul li').removeClass('active');
  });
  
  $(".button-ingresar").click(function(event) {
    $("#tab-registrarme").slideUp();
    $("#tab-ingresar").slideToggle();
    event.preventDefault();
  });

  $(".button-registrarme").click(function(event) {
    $("#tab-ingresar").slideUp();
    $("#tab-registrarme").slideToggle();
    event.preventDefault();
  });

  $(".buscador input[type=text], .login-registrarme input[type=text], .login-ingresar input[type=text]").bind("focus blur", function(event) {
    if (event.type == "focus") {
      if ($(this).attr("value") == $(this).prop("value")) {
        $(this).prop("default_value", $(this).attr("value"));
        $(this).prop("value", "");
      }
    } else if (event.type == "blur") {
      if ($.trim($(this).prop("value")) == "") {
        $(this).prop("value", $(this).prop("default_value"));
      }
    }
  });

  $(".buscador a.button").click(function(event) {
    if ($(".buscador input[type=text]").prop("value") == "Buscar") {
      $(".buscador input[type=text]").trigger("focus");
    } else {
      $(this).parents("form").trigger("submit");
    }
    return false;
  });
  
  $(".sidebar-slider-1").slideshow({
    'width'       : 244,
    'height'      : 157,
    'timer'       : false,
    'selector'    : false,
    'control'     : false,
    'pauseOnHover': false,
    'pauseOnClick': false,
    'bars'        : 4,
    'columns'     : 3,
    'rows'        : 2,
    'delay'       : 6000,
    'transition'  : 'fade'
  });

  $(".sidebar-slider-2").slideshow({
    'width'       : 244,
    'height'      : 157,
    'timer'       : false,
    'selector'    : false,
    'control'     : false,
    'pauseOnHover': false,
    'pauseOnClick': false,
    'bars'        : 4,
    'columns'     : 3,
    'rows'        : 2,
    'duration'    : 600,
    'delay'       : 4500,
    'transition'  : 'fade'
  });

  $(".home-slider").slideshow({
    'width'       : 714,
    'height'      : 328,
    'timer'       : false,
    'selector'    : false,
    'control'     : false,
    'navigation'  : false,
    'pauseOnHover': false,
    'pauseOnClick': false,
    'bars'        : 4,
    'columns'     : 5,
    'rows'        : 3,
    'duration'    : 600,
    'delay'       : 4500,
    'transition'  : 'square'
  });
  
  $(".alert-message").prependTo(".page").fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
  
  $(".alert-message .close").click(function() {
    $(this).parent('.alert-message').remove();
    return false;
  });
  
  $(".celda-buttons .comparar").live("click", function(event) {
    var link = $(this);

    link.text("Enviando...");
    
    $.ajax({
      global    : false,
      cache     : false,
      type      : "GET",
      url       : $(this).attr("href"),
      success   : function(data) {
        var compSpan = $(".pedido-comparador span");
        var compCant = parseInt(compSpan.text())+1;

        compSpan.text(compCant).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
        link.remove();
      }
    });
    
    return false;
  });

  $(".celda-buttons .mi-folder").live("click", function(event) {
    var link = $(this);

    link.text("Enviando...");
    
    $.ajax({
      global    : false,
      cache     : false,
      type      : "GET",
      url       : $(this).attr("href"),
      success   : function(data) {
        var compSpan = $(".pedido-comparador");
        compSpan.fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
        if (link.hasClass("mi-folder-agregar")) {
          link.removeClass("mi-folder-agregar").addClass("mi-folder-eliminar");
        } else {
          link.removeClass("mi-folder-eliminar").addClass("mi-folder-agregar");
        }
      }
    });
    
    return false;
  });
  
  $(".button-aumentar-cantidad").live("click", function() {
    var input = $(this).prevAll("input");
    var i = parseInt(input.val()) || 0;
    input.val(i+1);
    input.trigger("focus");
    input.trigger("keyup");
    return false;
  });
  
  $(".button-disminuir-cantidad").live("click", function() {
    var input = $(this).prevAll("input");
    var i = parseInt(input.val()) || 0;
    i = i < 1 ? 1 : i;
    input.val(i-1);
    input.trigger("focus");
    input.trigger("keyup");
    return false;
  });
  
  $(".button-disminuir-cantidad, .button-aumentar-cantidad").live("keydown", function(event) {
    if (event.keyCode != 9) {
      return false;
    }
  });
  
  $(".mibolsa-boton-eliminar").live("click", function(event) {
    $(this).parents(".fila").css("background", "#ffeeee").children(".fila-ajax-eliminando").show();
  });
  
  $(".comprar-boton-eliminar a").live("click", function(event) {
    ajax_comprar_loading("Eliminando el producto...");
    $.ajax({
      dataType  : "json",
      global    : false,
      cache     : false,
      type      : "POST",
      url       : window.web + "/ajax-eliminar-producto.php",
      data      : $(".lightbox-comprar-form").serialize(),
      success   : function(data) {
        window["ajax_comprar_"+data.estado](data);
      }
    });
    return false;
  });

  $(".comprar-boton-comprar a").live("click", function(event) {
    $(this).parents("form").trigger("submit");
    return false;
  });
 
  $(".lightbox-comprar-form").live("keydown", function(event) {
    if (event.keyCode == 13) {
      $(this).trigger("submit");
      return false;
    }
  });
  
  $(".lightbox-comprar-form").live("submit", function(event) {
    ajax_comprar_loading();
    $.ajax({
      dataType  : "json",
      global    : false,
      cache     : false,
      type      : "POST",
      url       : $(this).prop("action"),
      data      : $(this).serialize(),
      success   : function(data) {
        window["ajax_comprar_"+data.estado]();
      }
    });
    
    return false;
  });
  
  $(".lightbox-comprar-form input").live("keyup keypress", function(event) {
    if (event.type=="keypress")
    {

      if (event.keyCode == 13 || event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 37 || event.keyCode == 39) {
        return true;
      } else if (event.charCode && (/[0-9]|\./).test(String.fromCharCode(event.charCode)) == false) {
        return false;
      }

    }
    else if (event.type=="keyup")
    {
      ajax_comprar_calcular_total();
    }
  });
  
  $(".comprar-ajax-error a").live("click", function(event) {
    $(".comprar-ajax-error").fadeOut(400, function() {$(this).remove()});
    $(".jquery-lightbox-html input[type=text]").filter(":visible").first().focus();
    return false;
  });


  $.validator.addMethod("password", function( value, element ) {
    var result = this.optional(element) || value.length >= 6;
    return result;
  }, "Su contrase&ntilde;a debe tener al menos 6 caracteres.");

  jQuery.validator.messages.required = "El campo [0] es obligatorio.";
  
  var validate_options = {

    submitHandler: function(form) {
      if ($(form).hasClass("ajax")) {
        ajax_registracion_loading();
        
        $.ajax({
          dataType  : "json",
          global    : false,
          cache     : false,
          type      : "POST",
          url       : $(form).prop("action"),
          data      : $(form).serialize() + "&antibot=1",
          success   : function(data) {
            $(".submit", form).removeAttr("disabled").removeClass("button-disabled");
            window["ajax_registracion_"+data.estado](data.error);
          }
        });
      } else {
        form.submit();
      }
      $(".submit", form).attr("disabled", "disabled").addClass("button-disabled");
    },
  
    rules : {
      acepto: {
        required: true
      }
    },
  
    ignoreTitle : true,

    messages    : {
      "password-2": {
        required: " ",
        equalTo: "Las contrase&ntilde;as no coinciden."	
      },
      "acepto": {
        required: "Debe aceptar las condiciones de uso para poder continuar."
      }
    },
    
    invalidHandler: function(e, validator) {
      $(".alert-error").remove();
      var diverror = $("<div class='alert-error'><h4>Oops los siguientes errores requieren de su atenci&oacute;n</h4><ul></ul></div>");
      var ulerror  = $("ul", diverror);
      $(".page").prepend(diverror);
      $.each(validator.errorList, function() {
        ulerror.append("<li>" + this.message.replace(new RegExp("\\[0\\]", "g"), $(this.element).attr("title")) + "</li>");
      });
    },

    //onkeyup: false,
    errorPlacement: function() {}
  };
  
  $("form.form-validate").each(function() {
    if ($(this).hasClass("validate-no-errors")) {
      $(this).validate($.extend({}, validate_options, {invalidHandler: function(e, v){}}));
    } else {
      $(this).validate(validate_options);
    }
  });
  
  $(".tipo-direccion").bind("change", function() {
    if ($(this).is(":checked")) {
      $(".tipo-direccion-0").hide();
      $(".tipo-direccion-1").hide();
      $(".tipo-direccion-" + $(this).attr("value")).show();
    }
  });
  
  $("select.ajax-provincia").bind("change", function() {
    $(".ajax-partido-loading").fadeIn(400);
    $("select.ajax-partido").html('<option value="0">--</option>');
    $("select.ajax-localidad").html('<option value="0">--</option>');
    $("select.ajax-barrio").html('<option value="0">--</option>');
    $.getJSON(window.web + "/ajax-geo-db.php", {id: $(this).val(), get: 2}, function(j) {
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].id + '">' + j[i].nombre + '</option>';
      }
      $(".ajax-partido-loading").fadeOut(400);
      $("select.ajax-partido").html(options).trigger("change");
    });
  }).trigger("change");

  $("select.ajax-partido").bind("change", function() {
    $(".ajax-localidad-loading").fadeIn(400);
    $("select.ajax-localidad").html('<option value="0">--</option>');
    $("select.ajax-barrio").html('<option value="0">--</option>');
    $.getJSON(window.web + "/ajax-geo-db.php", {id: $(this).val(), get: 3}, function(j) {
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].id + '">' + j[i].nombre + '</option>';
      }
      options += '<option value="0">--</option>';
      $(".ajax-localidad-loading").fadeOut(400, function() {$(this).hide();});
      $("select.ajax-barrio").html('<option value="0">--</option>');
      $("select.ajax-localidad").html(options).trigger("change");
    });
  }).trigger("change");

  $("select.ajax-localidad").bind("change", function() {
    $(".ajax-barrio-loading").fadeIn(400);
    $("select.ajax-barrio").html('<option value="0">--</option>');
    $.getJSON(window.web + "/ajax-geo-db.php", {id: $(this).val(), get: 4}, function(j) {
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].id + '">' + j[i].nombre + '</option>';
      }
      options += '<option value="0">--</option>';
      $(".ajax-barrio-loading").fadeOut(400, function() {$(this).hide();});
      $("select.ajax-barrio").html(options);
    });
  });
  
  $(".showhrefelement").bind("click", function() {
    var href = $(this).attr("href");
    $(href).show();
  });
  
  $(".enviar-pedido-direcciones input[type=radio]").bind("click", function(event) {
    if ($(this).is(":checked")) {
      if ($(this).attr("value") > 0) {
        $(".nueva-direccion").hide();
        $(".page").append($(".nueva-direccion"));
      } else {
        $("#enviar-pedido-nueva-direccion").after($(".nueva-direccion"));
        $(".nueva-direccion").show();
      }
    }
  });
  
});

function ajax_comprar_calcular_total()
{
  var totalPrecio   = 0;
  var totalCantidad = 0;
  var precioReal    = $(".lightbox-comprar-form").data("precio");
  var uxb           = $(".lightbox-comprar-form").data("uxb"); // (int) unidades x bulto
  var umf           = $(".lightbox-comprar-form").data("umf"); // (int) unidad minima de fraccionado
  var rxf           = $(".lightbox-comprar-form").data("rxf"); // (bool) recargo x fraccion
  
  $(".lightbox-comprar-form input[type=text]").each(function() {
    var input       = $(this);
    var esBulto     = input.hasClass("sv-bulto") ? uxb : 1;
    var inCantidad  = parseInt(input.prop("value")) * esBulto;
    
    if (inCantidad > 0) {
      if (inCantidad <= umf && rxf)
      {
        totalCantidad += inCantidad;
        totalPrecio   += (inCantidad * precioReal) * 1.02;
      }
      else
      {
        totalCantidad += inCantidad;
        totalPrecio   += inCantidad * precioReal;
      }
    }
  });
  
  $(".lightbox-comprar-form").data({
    tempPrecio    : totalPrecio,
    tempCantidad  : totalCantidad
  });

  $(".lightbox-comprar-form .comprar-id-subtotal").html(totalPrecio.toFixed(2));
};

function ajax_comprar_loading(msg)
{
  if (typeof msg == 'undefined') {
    msg = "Agregando el producto a la bolsa...";
  }
  var winloading = $('<div class="comprar-ajax-loading"><h4>'+msg+'</h4>');
  $(".jquery-lightbox-html").append(winloading);
  winloading.fadeIn(400);
  setTimeout(function() {
    winloading.html("<h4>Bueno, esto es embarazoso...</h4><br/><br/><p>Esta operaci&oacute;n est&aacute; tardando demasiado... presione F5 para<br/> volver a cargar la p&aacute;gina e intente esta operaci&oacute;n nuevamente.</p><p>Disculpe las molestias.</p>");
  }, 8000);
};

function ajax_comprar_exito()
{
  var winexito = $('<div class="alert-success"><h4>&Eacute;xito!</h4><ul><li>El producto se ha agregado a la Bolsa.</li></ul></div>');
  $(".vidriera").prepend(winexito);
  winexito.fadeIn(500).animate({"width":winexito.width()}, 8000).fadeOut(600, function() { $(this).remove()});
  
  var celda = $("#celda-" + ($(".lightbox-comprar-form input[name=madre]").attr("value")));
  celda.addClass("celda-comprado");

  var dataMiBolsa  = $(".pedido-mibolsa").data();
  var dataProducto = $(".lightbox-comprar-form").data();

  $(".pedido-mibolsa").data({
    totalPrecio   : Math.abs(dataMiBolsa['totalPrecio']   + (dataProducto['tempPrecio'] - dataProducto['totalPrecio'])),
    totalCantidad : dataMiBolsa['totalCantidad'] + (dataProducto['tempCantidad'] - dataProducto['totalCantidad'])
  });
  
  $.lightbox().close();
  actualizar_bolsa();
};

function ajax_comprar_error()
{
  $.lightbox().shake();
  var winerror = $('<div class="comprar-ajax-error"><h4>Error</h4><p>Debe ingresar una cantidad para comprar el producto. Presione el siguiente bot&oacute;n para volver atr&aacute;s y corregir la cantidad.</p><p class="right"><a href="#" class="button">Volver</a></p>');
  $(".jquery-lightbox-html").append(winerror);
  winerror.fadeIn(400);
  $(".comprar-ajax-loading").fadeOut(400, function() {$(this).remove()});
  $(".comprar-ajax-error a").trigger("focus");
};

function ajax_comprar_producto_eliminado(data)
{
  if ($("div#celda-" + data.id + ".fila").length) {
    window.location.href = window.web + "/mi-bolsa/";
  } else {
    var dataProducto = $(".lightbox-comprar-form").data();
    var dataMiBolsa  = $(".pedido-mibolsa").data();
    
    $(".pedido-mibolsa").data({
      totalPrecio   : Math.abs(dataMiBolsa['totalPrecio']   - dataProducto['totalPrecio']),
      totalCantidad : dataMiBolsa['totalCantidad'] - dataProducto['totalCantidad']
    });
    
    $("div#celda-" + data.id + ".celda").removeClass("celda-comprado");

    $.lightbox().close();
    actualizar_bolsa();
  }
};

function actualizar_bolsa()
{
  var dataMiBolsa  = $(".pedido-mibolsa").data();
  
  $(".ajax-total").text(dataMiBolsa['totalPrecio'].toFixed(2));
  $(".ajax-total-cantidad").text(dataMiBolsa['totalCantidad']);

  $(".pedido-mibolsa").fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);

  if ($(".mibolsa").length) {
    window.location.href = window.web + "/mi-bolsa/";
  }
};

function ajax_registracion_loading() {
  $(".alert-error").remove();
  var msg = "Enviando datos de usuario...";
  $(".page").prepend('<div class="registracion-ajax-loading"><h4>'+msg+'</h4>');
  var winloading = $(".registracion-ajax-loading");
  winloading.fadeTo(400, 0.9).trigger("focus");
  setTimeout(function() {
    winloading.html("<h4>Bueno, esto es embarazoso...</h4><br/><br/><p>Esta operaci&oacute;n est&aacute; tardando demasiado... presione F5 para<br/> volver a cargar la p&aacute;gina e intente esta operaci&oacute;n nuevamente.</p><p>Disculpe las molestias.</p>");
  }, 8000);
};

function ajax_registracion_step1() {
  $("div.step-1").fadeOut(400);

  var redirect_to = $("#redirect_to");
  
  $(".registracion-ajax-loading").fadeOut(500, function() {
    $(this).remove();
    $("div.step-2").fadeIn(400);
  });
};

function ajax_registracion_step2() {
  $("div.step-2").fadeOut(400);
  var redirect_to = $("#redirect_to");
  
  if (redirect_to.attr("value")) {
    window.location.href = redirect_to.attr("value");
  } else {
    window.location.href = window.web;
  }
};

function ajax_registracion_error(msg) {
  $(".registracion-ajax-loading").fadeOut(400, function() {$(this).remove()});
  $(".alert-error").remove();
  var diverror = $("<div class='alert-error'><h4>Oops los siguientes errores requieren de su atenci&oacute;n</h4><ul></ul></div>");
  var ulerror  = $("ul", diverror);
  $(".page").prepend(diverror);
  ulerror.append("<li>" + msg + "</li>");
};

if (typeof Cufon != 'undefined') {
  Cufon.replace('h1, h2, h3, .header a, .button', { hover: 'true' });
}
