// Desarrollo, Programación y Hosting por VivaServer.com.ar [cristian.arroyo@vivaserver.com.ar]

// Simple jQuery Slideshow thanks to http://jonraasch.com/blog/a-simple-jquery-slideshow
//
// 18/03/10: pass slide show #div as argument to allow multiple slides on a single page (Cristian R. Arroyo)
//
function slideSwitch(div) {
  var $active = $(div + ' IMG.active');

  if ( $active.length == 0 ) $active = $(div + ' IMG:last');

  var $next =  $active.next().length ? $active.next() : $(div + ' IMG:first');

  $active.addClass('last-active');

  $next.css({opacity: 0.0}).addClass('active').animate({opacity: 1.0}, 1000, function() {
    $active.removeClass('active last-active');
  });
}

$(function() {
  var exec_when = function (id, func) {
    if ($(id).length>0) {
      func();
    }
  };

  var spinner = function() {
    exec_when("#theResults", function() {
      // mind no spinner on Home view
      $("#theResults").html("<p align='center'><img src='/public/css/indicator.gif' /> &nbsp; Buscando...</p><br />");
    });
    return true;
  };

  var catch_to_alert = function (e) {
    message = e.message+"\n\n";
    for (var i=0; i<e.errors.length; i+=1) {
      message = message + "- " + e.errors[i] + "\n";
    }
    alert(message);
    return false;
  };

  // here be OT stuff

  var validation = /^\d{4,}$/;
  
  var forms = {
    ot:  "#nrotv",
    so:  "#nroso",
    tel: "#pedtel"
  };

  var validate_on = function (id) {
    $("#"+id+" input[type=submit]").click(function() {
      try {
        var errors = [];
        var field = $(forms[id]).val();

        if (!validation.test(field)) {
          errors.push("Nº");
        }
        if ($("#sucursal").val()=='(Sucursal)') {
          errors.push("Sucursal");
        }
        if (errors.length>0) {
          throw {
            name: "ValidationError",
            errors: errors,
            message: "Datos inválidos para efectuar su consulta:"
          };
        }
        else {
          return spinner();
        }
      }
      catch (e) {
        return catch_to_alert(e);
      }
    });
  };

  for (id in forms) {
    if (forms.hasOwnProperty(id) && $("#"+id).length>0) {
      exec_when("#theResults", function() {
        // do not ajaxify form if no target for result
        $("#"+id).ajaxForm({
          target: '#theResults'
        });
      })
      validate_on(id);
    }
  }

  // fire auto-completing brand dropdown when available

  exec_when("#auto_brand", function() {
    $("#clear_cotizator").hide();
    $("#auto_model").attr('disabled','disabled');
    $("#auto_brand option:eq(0)").attr("selected","selected");

    $("#auto_brand").change(function() {
      $("#auto_model").val('');
      $("#auto_model").removeAttr('disabled');
      $("#clear_cotizator").show();

      $("#auto_model").autocomplete("/cartuchos/auto_modelos/"+$(this).val()+"/", {
        matchContains: true,
        minChars: 3,
        delay: 200,
        width: 315
      });
    });

    $("#auto_cotizator input[type=submit]").click(function() {
      if ($("#auto_brand").val()=="(Seleccionar Marca)") {
        alert("Seleccione la Marca de su impresora antes de continuar.");
        return false;
      }
      else {
        return spinner();
      }
    });
    if ($("#theResults").length>0) {  // in Home there's no theResults
      $("#auto_cotizator").ajaxForm({
        target: '#theResults'
      });
    }
  });

  // fire brand, type, models dropdowns when available

  exec_when("#brand", function() {
    // defaults to first search tab (#auto_cotizator)
    $("#cotizator").hide();  

    $("#clear_cotizator").hide();
    $("#search_cotizator").attr('disabled','disabled');
    $("#brand option:eq(0)").attr("selected","selected");

    $("#brand").change(function() {
      $("#type").load("/cartuchos/impresoras_familias/"+$(this).val());
      $("#model").empty();
      $("#search_cotizator").attr('disabled','disabled');
      return false;
    });

    $("#type").change(function() {
      $("#model").load("/cartuchos/impresoras_modelos/"+$("#brand").val()+"/"+$.URLEncode($(this).val()));
    });

    $("#model").change(function() {
      $("#search_cotizator").removeAttr('disabled');
      $("#clear_cotizator").show();
    });

    $("#cotizator input[type=submit]").click(function() {
      return spinner();
    });
    $("#cotizator").ajaxForm({
      target: '#theResults'
    });
  });

  // fire photo sliders when available

  var sliders = ["#home_slide","#jujuy_slide","#salta_slide"];

  for (var i=0; i<sliders.length; i++) {
    exec_when(sliders[i], function() {
      setInterval("slideSwitch('"+sliders[i]+"')",5000);
    });
  }

  // fire modal window when available

  exec_when(".modal", function() {
    $(".modal").modal();
  });
});

