
function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter your "' + fieldLabel +'".');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please type an e-mail address in the following format: yourname@example.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		if (!allDigits(formField.value))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var num = parseInt(formField.value,10);
 		if (isNaN(num))
 		{
 			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
 		var elems = formField.value.split("/");
 		
 		result = (elems.length == 3); // should be three components
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
  			var day = parseInt(elems[1],10);
 			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/DD/YYYY for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function profanityCheck(fieldToCheck, fieldLabel) {
	var result = true;
	var badwords = ["666","adult","anal","anarchist","anarchists","anarchy","anus","aryan","aryans","ass","babe","babes","banging","bangle","bastard","beaver","beer","bestial","binaries","bitch","bitches","bra","bras","breasted","breasts","buff","bugger","butt","butts","cannabis","cigs","circumcise","clit","crack","cum","cunnilingus","cunt","damn","dead","dick","died","dirty","dyke","dynamite","ejaculate","enema","enemas","fag","fags","fantasies","fetish","fist","flagellate","flesh","frigid","fuck","fucker","gash","geisha","gin","girlie","gun","guns","hash","hell","hiv","hustler","hymen","jesus","jew","jews","jugs","kike","kill","killer","killing","kinky","kissing","kkk","klan","klux","knights","knives","latex","leather","lesbian","lesbians","lingerie","lsd","lust","lustful","lusty","mace","madame","mafia","marijuana","masturbate","masturbating","masturbation","mistress","munitions","murder","murderer","mutilation","naked","nakedness","nasty","naughty","nazi","nazis","negligee","nipple","nude","nudity","nymph","panties","panty","pcp","penetration","penis","penises","pervert","perverted","pimp","piss","playmate","playmates","prick","pricks","puss","pussy","queer","quickie","rape","rectum","rifle","rifles","rum","satan","satanism","sensual","sensuous","sex","sexual","sexuality","sexually","sexy","shit","slave","slaves","slay","slayer","slut","smack","smut","snatch","snuff","spank","spanked","spanking","sperm","spik","strip","strippers","striptease","studs","suck","sucker","sucking","suicide","supremacy","suspender","swinger","swingers","swinging","testicle","testicles","thc","tit","tits","ultimate","underwear","vagina","vaginas","virginity","virgins","wench","wenches","whipped","whiskey","wine","witchcraft"];
	var lowerCaseCheck = fieldToCheck.value.toLowerCase();
	for(var i=0;i<badwords.length;i++) {
		if(lowerCaseCheck.indexOf(badwords[i]) != -1) {
			alert("Some information may be incorrect or inappropriate. Please try again.");
			fieldToCheck.focus();
			result = false;
		}
	}
	return result;
}

/*
 * Functions for birth date validation
 */
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}


function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31;
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30;}
		if (i==2) {this[i] = 29;}
   } 
   return this;
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	var strMonth=dtStr.substring(0,pos1);
	var strDay=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);

	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false;
	}
return true;
}

function checkAge(theForm, minimumAge, sorryHTML) {
	var dob = new Date();
	var date = dob.getDate();
	var month = dob.getMonth();
	//var year = dob.getYear();
	var year = (dob.getYear() >= 2004) ? dob.getYear() : dob.getFullYear();
	
	var cmbmonth = parseInt(theForm.br_mn.options[theForm.br_mn.selectedIndex].value) - 1;
	var cmbday = parseInt(theForm.br_dy.options[theForm.br_dy.selectedIndex].value);
	var cmbyear = parseInt(theForm.br_yr.options[theForm.br_yr.selectedIndex].value);
	realMonth = cmbmonth + 1;
	
	age=year-cmbyear;
	
	if(cmbmonth>month){age--;}
	else{if(cmbday>date){age--;}}
	
	var underageCatch = getCookie("DOB");
	
	if(cmbmonth==13) {
		alert("Please select the month you were born.");
		return false;
	}else if(cmbday==0) {
		alert("Please select the date you were born.");
		return false;
	}else if(cmbyear==2004) {
		alert("Please select the year you were born.");
		return false;
	}else if (isDate(realMonth + '/' + cmbday + '/' + cmbyear)==false) {
		alert("Please enter a valid day");
		return false;
	}else if(age < minimumAge || underageCatch) {
		delCookie("DOB");
		setCookie("DOB",age);
		location.replace(sorryHTML);
		return false;
	}
	
	// stuff to put in hidden form fields
	theHost = window.location.hostname;
	if(theHost == "bgunix.biggs-gilmore.com" || theHost == "10.10.1.74") { theHost = theHost + ":9000"; }
	theForm.rs_url.value = "http://" + theHost + "/promotions/poptarts/signup_thanks.html";
	theForm.rl_url.value = "http://" + theHost + "/promotions/poptarts/";
	theForm.pm_url.value = "http://" + theHost + "/promotions/poptarts/";
	theForm.pp_url.value = "http://" + theHost + "/privacy/";
	theForm.exit_url.value= "http://" + theHost + "/promotions/poptarts/signup_thanks.html";
		
	return true;
}

/*
 * End functions for birth date validation
 */

function getCookie(NameOfCookie) {
	if (document.cookie.length > 0) { 
		begin = document.cookie.indexOf(NameOfCookie+"="); 
		if (begin != -1) {
			begin += NameOfCookie.length+1; 
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
		} 
	}
	return null; 
}

function setCookie(NameOfCookie, value, expiredays) {
	var ExpireDate = new Date ();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
	document.cookie = NameOfCookie + "=" + escape(value) + 
	((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}

function delCookie (NameOfCookie) {
	if (getCookie(NameOfCookie)) {
		document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function languageIsClean(it, supressAlert) {
	var badwords = [
'666',
'adult',
'anal',
'anarchists?',
'anarchy',
'anus',
'aryans?',
'ass',
'asshole',
'babe',
'babes',
'banging',
'bangle',
'bastard',
'beaver',
'beer',
'bestial',
'binaries',
'bitch(es)?',
'bra',
'bras?',
'breasted',
'breasts',
'buff',
'bugger',
'butts?',
'cannabis',
'cigs',
'circumcise',
'clit',
'crack',
'cum[^\\s]*',
'cunnilingus',
'cunt',
'damn',
'dead',
'dick',
'died',
'dirty',
'dyke',
'dynamite',
'ejaculate',
'enema',
'enemas',
'fags?',
'fantasies',
'fetish',
'fist',
'flagellate',
'flesh',
'frigid',
'[^\\s]*fuck[^\\s]*',
'fuckers?',
'gash',
'geisha',
'gin',
'girlie',
'gun',
'guns',
'hash',
'hell',
'hiv',
'hustler',
'hymen',
'jesus',
'jews?',
'jugs',
'kike',
'kill',
'killer',
'killing',
'kinky',
'kissing',
'kkk',
'klan',
'klux',
'knights',
'knives',
'latex',
'leather',
'lesbians?',
'lingerie',
'lsd',
'lust',
'lustful',
'lusty',
'mace',
'madame',
'mafia',
'marijuana',
'masturbate',
'masturbating',
'masturbation',
'mistress',
'munitions',
'murder',
'murderer',
'mutilation',
'naked',
'nakedness',
'nasty',
'naughty',
'nazi',
'nazis?',
'negligee',
'nipple',
'nude',
'nudity',
'nymph',
'panties',
'panty',
'pcp',
'penetration',
'penis(es)?',
'pervert',
'perverted',
'pimp',
'piss[^\\s]*',
'playmates?',
'pricks?',
'puss',
'pussy',
'queer',
'quickie',
'rape?[^\\s]*',
'rectum',
'rifles?',
'rum',
'satan',
'satanism',
'sensual',
'sensuous',
'sex',
'sexual',
'sexuality',
'sexually',
'sexy',
'shit[^\\s]*',
'slaves?',
'slay',
'slayer',
'slut',
'smack',
'smut',
'snatch',
'snuff',
'spank',
'spanked',
'spanking',
'sperm',
'spik',
'strip',
'strippers?',
'striptease',
'studs',
'suck',
'suckers?',
'sucking',
'suicide',
'supremacy',
'suspender',
'swingers?',
'swinging',
'testicles?',
'thc',
'tits?',
'ultimate',
'underwear',
'vaginas?',
'virginity',
'virgins',
'wench',
'wenches',
'whipped',
'whiskey',
'wine',
'witchcraft'
];
	var pattern = new RegExp('\\b(' + badwords.join('|') + ')\\b', 'i');
	//alert('\\b(' + badwords.join('|') + ')\\b');
	//alert(pattern.test(it.value));
	if (pattern.test(it.value)) {
		if (!supressAlert) {
			alert("Some information may be incorrect or inappropriate. Please try again.");
			it.focus();	
		}
		return false;
	}
	//alert(it.value);
	return true;
}

