 $(document).ready(function(){
 	
	jQuery.validator.addMethod("txt_senha", function( value, element ) {
		var result = this.optional(element) || value.length >= 6;
		if (!result) {
			element.value = "";
			var validator = this;
			setTimeout(function() {
				validator.blockFocusCleanup = true;
				element.focus();
				validator.blockFocusCleanup = false;
			}, 1);
		}
		return result;
	}, "Sua senha deve ter no mínimo 6 caracteres.");
	
	// a custom method making the default value for companyurl ("http://") invalid, without displaying the "invalid url" message
	jQuery.validator.addMethod("defaultInvalid", function(value, element) {
		return value != element.defaultValue;
	}, "");
	
	jQuery.validator.addMethod("billingRequired", function(value, element) {
		if ($("#bill_to_co").is(":checked"))
			return $(element).parents(".subTable").length;
		return !this.optional(element);
	}, "");
	
	//jQuery.validator.messages.required = "";
	
	$("form").bind("invalid-form.validate", function(e, validator) {
		var errors = validator.numberOfInvalids();
		if (errors) {
			var message = errors == 1
				? 'Existe 1 campo que n&atilde;o foi preenchido corretamente'
				: 'Existem ' + errors + ' campos que n&atilde;o foram preenchidos corretamente';
			$("div.error span").html(message);
			$("div.error").show();
		} else {
			$("div.error").hide();
		}
	
	}).validate({
		//focusInvalid: false,
		//focusCleanup: true,
		onkeyup: false,	
		messages: {
			txt_senha2: {
				required: " ",
				equalTo: "Por favor, digite a mesma senha do campo anterior."	
			},
			email: {
				required: " ",
				email: "Por favor, informe um e-mail v&aacute;lido. Exemplo: nome@dominio.com.br",
				remote: jQuery.format("{0} is already taken, please enter a different address.")	
			},
			txt_user_cad: {
				required: " ",
				remote: jQuery.format("O usu&aacute;rio ( {0} ) n&atilde;o esta dispon&iacute;vel. Por favor escolha outro.")	
			},  
			txt_email_verfica: {
				required: " ",
				remote: jQuery.format("O e-mail ( {0} ) n&atilde;o est&aacute; cadastrado em nosso sistema.")	
			}, 
			txt_nome: {
				required: "Este campo &eacute; obrigat&oacute;rio"
			},
			cmb_regiao: {  
             required: 'Escolha uma regi&atilde;o de atua&ccedil;&atilde;o'
			 },
			 txt_telefone:{
				required: "Este campo &eacute; obrigat&oacute;rio"
			}
		},
		submitHandler: function(form) {
		$("div.error").hide();
		$(form).submit(); 
		
		
		//alert("submit! use link below to go to the other step");
		}
	});
	
  $(".resize").vjustify();
  $("div.buttonSubmit").hoverClass("buttonSubmitHover");

  if ($.browser.safari) {
    $("body").addClass("safari");
  }
  
  $("input.phone").mask("+99 (99) 9999-9999");
  $("#txt_cnpj").mask("99.999.999/9999-99");
  $("#txt_cpf").mask("999.999.999-99");
  $("#txt_cep").mask("99999-999");
  $("#txt_ano").mask("9999");
  
  var creditcard = $("#creditcard").mask("9999 9999 9999 9999");
  $("#cc_type").change(
    function() {
      switch ($(this).val()){
        case 'amex':
          creditcard.unmask().mask("9999 999999 99999");
          break;
        default:
          creditcard.unmask().mask("9999 9999 9999 9999");
          break;
      }
    }
  );

  // toggle optional billing address
  var subTableDiv = $("div.subTableDiv");
  var toggleCheck = $("input.toggleCheck");
  toggleCheck.is(":checked")
  	? subTableDiv.hide()
	: subTableDiv.show();
  $("input.toggleCheck").click(function() {
      if (this.checked == true) {
        subTableDiv.slideUp("medium");
        $("form").valid();
      } else {
        subTableDiv.slideDown("medium");
      }
  });


});

$.fn.vjustify = function() {
    var maxHeight=0;
    $(".resize").css("height","auto");
    this.each(function(){
        if (this.offsetHeight > maxHeight) {
          maxHeight = this.offsetHeight;
        }
    });
    this.each(function(){
        $(this).height(maxHeight);
        if (this.offsetHeight > maxHeight) {
            $(this).height((maxHeight-(this.offsetHeight-maxHeight)));
        }
    });
};

$.fn.hoverClass = function(classname) {
	return this.hover(function() {
		$(this).addClass(classname);
	}, function() {
		$(this).removeClass(classname);
	});
};