
	function clearAll()
	{
		var f = document.forms[ 0 ];
		if ( f != null )
		{
			for( var i = 0; i < f.elements.length; i++ )
			{
				clearBackground( f.elements[ i ] );
			}
		}
	}
	
	function setBackground( field )
	{
		field.style.backgroundColor='#ffa';
	}
	
	function clearBackground( field )
	{
		field.style.backgroundColor='#fff';
	}
	
	function validate( elem, vtype )
	{
		switch( elem.type )
		{
			case "text":
				switch( vtype.toLowerCase() )
				{
					case "phone":
						formatPhone( elem );
						break;

					case "ssn":
						formatSSN( elem );
						break;

					case "datepart":
						if ( elem.value.length != 0 )
						{
							var numval = parseInt( elem.value, 10 );
							if ( isNaN( numval ) )
							{
								var msg = "This field must be a number.";
								elem.value = "";
								elem.focus();
								alert( msg );
								return false;
							}
							else
							{
								elem.value = zeroPad( elem.value );
							}
						}
						break;
					
					case "date":
						formatDate( elem );
						break;

					case "email":
						verifyEmail( elem );
						break;
						
					case "alphanumeric":
						var re = /^[a-zA-Z0-9 ]+$/;
						if ( elem.value.length != 0 )
						{
							if ( re.test( elem.value ) == false )
							{
								var msg = "This field must contain only letters and numbers. \n"
									+ "Please remove any punctuation and try again.";
								alert( msg );
								elem.focus();
								return false;
							}
						}

						break;
				}
				break;
		}
		clearBackground( elem );
	}

	function verifyEmail( field ) {
		var sEmail = new String(field.value);
		if (((sEmail.indexOf("@") == -1) || (sEmail.indexOf(".") == -1)) && sEmail.length > 0) {
			alert("Please enter a valid email address in the format user@emailprovider.com");
			field.value = "";
			field.focus();
			return (false);
		}
		return (true);
	}

	function formatPhone( elem )
	{
		var p = elem.value;
		var n = ""; x = "";
		for ( i = 0; i < p.length; i++ )
		{
			if ( isNaN( p.charAt( i ) ) == false )
				n += p.charAt( i ).toString();
		}
		if ( ( n.length < 10 && n.length != 0 ) || ( n.length == 0 && p.length != 0 ) )
		{
			var msg = "Your telephone number appears incorrect.\n" +
					  "Please make sure to include your area code:\n" +
					  "example: (360) 555-1212";
			alert( msg );
			elem.focus();
			return false;
		}
		if ( n.length != 0 ) 
			elem.value = "(" + n.substr( 0, 3 ) + ") " + n.substr( 3, 3 ) + "-" + n.substr( 6, 4 );
	}

	function formatSSN( elem )
	{
		var p = elem.value;
		var n = ""; x = "";
		for ( i = 0; i < p.length; i++ )
		{
			if ( isNaN( p.charAt( i ) ) == false )
				n += p.charAt( i ).toString();
		}
		if ( ( n.length < 9 && n.length != 0 ) || ( n.length == 0 && p.length != 0 ) )
		{
			var msg = "Your Social Security Number appears incorrect.\n" +
					  "Your SSN is 9 digits, in the format 000-00-0000.";
			alert( msg );
			elem.focus();
			return false;
		}
		if ( n.length != 0 ) 
			elem.value = n.substr( 0, 3 ) + "-" + n.substr( 3, 2 ) + "-" + n.substr( 5, 4 );
	}

	function formatDate( elem )
	{
		var dateval = elem.value;
		var msg = "The date value you entered does not appear to be correct.\n"
				+ "Please enter dates in the format MM/DD/YYYY, where:\n\n"
				+ "  - MM is the month,\n"
				+ "  - DD is the date,\n"
				+ "  - YYYY is the four-digit year.";

		if ( dateval.length != 0 )
		{
			if ( dateval.indexOf( "/" ) == -1 )
			{
				alert( msg );
				elem.focus();
				return false;
			}

			var dateArray = elem.value.split( "/" );
			if ( dateArray.length != 3 )
			{
				alert( msg );
				elem.focus();
				return false;
			}
			
			if ( dateArray[ 2 ].length != 4 )
			{
				alert( msg );
				elem.focus();
				return false;
			}

			elem.value = zeroPad( dateArray[ 0 ] ) + "/" + zeroPad( dateArray[ 1 ] ) + "/" + dateArray[ 2 ];
		}
	}

	function zeroPad( intValue )
	{
		var v = parseInt( intValue, 10 );
		if ( v < 10 )
			return "0" + v.toString();
		else
			return v.toString();
	}

	function warnNoSave( elem )
	{
		if ( elem.checked )
		{
			var msg = "By checking this box, the information on this\n"
					+ "form WILL NOT be saved. Are you sure?";
			if ( confirm( msg ) == false )
				elem.checked = false;
		}
	}

	var submitted = false;
	function submitCheck()
	{
		if ( submitted )
		{
			alert( "This page has already been submitted. \nYou are only allowed to submit each page only once. Press OK to wait for the next page to load." );
			return false;
		}
		else 
		{
			submitted = true;
			return true;
		}
	}
	
	function navCheck( elem )
	{
		var f = document.NAV;
		var id = elem.id;

		if ( ( f != null ) && ( id.length != 0 ) )
		{
			for ( var i = 0; i < f.primaryFunction.length; i++ )
			{
				if ( f.primaryFunction[ i ].disabled != true )
				{
					if ( f.primaryFunction[ i ].value == id )
						f.primaryFunction[ i ].checked = true;
					else
						f.primaryFunction[ i ].checked = false;
				}
			}
			f.submit();
		}
	}

	function addBookmark() { 
		var uri = "http://www.efiletaxreturns.com"; 
		var title = "EFile Tax Returns"; 

		if ( window.external ) { 
			window.external.AddFavorite( uri, title ) 
		} else { 
			alert( "Sorry! Your browser doesn't support this function."); 
		} 
	}