function isblank(s){
	for(var i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t')) {
			return false;
		}
	}
	return true;
}

function validateUsername(e) {
    if (isblank(e)) {
        $("#name-field + p").html("Please enter your name.");
        $("#name-field + p").addClass("error_row");
        return false;
    } else {
        $("#name-field + p").html("");
        return true;
    }
}

function validateZipcode(e) {
    var pattern = /^\d{5}$/;
    if (isblank(e) || e.search(pattern) == -1) {
        $("#zipcode-field + p").html("Please enter a valid 5 digit zipcode.");
        $("#zipcode-field + p").css("margin-left", "19px");
        $("#zipcode-field + p").addClass("error_row");
        return false;
    } else {
        $("#zipcode-field + p").html("");
        return true;
    }
}

function isEmailAddr(email){
	var result = false
	var theStr = new String(email)
	var index = theStr.indexOf("@");
	if (index > 0) {
    	var pindex = theStr.indexOf(".",index);
		if ((pindex > index+1) && (theStr.length > pindex+1)){
			var sindex = theStr.indexOf(" ");
			if (sindex == -1){
				result = true;
			}
		}
	}
	return result;
}

function validateEmail(email_addr){
	var msg2 = "Please enter valid email address.\n";
	if ((email_addr == null) || (email_addr == "") || isblank(email_addr)){
		$("#email-field + p").html("Please enter a valid email address.");
        $("#email-field + p").addClass("error_row");
		return false;
	}
	if (isEmailAddr(email_addr) == false){
		$("#email-field + p").html("Please enter a valid email address.");
        $("#email-field + p").addClass("error_row");
		return false;
	}
    $("#email-field + p").html("");
	return true;
}

//****************************************
//****************************************
// function setTerracottaUpdate(name, emailAddr, zipcode) {
//     var script_url = "http://dtest.nationalgeographic.com/cgi-bin/dream/epsilon2.pl?";
//     var script_default_params =  "ntag=tcw&plist_name=NG_Master_List&REFERRING_SITE=nationalgeographicterracotta&campaign_name=Data_Collection" +
//         "&action_type=Upload&upload_type=merge_replace&check_email_addr=Y";
// 	var emailScript = script_url + script_default_params 
// 		+ "&email_addr="+emailAddr
// 		+ "&zipcode="+zipcode
// 		+ "&profile_key="+emailAddr
// 		+ "&mailing_name="+name;
//     $.get(emailScript);
//     return false;    
// }
// 
// function setAdditionalUpdate(name, emailAddr, zipcode) {
//     var script_url = "http://dtest.nationalgeographic.com/cgi-bin/dream/epsilon2.pl?";
//     var script_default_params =  "ntag=other&plist_name=NG_Master_List&REFERRING_SITE=nationalgeographicterracotta&campaign_name=Data_Collection" +
//         "&action_type=Upload&upload_type=merge_replace&check_email_addr=Y";
// 	var emailScript = script_url + script_default_params 
// 		+ "&email_addr="+emailAddr
// 		+ "&zipcode="+zipcode
// 		+ "&profile_key="+emailAddr
// 		+ "&mailing_name="+name;
//     $.get(emailScript);
//     return false;  
// }
// 
// function handleEmailUpdateSubmit() {
//     var emailAddr = $("#email-field").val();
//     var username = $("#name-field").val();
//     var zipcode = $("#zipcode-field").val();
//     
//     var valid_email = validateEmail(emailAddr);
//     var valid_name = validateUsername(username);
//     var valid_zipcode = validateZipcode(zipcode);
// 
//     if (valid_email && valid_name && valid_zipcode) {
//         if ($("#tcw-updates-opt-in").is(":checked")) {
// 	        setTerracottaUpdate(username, emailAddr, zipcode);
//         }
//         else if ($("#nglive-updates-opt-in").is(":checked")) {
//             setAdditionalUpdate(username, emailAddr, zipcode);
//         } else {
//             setTerracottaUpdate(username, emailAddr, zipcode);
//         }
//         $(".email-updates").html("Thank you for signing up for our email updates.");
//     }
// 	return false;
// }
// function handleEmailRightSubmit() {
//     var emailAddr = $("#email-field").val();
//     var username = $("#name-field").val();
//     var zipcode = $("#zipcode-field").val();
//     
//     var valid_email = validateEmail(emailAddr);
//     var valid_name = validateUsername(username);
//     var valid_zipcode = validateZipcode(zipcode);
// 
//     if (valid_email && valid_name && valid_zipcode) {
//         if ($("#tcw-updates-opt-in").is(":checked")) {
//             setTerracottaUpdate(username, emailAddr, zipcode);
//         }
//         else if ($("#nglive-updates-opt-in").is(":checked")) {
//             setAdditionalUpdate(username, emailAddr, zipcode);
//         } else {
//             setTerracottaUpdate(username, emailAddr, zipcode);
//         }
// 	    $("#email-updates-right").html("Thank you for signing up for our email updates.");
//     }
// 	return false;
// }
//****************************************
//****************************************

function newsletterValidate() {
    var emailAddr = $("#email-field").val();
    var zipcode = $("#zipcode-field").val();
    var firstname = $("#first-name").val();
    var lastname = $("#last-name").val();


    var valid_email = validateEmail(emailAddr);
    var valid_zipcode = validateZipcode(zipcode);
    var valid_firstname = validateFirstname(firstname);
    var valid_lastname = validateLastname(lastname);

    if (valid_email && valid_firstname && valid_lastname && valid_zipcode) {
		return true;
	}
	return false;
}
function newsletterSuccess() {
    $(".email-updates").html("<h2>Get Email Updates</h2><p>Thank you for signing up for our email updates.</p>");
}

function sweepsSuccess() {
    $("#sweepstakes").html("<h2>Win a Trip to China With Viking River Cruises</h2><p>Thank you for entering the sweepstakes.</p>");
}

//****************************************
//****************************************


function validateFirstname(e) {
    if (isblank(e)) {
        $("#first-name + p").html("Please enter your first name.");
        $("#first-name + p").addClass("error_row");
        return false;
    } else {
        $("#first-name + p").html("");
        return true;
    }
}

function validateLastname(e) {
    if (isblank(e)) {
        $("#last-name + p").html("Please enter your last name.");
        $("#last-name + p").addClass("error_row");
        return false;
    } else {
        $("#last-name + p").html("");
        return true;
    }
}

function validateAddress(e) {
    if (isblank(e)) {
        $("#address-field + p").html("Please enter a valid address.");
        $("#address-field + p").addClass("error_row");
        return false;
    } else {
        $("#address-field + p").html("");
        return true;
    }
}

function validateCity(e) {
    if (isblank(e)) {
        $("#city-field + p").html("Please enter a valid city.");
        $("#city-field + p").addClass("error_row");
        return false;
    } else {
        $("#city-field + p").html("");
        return true;
    }
}

function validateState(e) {
    if (isblank(e)) {
        $("#state-field + p").html("Please enter a valid state.");
        $("#state-field + p").addClass("error_row");
        return false;
    } else {
        $("#state-field + p").html("");
        return true;
    }
}

function validateZip(e) {
    var pattern = /^\d{5}$/;
    if (isblank(e) || e.search(pattern) == -1) {
        $("#zip-field + p").html("Please enter a valid 5 digit zipcode.");
        $("#zip-field + p").addClass("error_row");
        return false;
    } else {
        $("#zip-field + p").html("");
        return true;
    }
}

function validatePhone(e) {
    if (isblank(e)) {
        $("#phone-field + p").html("Please enter a valid phone number.");
        $("#phone-field + p").addClass("error_row");
        return false;
    } else {
        $("#phone-field + p").html("");
        return true;
    }
}

function validateMail(email_addr) {
	if ((email_addr == null) || (email_addr == "") || isblank(email_addr)){
		$("#mail-field + p").html("Please enter a valid email address.");
        $("#mail-field + p").addClass("error_row");
		return false;
	}
	if (isEmailAddr(email_addr) == false){
		$("#mail-field + p").html("Please enter a valid email address.");
		return false;
	}
    $("#email-field + p").html("");
	return true;
}

function validateGroup() {
    if ($("#school-group").is(":checked") || $("#non-school-group").is(":checked") || $("#tour-group").is(":checked")) {
        $("#select-group > p").html("");
        return true;
    } else {
        $("#select-group > p").html("Please select the type of group that you represent.");
        $("#select-group > p").addClass("error_row");
        return false;
    }
}

function handleGroupReservationSubmit() {
    var firstname = $("#first-name").val();
    var lastname = $("#last-name").val();
    var address = $("#address-field").val();
    var address_two = $("#address2-field").val();
    var organization = $("#org-field").val();
    var title = $("#title-field").val();
    var city = $("#city-field").val();
    var state = $("#state-field").val();
    var zipcode = $("#zip-field").val();
    var phone = $("#phone-field").val();
    var email = $("#mail-field").val();
    
    var valid_firstname = validateFirstname(firstname);
    var valid_lastname = validateLastname(lastname);
    var valid_address = validateAddress(address);
    var valid_city = validateCity(city);
    var valid_state = validateState(state);
    var valid_zipcode = validateZip(zipcode);
    var valid_phone = validatePhone(phone);
    var valid_email = validateMail(email);
    var valid_group = validateGroup();
    
    if (valid_firstname && valid_lastname && valid_address && valid_city && valid_state && valid_zipcode && valid_phone && valid_email && valid_group) {
        $("#group-form").html("Your reservation has been successfully submitted. Thank you.");
        $("#submit-style").html("");
        var email_address = email;
        var email_content = "First Name: " + firstname + "\n";
        email_content += "Last Name: " + lastname + "\n";
        email_content += "Address: " + address + "\n";
        email_content += "Address 2:" + address_two + "\n";
        email_content += "Organization: " + organization + "\n";
        email_content += "Title: " + title + "\n";
        email_content += "City:" + city + "\n";
        email_content += "State: " + state + "\n";
        email_content += "Zipcode: " + zipcode + "\n";
        email_content += "Phone:" + phone + "\n";
    } else {
        $("#submit-style > p").html("Your form has errors, please correct them to complete your reservation.");
        $("#submit-style > p").addClass("error_row");
    }
    return false;
}
