function emailCheck(email) {
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=email.match(emailPat);

		if (matchArray==null) {
			return false;
		}

		var user=matchArray[1];
		var domain=matchArray[2];

		if (user.match(userPat)==null) {
			return false;
		}

		var IPArray=domain.match(ipDomainPat);
		if (IPArray!=null) {
			  for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
				return false;
				}
			}
			return true;
		}

		var domainArray=domain.match(domainPat)
		if (domainArray==null) {
			return false;
		}

		var atomPat=new RegExp(atom,"g");
		var domArr=domain.match(atomPat);
		var len=domArr.length;
		if (domArr[domArr.length-1].length<2 ||
			domArr[domArr.length-1].length>3) {
		   return false;
		}

		if (len<2) {
		   return false;
		}
    return true;
}

	$.fn.ajaxSubmit = function(e) {
		this.submit(function(){

			$("#emailErrors").css("display","none");
			$("#emailErrors").html("");

			var params = {};
			var errorflag = false;
      var error_msgs = new Array();

			$(this)
			.find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea")
			.each(function() {
				params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value;
			});

			$("body").addClass("curWait");
			$("#loadBar").css("display","block");

			if (emailCheck(params['txtEmail']) == false) {
         errorflag = true;
         error_msgs.push("&#160;&#160;Email no válido<br />");
      }

			if (params['txtName'] == "" || params['txtName'] == null) {
					errorflag = true;
					error_msgs.push('&#160;Nombre en blanco<br />');
			}

      if (errorflag) {

  				for (i=0;i<error_msgs.length;i++){
							$("#emailErrors").append(error_msgs[i]);
					}
                 $("#emailErrors").show("slow");

    			$("body").removeClass("curWait");
    			$("#loadBar").css("display","none");

    			return false;

			} else {

         jQuery.ajax({
            type: "POST",
            data: params,
            url: this.getAttribute("action"),
            contentType: "application/x-www-form-urlencoded;charset=iso-8859-1",            
            timeout: 2000,
            error: function() {
								$("#emailErrors").html("Problemas de conexi&oacute;n al enviar el email. Por favor, volver a intentar m&aacute;s tarde.");
								$("#emailErrors").show("slow");
            },
            success: function(r) {
              if (r == "ERR") {
									$("#emailErrors").html("Problemas de conexi&oacute;n al enviar el email. Por favor, volver a intentar m&aacute;s tarde.");
									$("#emailErrors").show("slow");
              } else {
				        $("#frmSubscribe").css("display","none");
                $("#emailSuccess").show("slow");      		      
              }             
            }
          })

				$("#txtName").val("");
				$("#txtEmail").val("");
				$("body").removeClass("curWait");
				$("#loadBar").css("display","none");

				return false;

      }

		});

		return this;
}


$.fn.ajaxSubmitContacto = function(e) {
    this.submit(function(){

    $("#contactErrors").css("display","none");
    $("#contactErrors").html("");
    $("#contactSuccess").css("display","none");

    var params = {};
    var errorflag = false;
    var error_msgs = new Array();

    params['ctxtEmail'] = this.ctxtEmail.value;
    params['ctxtName'] = this.ctxtName.value;
    params['ctxtPhone'] = this.ctxtPhone.value;
    params['ctxtSubject'] = this.ctxtSubject.value;
    params['ctxtMsg'] = this.ctxtMsg.value;
    params['form'] = this.form.value;


    $("body").addClass("curWait");
    $("#contactloadBar").css("display","block");

    if (params['ctxtName'] == "" || params['ctxtName'] == null) {
    	errorflag = true;
    	error_msgs.push('Nombre en blanco<br />');
    }

    if (emailCheck(params['ctxtEmail']) == false) {
    	errorflag = true;
    	error_msgs.push("Email no válido<br />");
    }

    if (params['ctxtSubject'] == "" || params['ctxtSubject'] == null) {
    	errorflag = true;
    	error_msgs.push('Asunto en blanco<br />');
    }

    if (params['ctxtMsg'] == "" || params['ctxtMsg'] == null) {
    	errorflag = true;
    	error_msgs.push('Mensaje en blanco<br />');
    }

    if (errorflag) {

        for (i=0;i<error_msgs.length;i++){
            $("#contactErrors").append(error_msgs[i]);
        }
        $("#contactErrors").css("display","block");

        $("body").removeClass("curWait");
        $("#contactloadBar").css("display","none");

        return false;

    } else {

         jQuery.ajax({
            type: "POST",
            data: params,
            url: this.getAttribute("action"),
            timeout: 2000,
            error: function() {
								$("#contactErrors").html("Problemas de conexi&oacute;n al enviar el email. Por favor, volver a intentar m&aacute;s tarde.");
								$("#contactErrors").css("display","block");
            },
            success: function(r) {
              if (r == "ERR") {
									$("#contactErrors").html("Problemas de conexi&oacute;n al enviar el email. Por favor, volver a intentar m&aacute;s tarde.");
									$("#contactErrors").css("display","block");
              } else {
                  $("#contactSuccess").show("slow");      		      
              }             
            }
          })

	$("#ctxtName").val("");
	$("#ctxtEmail").val("");
	$("#ctxtPhone").val("");
	$("#ctxtSubject").val("");
	$("#ctxtMsg").val("");

	$("body").removeClass("curWait");
	$("#contactloadBar").css("display","none");

	return false;

      }

});

return this;
}
