// ----------------------------------------------------------------------------------------------
// ------------------------------------- SIGN UP FORM -------------------------------------------
// ----------------------------------------------------------------------------------------------

YUE.onDOMReady(function() {

	GetUserInfoForSignUp();

	// sign up submit
	YUE.addListener(document.signup,'submit', function() {
		if (validate_signup()) {
			YUD.getElementsByClassName('alertBar')[0].style.display='none';
			ProcessSignUp();
		}
	});
	
	// field validation
	var validate_signup = function() {
		validity = true;
		var error_string = '';

		var element1 = document.getElementById('domestic');
		var element2 = document.getElementById('international');

		// first name: validate if empty
		if (!check_empty(document.signup.firstName.value)) {
			validity = false;
			YUD.addClass(YUD.getAncestorByTagName(document.signup.firstName,'td'),'error');
			error_string += '<li>Please insert a valid FIRST NAME</li>';
		}
		else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.firstName,'td'),'error')}

		// last name: validate if empty
		if (!check_empty(document.signup.lastName.value)) {
			validity = false;
			YUD.addClass(YUD.getAncestorByTagName(document.signup.lastName,'td'),'error');
			error_string += '<li>Please insert a valid LAST NAME</li>';
		}
		else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.lastName,'td'),'error')}

		// email: validate email structure
		if (!check_email(document.signup.email.value)) {
			validity = false;
			YUD.addClass(YUD.getAncestorByTagName(document.signup.email,'td'),'error');
			error_string += '<li>Please insert a valid EMAIL</li>';
		}
		else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.email,'td'),'error')}

		// confirm email: validate email structure
		if (!check_email(document.signup.confirmEmail.value)) {
			validity = false;
			YUD.addClass(YUD.getAncestorByTagName(document.signup.confirmEmail,'td'),'error');
			error_string += '<li>Please CONFIRM your EMAIL</li>';
		}
		else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.confirmEmail,'td'),'error')}

		// email & confirm email: validate if match
		if (document.signup.email.value != document.signup.confirmEmail.value) {
			validity = false;
			YUD.addClass(YUD.getAncestorByTagName(document.signup.confirmEmail,'td'),'error');
			error_string += '<li>EMAIL and CONFIRM EMAIL do not match</li>';
		}
    var address1 = document.signup.address1.value;
    var address2 = document.signup.address2.value;
    var city = document.signup.city.value;
    var zip = document.signup.zip.value;
    var state = document.signup.state.value;
    var province = document.signup.province.value;
    var postalCode = document.signup.postal.value;
    var country = document.signup.country.value;
    var isInternational = YUD.hasClass(element1,'hide');
		var address_error = validateAddress(address1, address2, city, state, zip, province, postalCode, country, isInternational);

		// address: validate if incomplete
		if (check_notEmpty(address_error)) {
			validity = false;
			error_string += address_error;
		}
		
		// DOMESTIC FIELDS

		if (!YUD.hasClass(element1,'hide')) {
			// state: validate if empty
			if (!check_notEmpty(document.signup.state.value)) {
				validity = false;
				YUD.addClass(YUD.getAncestorByTagName(document.signup.state,'td'),'error');
				error_string += '<li>Please select a STATE</li>';
			}
			else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.state,'td'),'error')}
			// zip: validate u.s. zip structure
			if (document.signup.zip.value != '') {
				if (!validateZipStructure(document.signup.zip.value)) {
					validity = false;
					YUD.addClass(YUD.getAncestorByTagName(document.signup.zip,'td'),'error');
					error_string += '<li>Please enter a valid ZIP CODE</li>';
				}
				else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.zip,'td'),'error')}
			}

			// phone: if logged in
			if (YUD.hasClass(document.getElementById('loggedInPhone'),'show')) {

				// check primary phone for valid structure
				if (document.signup.primaryPhoneLoggedIn1.value!='') {
					if (!validateUSphoneStructure(document.signup.primaryPhoneLoggedIn1.value)) {
						validity = false;
						YUD.addClass(YUD.getAncestorByTagName(document.signup.primaryPhoneLoggedIn1,'td'),'error');
						error_string += '<li>Please enter a valid PRIMARY PHONE</li>';
					}
					else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.primaryPhoneLoggedIn1,'td'),'error')}
				}

				// check secondary phone for valid structure
				if (document.signup.secondPhoneLoggedIn2.value!='') {
					if (!validateUSphoneStructure(document.signup.secondPhoneLoggedIn2.value)) {
						validity = false;
						YUD.addClass(YUD.getAncestorByTagName(document.signup.secondPhoneLoggedIn2,'td'),'error');
						error_string += '<li>Please enter a valid SECONDARY PHONE</li>';
					}
					else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.secondPhoneLoggedIn2,'td'),'error')}
				}
			}

			// phone: if logged out
			else {
				if (document.signup.primaryPhone1.value!='' || document.signup.primaryPhone2.value!='' || document.signup.primaryPhone3.value!='') {
					if (!check_usPhoneThree(document.signup.primaryPhone1.value) || !check_usPhoneThree(document.signup.primaryPhone2.value) || !check_usPhoneFour(document.signup.primaryPhone3.value)) {
						validity = false;
						YUD.addClass(YUD.getAncestorByTagName(document.signup.primaryPhone1,'td'),'error');
						error_string += '<li>Please enter a valid PRIMARY PHONE</li>';
					}
					else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.primaryPhone1,'td'),'error')}
				}
				else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.primaryPhone1,'td'),'error')}

				if (document.signup.secondPhone1.value!='' || document.signup.secondPhone2.value!='' || document.signup.secondPhone3.value!='') {
					if (!check_usPhoneThree(document.signup.secondPhone1.value) || !check_usPhoneThree(document.signup.secondPhone2.value) || !check_usPhoneFour(document.signup.secondPhone3.value)) {
						validity = false;
						YUD.addClass(YUD.getAncestorByTagName(document.signup.secondPhone1,'td'),'error');
						error_string += '<li>Please enter a valid SECONDARY PHONE</li>';
					}
					else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.secondPhone1,'td'),'error')}
				}
				else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.secondPhone1,'td'),'error')}
			}
		}

		// INTERNATIONAL FIELDS

		if (!YUD.hasClass(element2,'hide')) {

			// country: validate if selected
			if (!check_empty(document.signup.country.value)) {
				validity = false;
				YUD.addClass(YUD.getAncestorByTagName(document.signup.country,'td'),'error');
				error_string += '<li>Please select a COUNTRY</li>';
			}
			else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.country,'td'),'error')}
			// phone: validate if numeric
			/*if (document.signup.internationalPhone1.value!='') {
				if (!validateNumericStructure(document.signup.internationalPhone1.value) || !check_minChar(document.signup.internationalPhone1.value)) {
					validity = false;
					YUD.addClass(YUD.getAncestorByTagName(document.signup.internationalPhone1,'td'),'error');
					error_string += '<li>Please enter a valid PRIMARY PHONE</li>';
				}
				else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.internationalPhone1,'td'),'error')}
			}*/

			// phone: validate if numeric
			/*if (document.signup.internationalPhone2.value!='') {
				if (!validateNumericStructure(document.signup.internationalPhone2.value) || !check_minChar(document.signup.internationalPhone2.value)) {
					validity = false;
					YUD.addClass(YUD.getAncestorByTagName(document.signup.internationalPhone2,'td'),'error');
					error_string += '<li>Please enter a valid SECONDARY PHONE</li>';
				}
				else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.internationalPhone2,'td'),'error')}
			}*/
		}

		if (validity == false) YUD.getElementsByClassName('alertBar')[0].style.display = 'block';
		displayError('signupError',error_string);
		return validity;
	}
	
	var validateAddress = function(address1, address2, city, state, zip, province, postalCode, country, isInternational){
    var error_string = "";
    if(address1 != "" || address2 != "" || city != "" || zip != "" || province != "" || postalCode != "" ){
        if(address1 == "") {
          error_string += "<li>Please enter a valid ADDRESS</li>";
          YUD.addClass(YUD.getAncestorByTagName(document.signup.address1,'td'),'error');
        }
        else  {YUD.removeClass(YUD.getAncestorByTagName(document.signup.address1,'td'),'error')}
        if(city == "") {
          error_string += "<li>Please enter a valid CITY</li>";
          YUD.addClass(YUD.getAncestorByTagName(document.signup.city,'td'),'error');
        }
        else  {YUD.removeClass(YUD.getAncestorByTagName(document.signup.city,'td'),'error')}
        if(!isInternational){
            if(zip == "") {
              error_string += "<li>Please enter a valid ZIP CODE</li>";
              YUD.addClass(YUD.getAncestorByTagName(document.signup.zip,'td'),'error');
            }
            else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.zip,'td'),'error')}
        } else {
            if(province == "") {
              error_string += "<li>Please enter a valid PROVINCE/REGION</li>";
              YUD.addClass(YUD.getAncestorByTagName(document.signup.province,'td'),'error');
            }
            else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.province,'td'),'error')}
            if(postalCode == "") {
              error_string += "<li>Please enter a valid POSTAL CODE</li>";
              YUD.addClass(YUD.getAncestorByTagName(document.signup.postal,'td'),'error');
            }
            else {YUD.removeClass(YUD.getAncestorByTagName(document.signup.postal,'td'),'error')}
        }
    }
    else {
      YUD.removeClass(YUD.getAncestorByTagName(document.signup.address1,'td'),'error');
      YUD.removeClass(YUD.getAncestorByTagName(document.signup.city,'td'),'error');
      YUD.removeClass(YUD.getAncestorByTagName(document.signup.zip,'td'),'error');
      YUD.removeClass(YUD.getAncestorByTagName(document.signup.province,'td'),'error');
      YUD.removeClass(YUD.getAncestorByTagName(document.signup.postalCode,'td'),'error');
    }
    return error_string;
  }
});

// ----------------------------------------------------------------------------------------------
