/**
 * @javascripts for Screen Four
HISTORY
04/14/2009 - kjb - edits performed on this date
*/
$(document).ready(function(){
	// auto-select all text within a text-entry upon focus
	$("input[@type=text]").focus(function(){
		var myField = this;
		var curText = myField.value;
		if (
		curText == 'Enter Your First Name'
		|| curText == 'Enter Your Last Name'
		|| curText == 'Enter Your Email Address'
		|| curText == "Enter friend's first name"
		|| curText == "Enter friend's email address"
		)
		{
			myField.value = '';
		}
		if (document.selection)
		//IE support
		{
			myField.focus();
			myField.value.select();
		}
		else if (myField.selectionStart || myField.selectionStart == '0')
		//MOZILLA/NETSCAPE support
		{
			myField.focus();
			myField.selectionStart = 0;
			myField.selectionEnd = myField.value.length;
		}
		return false;
	});
	$("ul#roller_left li.first").mouseover(function(){
		activate_panel('first');
	});
	$("ul#roller_left li.second").mouseover(function(){
		activate_panel('second');
	});
	$("ul#roller_left li.third").mouseover(function(){
		activate_panel('third');
	});
	$("ul#roller_left li.fourth").mouseover(function(){
		activate_panel('fourth');
	});
	
	$("input#first_name").blur(function(){
		var e=$.trim($(this).val());
		switch (e) {
			case 'Enter Your First Name' :
				$(this).attr('className','error');
				break;
			case '' :
				$(this).attr('className','error').val('Enter Your First Name');
				break;
			default :
				$(this).attr('className','');
				break;
		}
	});
	
	$("input#last_name").blur(function(){
		var e=$.trim($(this).val());
		switch (e) {
			case 'Enter Your Last Name' :
				$(this).attr('className','error');
				break;
			case '' :
				$(this).attr('className','error').val('Enter Your Last Name');
				break;
			default :
				$(this).attr('className','');
				break;
		}
	});
	
	$("input#email").blur(function(){
		var e=$.trim($(this).val());
		switch (e) {
			case 'Enter Your Email Address' :
				$(this).attr('className','error');
				break;
			case '' :
				$(this).attr('className','error').val('Enter Your Email Address');
				break;
			default :
				$(this).attr('className','');
				break;
		}
	});
	
	$("form#pledge").submit(function(){
		if (validate_pledge() && validate_email() && validate_name() && validate_last_name()) return true;
		return false;
	});
	
	$("form#invite").submit(function(){
		var result = true;
		var i = 0;
		$("ol#add_friends li").not(".my_pledge").each(function(){
			var nam = validate_friend_name(i);
			var mai = validate_friend_email(i);
			if (nam == false && mai == false)
			{
				// Erase pairs of empty values
				var invites_left = $("ol#add_friends li").not(".my_pledge");
				if (invites_left.length > 1)
				{
					$(this).remove();
					i--; // decrement counter because we've removed a li
				}
			}
			else if (nam == false || mai == false)
			{
				result = false;	// mismatched pair -- prevent submission
			}
			i++;	// increment counter because a li has been traversed
		});
		var invites = $("ol#add_friends li").not(".my_pledge");
		if (invites.length < 1)
		{
			for (f=invites.length; f<3; f++)
			{
				$("div#rightcol_wide li:eq(1)").clone(true).appendTo("ol#add_friends");
				$("input.friend_name:last").val("Enter friend's first name");
				$("input.friend_email:last").val("Enter friend's email address");
			}
			alert('Please invite at least 1 friend');
			result = false;
		}
		else
		{
			nam = validate_friend_name(0);
			mai = validate_friend_email(0);
			if (!nam || !mai)
			{
				alert('Please invite at least 1 friend');
				result = false;
			}
		}
		return result;
	});
	
	// Do not show the visitor's agreement when user is already logged-in
	var uid = $("input#registration").val();
	if (uid && uid != 'new' && uid.length != 0)
	{
		$("input#accept").attr('checked',true);
		$("div.checkbox").hide();
		// $("input#submit").css('marginTop','2em');
	}
	$("span#add_friend").click(function(){
		$("div#rightcol_wide li:eq(1)").clone(true).appendTo("ol#add_friends");
		$("input.friend_name:last").val("Enter friend's first name");
		$("input.friend_email:last").val("Enter friend's email address");
		$("span#remove_friend").show();
		$("span#add_remove_sep").show();

	});
	$("span#remove_friend").click(function(){
		var invites = $("ol#add_friends li").not(".my_pledge");
		if (invites.length > 3)
		{
			$("div#rightcol_wide li:last").remove();
		}
		else
		{
			$("span#remove_friend").hide();
			$("span#add_remove_sep").hide();
		}
		var invites = $("ol#add_friends li").not(".my_pledge");
		if (invites.length == 3) {
			$("span#remove_friend").hide();
			$("span#add_remove_sep").hide();
		}
	});
	$("input").click(function(){
		$(this).removeClass('error');
	});
	$("span#remove_friend").hide();
	$("span#add_remove_sep").hide();

	
	// Prevent invite submissions unless the user has pledged
	var registration = $("form#invite input#registration");
	if (registration.attr('type') == "hidden" && registration.val().length < 1)
	{
		var replacementLink = 'Before you can invite your friends, please <a href="/screenfour/take-the-pledge">take the pledge</a>';
		$("form#invite input[@type=text]").attr('disabled','true').css({
			color:"#ccc", borderColor:"#ccc"
		});
		$("form#invite input#friend_submit").hide();
		$("form#invite").attr('disabled','true');
		$("form#invite span#add_friend").hide();
		$("form#invite span#remove_friend").hide();
		$("form#invite li.my_pledge span").html(replacementLink);
		var warn = '<div id="warning">Please take the pledge yourself before you tell your friends. <a href="/screenfour/take-the-pledge">Go Back</a></div>';
		$("form#invite").append(warn);
		$('p.bottom_disclaim').hide();
	}
});

function activate_panel($arg)
{
	$("ul#roller_left li.active").removeClass('active');
	$("ul#roller_right li.active").removeClass('active');
	var left = "ul#roller_left li."+$arg;
	var right = "ul#roller_right li."+$arg;
	$(left).addClass('active');
	$(right).addClass('active');
}

function validate_pledge()
{
	var agreed = $("input#accept").attr('checked');
	if (false == agreed) alert('You must agree to the Sister to Sister Visitor Agreement to complete your pledge.');
	return agreed;
}

function validate_email()
{
	var mail = $.trim($("input#email").val());
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	var passtest = pattern.test(mail);
	if (false == passtest)
	{
		alert('You must enter your email address');
		return false;
	}
	return mail;
}

function validate_name()
{
	var name = $.trim($("input#first_name").val());
	if (name.length < 1 || name == 'Enter your First Name')
	{
		alert('You must enter your first name.');
		return false;
	}
	return name;
}

function validate_last_name()
{
	var name = $.trim($("input#last_name").val());
	if (name.length < 1 || name == 'Enter Your Last Name')
	{
		alert('You must enter your last name.');
		return false;
	}
	return name;
}

function validate_friend_email(i)
{
	var mail = $("input.friend_email:eq("+i+")").val();
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	var passtest = pattern.test(mail);
	if (false == passtest)
	{
		$("input.friend_email:eq("+i+")").val('Enter friend\'s email address').addClass('error');
		return false;
	}
	return mail;
}

function validate_friend_name(i)
{
	var name = $("input.friend_name:eq("+i+")").val();
	if (name.length < 1 || name == "Enter friend's first name")
	{
		$("input.friend_name:eq("+i+")").val("Enter friend's first name").addClass('error');
		return false;
	}
	return name;
}

