var RegistrationFull = {
    isPreTeen:false,
    isTeenager:false,
    blankFieldErrorFlag:false,
	UserName:"",
	Password:"",
    submit:function(alt)
    {
        this.blankFieldErrorFlag=false;
        this.isPreTeen = false;
        this.isTeenager = false;
        // validate for empty fields
        var myVal = new Validate("registrationSummary");
		myVal.isEmpty("firstName","firstNameValidationSpan","First name is empty.");
		myVal.isEmpty("lastName","lastNameValidationSpan","Last name is empty.");
		myVal.isEmail("EmailAddressFinal","emailValidationSpan","Email is invalid.");
        myVal.isEmpty("desiredPassword","passwordValidationSpan","Password is empty.");
		myVal.isMatch("desiredPassword","desiredPasswordRepeat","passwordValidationSpan","Passwords do not match.");
		
		if(document.getElementById('passwordChanged').value == 1)
		{
		    myVal.isReasonablePassword("desiredPassword","passwordValidationSpan","Password cannot contain punctuation and must be at least 5 characters.");
		}
		
		myVal.isZipcode("zipCode","zipCodeValidationSpan","Invalid postal code.");
		myVal.isValidDate($("month").value,$("day").value,$("year").value,"MDY","birthdateValidationSpan","Invalid Birthday.");
		//myVal.isValidDate($("childMonth").value,$("childDay").value,$("childYear").value,"MDY","childBirthdateValidationSpan","Invalid child birthday.");
		
		if ($("chkTerms") != null)
		{
		    myVal.isChecked("chkTerms","termsOfUseSpan","Please accept the Terms of Use before submitting.");
		}
		
        // determine birthdate
        var month = $("month").value;
        var day = $("day").value;
        var year = $("year").value;
        if(myVal.isPreTeen(month,day,year))
        {   
            // show stopper
            this.isPreTeen = true;
            // REPORT 13 IS A NO GO
            Utility.turnOn("RegistrationUnderAge");
			Utility.turnOff("MainRegistrationForm");
			return;
        }
        if(myVal.isTeenager(month,day,year))
        {
			this.isTeenager = true;
			Utility.turnOn("parentEmailMandatory");
			myVal.isEmail("parentEmailAddress","parentEmailValidationSpan","Parent email is invalid.");
        }
		else
		{
            Utility.turnOff("parentEmailMandatory");
        }
        if(myVal.isValid())
        {
            if(!this.isPreTeen)
			{
				switch(alt)
				{
					case "update":
						action = "update";
						regsource = "";
					break;
					default:
						action = "register";
						regsource = $("PostRegistrationDiv").value;
						
					break;
				}
				// start submission 
				var data =  "action=" + action +
							"&firstName=" + $("firstName").value +
							"&lastName=" + $("lastName").value +
							"&emailAddress=" + $("EmailAddressFinal").value +
							"&password=" + $("desiredPassword").value +
							"&parentEmailAddress=" + $("parentEmailAddress").value +
							"&mailingAddress=" + $("mailingAddress").value +
							"&mailingCity=" + $("mailingCity").value + 
							"&state=" + $("state").value +
							"&userCountry=" + $("userCountry").value + 
							"&userGender=" + $("userGender").value + 
							"&childsBirthDate=" + $("childMonth").value + $("childDay").value + $("childYear").value + 
							"&birthDate=" + $("month").value + $("day").value + $("year").value + 
							"&zipcode=" + $("zipCode").value +
							"&optin=" + $("optin").checked +
							"&source=" + regsource +
							"&optinDisney=" +
							"&status=";
							if($("updateUserID"))
							{
								data += "&updateUserId=" + $("updateUserID").value;	
							}
				$("register_button").disabled = true;
				Utility.turnOn("registrationResponsePanel");
				this.UserName = $("EmailAddressFinal").value;
				this.Password = $("desiredPassword").value;
				AjaxObject.startRequest("update",data,"registrationResponsePanel");
			}
			else
			{
				Utility.Swap("MainRegistrationForm","RegistrationUnderAge");
			}
        }
		else
		{
			myVal.yield(true);	
		}
        return;
    },
    registrationResultsSchema: {
            rowtag:"result_set" 
    },
    handleSuccess:function(o)
    {
        var loginResultXML = XML.parse(o.responseText);
        var xmlrows = loginResultXML.getElementsByTagName(this.registrationResultsSchema.rowtag);
        var xmlrow = xmlrows[0];
        var result = xmlrow.getElementsByTagName("result")[0];
        var error = xmlrow.getElementsByTagName("error")[0];
        var message = xmlrow.getElementsByTagName("message")[0];
		Utility.turnOff("registrationResponsePanel");
        if(error.firstChild.data == "false")
        {
            if(result.firstChild.data == "true")
            {
				if($("MainRegistrationForm")) 
				{	
					Utility.swap("MainRegistrationForm","RegistrationThankYou");
					Utility.turnOff("PreRegistrationHeader");
					if($("PostRegistrationDiv").value != "")
					{
						Utility.turnOn("PostRegistrationOffer");
					}
					//if($("returnURL"))
					//{
						$("loginID").value = this.UserName;
						$("password").value = this.Password;
						if($("returnURL"))
						{
						Login.attempt("main_redirect");
						}
						else
						{
						Login.attempt();
						}
					//}
				}
				if($("UpdateAccountForm")) 
				{
					Utility.swap("UpdateAccountForm","UpdateThankYou");
					setTimeout("window.location = window.location",2000);
				}
            }
            else
            {
                document.getElementById("registrationStatusMessage").innerHTML = message.firstChild.data;
                document.getElementById("register_button").disabled = false;
            }
        }
    }
};