// Global variable for canSubmit function.
canSubmitForm = true;


// can't submit to self
// can't submit 2x to same person

// -----------------------------------------------------


function check(form)
	{
	var numberOfFriends = howManyFriends(form);
	var doneYet = true;
	doneYet = doneYet && sender_fname(form); // 1
	if (doneYet) doneYet = doneYet && sender_lname(form);  // 2
	if (doneYet) doneYet = doneYet && sender_email(form);
	if (doneYet) doneYet = doneYet && friend1_fname(form);  // 3
	if (doneYet) doneYet = doneYet && friend1_lname(form);  // 4
	if (doneYet) doneYet = doneYet && friend1_email(form);  // 5
	if ( (doneYet) && (numberOfFriends > 1) ) doneYet = doneYet && all_other_friends(form, numberOfFriends);
	if ( (doneYet) && (numberOfFriends > 1) ) doneYet = doneYet && refer_friend_twice(form, numberOfFriends);
	//if (doneYet) doneYet = doneYet && usrEssay(form);

	return doneYet;

	}


// -----------------------------------------------------


// ===============================

function canSubmit(form) {
	// Prevents a user from clicking the submit button twice
	if(canSubmitForm) {
		canSubmitForm = false;
		return true;
	} else {
		return false;
	}
}

// ===============================




// ------------------------------


// counts the total number of possible recipients of the taf-email
// so developer doesn't need to worry about this
function howManyFriends(form)
	{
	var friendCounter = 0;
	for (x = 0; x < form.length; x++)
		{
		var filter = /^toemail/;
		if ( filter.test (form[x].name)  )   friendCounter++;
		}
	return friendCounter;
	}


// -----------------------------------------------------


function sender_fname(form)
	{
	// senders first name
	if ( (form.fromname) && (form.fromname.value.length == 0) )
		{
		alert("Please enter your first name.");
		form.fromname.focus();
		return false;
		}
	return true;
	}


// -----------------------------------------------------


function sender_lname(form)
	{
	// senders last name
	if ( (form.fromlastname1) && (form.fromlastname1.value.length == 0) )
		{
		alert("Please enter your last name.");
		form.fromlastname1.focus();
		return false;
		}
	return true;
	}


// -----------------------------------------------------


function sender_email(form)
	{
	if (form.fromemail && !checkAllEmail(form.fromemail)) return false;
		else return true;
	}


// -----------------------------------------------------


function friend1_fname(form)
	{
	//alert("test");
	// FRIEND1 first name
	if ( (form.toname1) && (form.toname1.value.length == 0) )
		{
		alert("Please enter your friend's first name.");
		form.toname1.focus();
		return false;
		}	
	return true;
	}


// -----------------------------------------------------


function friend1_lname(form)
	{
	// FRIEND1 last name
	if ( (form.tolastname1) && (form.tolastname1.value.length == 0) )
		{
		alert("Please enter your friend's last name.");
		form.tolastname1.focus();
		return false;
		}	
	return true;
	}


// -----------------------------------------------------


function friend1_email(form)
	{
	if (!checkAllEmail(form.toemail1, 1)) return false;
	if (form.fromemail && !referringSelf(form.fromemail, form.toemail1)) return false;
	return true;
	}



// -----------------------------------------------------


function all_other_friends(form, numberOfFriends)
	{
	for (var s = 2; s <= numberOfFriends; s++)
		{
		// set up measurable values for friends first name
		if (form.toname1)
			{
			var temp1 = "form.toname" + s;
			var fnv = eval(temp1).value;
			var fnl = eval(temp1).value.length;
			}
		// set up measurable values for friends last name
		if (form.tolastname1)
			{
			var temp2 = "form.tolastname" + s;
			var lnv = eval(temp2).value;
			var lnl = eval(temp2).value.length;
			}
		// set up measurable values for friends email
		var temp3 = "form.toemail" + s;
		var emv = eval(temp3).value;
		var eml = eval(temp3).value.length;
		// first check that any item in a row has a value
		// meaning that user filled out one or more items in a row
		if 	( fnv || lnv || emv )
			{
			// now check all items in a row.
			// user is asked to fill out any item left blank in a row
			if (fnl == 0 && eval(temp1))
				{ alert("Please enter your friend's first name."); eval(temp1).focus(); return false;}
			if ( lnl == 0 && eval(temp2))
				{ alert("Please enter your friend's last name."); eval(temp2).focus(); return false;}	
			if (!checkAllEmail(eval(temp3), 1) )
				{ return false; }
			}
		// now check to make sure that user did not try to refer him/her self.
		if (form.fromemail && !referringSelf(form.fromemail, eval(temp3))) return false;
		}
	return true;

	}



// -----------------------------------------------------


function checkAllEmail(x, friend)
	{
 	// all email ==  added \x27 to the filter var to allow for apostrophes: ' 
	if (x)
		{
		var filter = /^([a-z0-9\+_\x27\-]+)(\.[a-z0-9\+_\x27\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/i;
		if (!filter.test( x.value  ))
			{
			var friendText="";
			if (friend) friendText=" for your friend";
			alert( "Please enter a valid email address" + friendText + "." );
			x.focus();
			return false;
			}
		return true;
		}
	}



// -----------------------------------------------------



function referringSelf(sender, friend)
	{
	//alert(friend.value);
	if (sender.value.toLowerCase() == friend.value.toLowerCase())
		{
		alert("Sorry, you can\'t refer yourself.");
		friend.focus();
		return false;
		}
	return true;
	} 
 
 
// -----------------------------------------------------


// checks to see if same friend has been referred more than once.
function refer_friend_twice(form, numberOfFriends)
	{
	for (x = 1; x <= numberOfFriends - 1; x++)
		{
		var tempX = "form.toemail" + x;
		for (y = x+1; y <= numberOfFriends; y++)
			{
			var tempY = "form.toemail" + y;
			if ( (eval(tempY).value.toLowerCase() == eval(tempX).value.toLowerCase())  &&  (eval(tempX).value) && (eval(tempY).value)  )
				{
				alert("You can't refer a friend twice.\nFriends: " + x +" and " + y + ".");
				eval(tempY).focus();
				return false;
				}
			}
		}
	return true;
	}









function usrEssay(form)
	{
	
	if ( (form.essay) && (form.essay.value.length == 0) )
		{
		alert("Please enter your message of 50 words or less.");
		form.essay.focus();
		return false;
		
		} else {
	  	
		badwords = new Array("adultery", "ass", "asshole", "asswipe", "assmunch", "balls", "bastard", "bestiality", "bitch", "blow", "blow job", "blowjob", "blow me", "blowme", "bondage", "boob", "boobs", "bullshit", "buttmunch", "butthole", "carpetmuncher", "carpet muncher", "chink", "clit", "cocaine", "cokehead", "coke head", "cokewhore", "cock", "cock sucker", "cocksucker", "come", "condom", "cornhole", "crack", "crackhead", "cross dressing", "crap", "crisco", "dogcrap", "cum", "cunnilingus", "cunt", "cunt hair", "dago", "damn", "dammit", "damn it", "deep throat", "deepthroat", "defecation", "dickwipe", "dick wipe", "dike", "dikes", "do me", "domination", "doodoo", "dork", "douche", "duckfucker", "dykes", "ecstasy", "erotic", "fag", "fags", "faggot", "faggots", "fart", "fellatio", "felch", "feltch", "fetishes", "fistfuck", "fisting", "flirt", "fuck", "fuckhead", "fuckme", "fuck me", "fucker", "fuck you", "fuckyou", "fuck this", "genitals", "genital", "gerbils", "gerbil", "gism", "glans", "goldenshowers", "golden showers", "genitalia", "hardon", "hard-on", "hard on", "head", "hebe", "horny", "hot men/women", "hotlunch", "hot lunch", "hot tub", "hot videos", "hustler", "insults", "jism", "junglebunny", "KKK", "kike", "kinky", "lesbo", "lezbo", "lezzie", "lick", "lingerie", "lust", "marijuana", "masturbation", "men for men", "men on men", "men to men", "meth", "motherfucker", "mother fucker", "mousefucker", "murder", "murderer", "death", "nasty", "Nazi", "nigger", "nips", "nipple", "nipples", "nudie", "nude", "nudity", "orgy", "orgies", "oral", "panties", "penis", "pedophile", "pee", "peepee", "perineum", "perv", "pervert", "pimp", "piss", "piss off", "poopoo", "pothead", "prick", "prickhead", "prince albert", "private rooms", "prophylactic", "pubes", "pubic", "pubic hair", "pussie", "pussies", "pussy", "pussyfart", "queef", "queer", "retard", "rubber", "rubbers", "rugmuncher", "rug muncher", "sadomasochism", "sadomasochist", "sapphos", "sapphic", "scrodum", "scrotum", "semen", "sex", "sexy", "sexual devices", "shower", "shit", "shithead", "shitty", "shitting", "sixtynine", "sixty-nine", "sixty nine", "slave", "sleaze", "smegma", "snatch", "son of a bitch", "sonofabitch", "slut", "slutty", "spic", "stud", "submissive", "suck", "suckme", "suck me", "sucker", "suckers", "swinger", "swingers", "tampax", "tampons", "teen shower", "teens", "teens wanted", "tit", "titfucker", "titfuck", "titty", "titties", "transsexual", "transvestite", "twat", "underwear", "undies", "urination", "vagina", "vibrator", "virgins", "weenie", "wet", "whips", "chains", "whores", "whore", "women for women", "women on women", "women to women", "wop", "whitetrash", "white trash", "xxx", "bytch", "iamgod", "hump", "nigga", "fock", "horney", "fucg", "willy", "bimbo", "suck", "sux", "fungus", "hottie", "hoe", "honky", "pimp", "gay", "ball", "phuoc", "godsmack", "hell", "foxy", "69", "suks", "panty", "panties", "dicky", "fuk", "rectum", "dogstyle", "doggiestyle", "dick", "poop", "poo", "pukey", "sxy", "btch", "lesbian", "booty", "killer", "fucfa", "buttheap", "butt");
		}
		
var bad = 0;

essayvalue = document.taf.essay.value;  // entered words. Form needs to have the name="" attribute

wordsArray = essayvalue.split(" ");

	for (i = 0; i < badwords.length; i++) {
		badWordsArray = badwords[i].split(" ");
		bad = 0;
		for (j = 0; j < wordsArray.length; j++) {
			l = 0;
			for (k = 0; k < badWordsArray.length; k++) {
				if (wordsArray[j + l].toLowerCase() == badWordsArray[k].toLowerCase()) {
					bad = 1;
				} else {
					bad = 0;
					break;
				}
				l++;
			}
			if (bad == 1) {
				alert ("Your essay contains an inappropriate word or words.  Please update and try again.");
				return false;
			}
		}
	}
   
		var a = form.essay.value.split(/\s+/g); // split the sentence into an array of words
	  
			if (a.length > 50){
				alert("Sorry, your essay has gone over our 50-word limit.");
				form.essay.focus();
			return false;
			}
	return true;
	}




	
//-----------------------------------------
//word counter display
var i = 0;
function countit(){
	var c = document.taf.essay.value.split(/\s+/g); // split the sentence into an array of words
	document.getElementById('count').innerHTML = c.length

	if (i == 0){
		if ((document.getElementById('count').innerHTML == 50) && (i == 0)){
				alert("Your message has reached the 50-word limit.");
				i++;
		}
	}
}










