forked from michaelsoriano/age-check
-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.agecheck.min.js
1 lines (1 loc) · 3.03 KB
/
jquery.agecheck.min.js
1
!function(e){e.ageCheck=function(r){var t=e.extend({minAge:21,redirectTo:"",title:"Age Verification",copy:"This Website requires you to be [21] years or older to enter. Please enter your Date of Birth in the fields below in order to continue:"},r),o={month:"",day:"",year:"",age:"",errors:Array(),setValues:function(){var r=e(".month").val(),t=e(".day").val();o.month=r,o.day=t.replace(/^0+/,""),o.year=e(".year").val()},validate:function(){return o.errors=[],/^([0-9]|[12]\d|3[0-1])$/.test(o.day)===!1&&o.errors.push("Day is invalid or empty"),/^(19|20)\d{2}$/.test(o.year)===!1&&o.errors.push("Year is invalid or empty"),o.clearErrors(),o.displayErrors(),o.errors.length<1},clearErrors:function(){e(".errors").html("")},displayErrors:function(){for(var r="<ul>",t=0;t<o.errors.length;t++)r+="<li><span>x</span>"+o.errors[t]+"</li>";r+="</ul>",setTimeout(function(){e(".errors").html(r)},200)},reCenter:function(r){r.css("top",Math.max(0,(e(window).height()-(r.outerHeight()+150))/2+e(window).scrollTop())+"px"),r.css("left",Math.max(0,(e(window).width()-r.outerWidth())/2+e(window).scrollLeft())+"px")},buildHtml:function(){var r=t.copy,a=["January","February","March","April","May","June","July","August","September","October","November","December"],n="";n+='<div class="ac-overlay"></div>',n+='<div class="ac-container">',n+="<h2>"+t.title+"</h2>",n+="<p>"+r.replace("[21]","<strong>"+t.minAge+"</strong>"),n+='<div class="errors"></div>',n+='<div class="fields"><select class="month">';for(var i=0;i<a.length;i++)n+='<option value="'+i+'">'+a[i]+"</option>";n+="</select>",n+='<input class="day" maxlength="2" placeholder="01" />',n+='<input class="year" maxlength="4" placeholder="1989"/>',n+="<button>Submit</button></div></div>",e("body").append(n),e(".ac-overlay").animate({opacity:.8},500,function(){o.reCenter(e(".ac-container")),e(".ac-container").css({opacity:1})}),e(".ac-container .day, .ac-container .year").focus(function(){e(this).removeAttr("placeholder")})},setAge:function(){o.age="";var e=new Date(o.year,o.month,o.day),r=Date.now()-e.getTime(),t=new Date(r);o.age=Math.abs(t.getUTCFullYear()-1970)},setSessionStorage:function(e,r){try{return sessionStorage.setItem(e,r),!0}catch(t){return!1}},handleSuccess:function(){var r="<h3>Success!</h3><p>You are now being redirected back to the application...</p>";e(".ac-container").html(r),setTimeout(function(){e(".ac-container").animate({top:"-350px"},200,function(){e(".ac-overlay").animate({opacity:"0"},500,function(){""!=t.redirectTo?window.location.replace(t.redirectTo):e(".ac-overlay, .ac-container").remove()})})},2e3)}};return"true"==sessionStorage.getItem("ageVerified")?!1:(o.buildHtml(),e(".ac-container button").on("click",function(){o.setValues(),o.validate()===!0&&(o.setAge(),o.age>=t.minAge?(o.setSessionStorage("ageVerified","true")||console.log("sessionStorage not supported by your browser"),o.handleSuccess()):(o.errors.push("You are not old enough"),o.displayErrors()))}),void e(window).resize(function(){o.reCenter(e(".ac-container")),setTimeout(function(){o.reCenter(e(".ac-container"))},500)}))}}(jQuery);