var age_settings = {
	cookieName : "2k_blthegame_check",
	gatePage : "http://borderlandsthegame.com/index.php/agegate",
	sorryPage : "http://borderlandsthegame.com/index.php/agegate/sorry",
	domain : "dev-borderlands.2kgames.com/",
	baseurl : "http://borderlandsthegame.com/"
}
var AgeCheck = function (ref, form) {
	var self = this;
	self._init(ref, form);
};

AgeCheck.prototype = {
	_init : function(ref, form) {
		var self = this;
		self.expireDate = new Date();
		self.year = self.expireDate.getYear(); 
		self.year = (self.year < 1900) ? self.year + 1900 : self.year;
		self.settings = age_settings;
		self.baseurl = age_settings.baseurl.substring(0,age_settings.baseurl.length-1);
		if (ref) {
			self.ref = encodeURIComponent(ref);
			self._checkForCookie(false);
		}
		else {$("body").css({"opacity":"1"});
			self.ref = decodeURIComponent(QueryString.ref);
			self._checkForCookie(true, form);
		}
	},
	_checkForCookie : function(isAgeGate, form) {
		var self = this;
		if ($.cookie(self.settings.cookieName)) {
			userAge = $.cookie(self.settings.cookieName);
			var age = new Date(userAge);
			if (!self._overSeventeen(age)){location.replace(self.settings.sorryPage);}
			else if (isAgeGate==true) {location.replace("/");}
			else {
				return true;
			}
		}
		else {
			if (isAgeGate==true && form) {
				if ($("#birthmonth").val()!=0 && $("#birthday").val()!=0 && $("#birthyear").val()!=0) {
					var age = new Date();
					age.setMonth($("#birthmonth").val()-1);
					age.setDate($("#birthday").val());
					age.setYear($("#birthyear").val());
					$.cookie(self.settings.cookieName, age.toUTCString(), { expires : 14, path : "/"});
					if (self._overSeventeen(age)) {
						target = self.ref == "" ? "/" : self.ref;
						if (target.indexOf("http")!=-1) {
							location.href = self.baseurl + "/";
						}
						else {
							location.href = self.baseurl + target;
						}
					}
					else {
						location.href = self.settings.sorryPage;
					}
				}
			}
			else if (!isAgeGate==true) {
				location.replace(self.settings.gatePage + "?ref="+self.ref);
			}
		}
	},
	_overSeventeen : function(age) {
		var self = this;
		var ageDate = self.expireDate;
		var ageYear = ageDate.getFullYear()-17;
		ageDate.setFullYear(ageYear);
		return age <= ageDate ? true : false;
	}
};
var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
	var pair = vars[i].split("=");
		// If first entry with this name
	if (typeof query_string[pair[0]] === "undefined") {
	  query_string[pair[0]] = pair[1];
		// If second entry with this name
	} else if (typeof query_string[pair[0]] === "string") {
	  var arr = [ query_string[pair[0]], pair[1] ];
	  query_string[pair[0]] = arr;
		// If third or later entry with this name
	} else {query_string[pair[0]].push(pair[1]);}
  } 
	return query_string;
} ();
(function ($) {	
	$.fn.ageCheck = function (ref, form) {
		var ageCheck = new AgeCheck(ref, form);
	};
}
	(jQuery));
(function(factory){if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(typeof exports==='object'){factory(require('jquery'));}else{factory(jQuery);}}(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s);}
function decode(s){return config.raw?s:decodeURIComponent(s);}
function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value));}
function parseCookieValue(s){if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\');}
try{s=decodeURIComponent(s.replace(pluses,' '));return config.json?JSON.parse(s):s;}catch(e){}}
function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value;}
var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setTime(+t+days*864e+5);}
return(document.cookie=[encode(key),'=',stringifyCookieValue(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));}
var result=key?undefined:{};var cookies=document.cookie?document.cookie.split('; '):[];for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=decode(parts.shift());var cookie=parts.join('=');if(key&&key===name){result=read(cookie,value);break;}
if(!key&&(cookie=read(cookie))!==undefined){result[name]=cookie;}}
return result;};config.defaults={};$.removeCookie=function(key,options){if($.cookie(key)===undefined){return false;}
$.cookie(key,'',$.extend({},options,{expires:-1}));return!$.cookie(key);};}));	
