﻿
// Validation Functions

function isValidLogOnName(str) 
{   
    var RegExPattern = /^[a-zA-Z0-9][\w\.-]*@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        return true;
    } 
    else 
    {
        return false;
    } 
}

function isValidDate(dateStr) 
{
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

    var matchArray = dateStr.match(datePat); // is the format ok?
    
    if (matchArray == null) 
    {
        return false;
    }
    
    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[4];
    
    if (month < 1 || month > 12) 
    { 
        // check month range
        return false;
    }
    
    if (day < 1 || day > 31) 
    {
        return false;
    }
    
    if ((month==4 || month==6 || month==9 || month==11) && day==31) 
    {
        return false;
    }
    
    if (month == 2) 
    { 
        // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day>29 || (day==29 && !isleap)) 
        {
            return false;
        }
    }
    return true;
}

function isValidFirstName(str)
{
    if (str.length <= 0 || str.length > 50)
    { 
        return false;
    }
    
    return true;
}

function isValidLastName(str)
{
    if (str.length <= 0 || str.length > 50)
    { 
        return false;
    }
    
    return true;
}

function isValidPassword(str)
{
    if ((str.length < 6) || (str.length > 20))
    {
        return false;
    }
    else
    {
        return true;
    }   
}

function isValidWeight(str) 
{
    var RegExPattern = /^[1-9][0-9]{0,12}$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        return true;
    } 
    else 
    {
        return false;
    } 
}

function isValidMoney(str) 
{
    var RegExPattern = /^\-?\$?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        if (str > 200000)
        {
            return false;
        }
        
        return true;
    } 
    else 
    {
        return false;
    } 
}

function isValidPositiveNumber(str) 
{
    if (str = "0")
    {
        return true;
    }

    var RegExPattern = /^[1-9][0-9]{0,12}$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        return true;
    } 
    else 
    {
        return false;
    } 
}

function isValidZip(str) 
{
    var RegExPattern = /^\d{5}([\-]\d{4})?$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        return true;
    } 
    else 
    {
        return false;
    } 
}

function isValidPositiveNumber(str) 
{
    var RegExPattern = /^[1-9][0-9]{0,12}$/;
    
    if ((str.match(RegExPattern)) && (str != '')) 
    {
        return true;
    } 
    else 
    {
        return false;
    } 
}

// Page Validation

function ValidateLogon()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessageLogon').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessageLogon").style.visibility = "hidden";

    // Hide Error Astericks
    document.getElementById("errLogonNameLogon").style.visibility = "hidden";
    document.getElementById("errPasswordLogon").style.visibility = "hidden";
    
    // LogonName
    if (isValidLogOnName(document.getElementById("txtLogonNameLogon").value) == false) 
    {
        document.getElementById("errLogonNameLogon").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Logon Email.";
            ErrorField = "txtLogonNameLogon";
        }
    }
    
    // Password
    if (isValidPassword(document.getElementById("txtPasswordLogon").value) == false) 
    {
        document.getElementById("errPasswordLogon").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Password.";
            ErrorField = "txtPasswordLogon";
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessageLogon').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessageLogon").style.visibility = "visible";
    
    return true;
}


function ValidateSignUp()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessageSignUp').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessageSignUp").style.visibility = "hidden";

    // Hide Error Astericks
    document.getElementById("errLogonNameSignUp").style.visibility = "hidden";
    document.getElementById("errLogonNameSignUpConfirm").style.visibility = "hidden";
    document.getElementById("errPasswordSignUp").style.visibility = "hidden";
    document.getElementById("errPasswordConfirm").style.visibility = "hidden";
    document.getElementById("errFirstName").style.visibility = "hidden";
    document.getElementById("errLastName").style.visibility = "hidden";
    document.getElementById("errQuestion").style.visibility = "hidden";
    document.getElementById("errSecretAnswer").style.visibility = "hidden";
    
    // LogonName
    if (isValidLogOnName(document.getElementById("txtLogonNameSignUp").value) == false) 
    {
        document.getElementById("errLogonNameSignUp").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Sign Up Email.";
            ErrorField = "txtLogonNameSignUp";
        }
    }

    // LogonName Confirm
    if (isValidLogOnName(document.getElementById("txtLogonNameSignUpConfirm").value) == false) 
    {
        document.getElementById("errLogonNameSignUpConfirm").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Sign Up Confirm Email.";
            ErrorField = "txtLogonNameSignUpConfirm";
        }
    }
    
    // LogonName Confirm
    if (document.getElementById("txtLogonNameSignUp").value != document.getElementById("txtLogonNameSignUpConfirm").value)
    {
        document.getElementById("errLogonNameSignUp").style.visibility = "visible";
        document.getElementById("errLogonNameSignUpConfirm").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Confirm Email does not match.";
            ErrorField = "txtLogonNameSignUpConfirm";
        }
    }

    // Password
    if (isValidPassword(document.getElementById("txtPasswordSignUp").value) == false) 
    {
        document.getElementById("errPasswordSignUp").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Password.";
            ErrorField = "txtPasswordSignUp";
        }
    }

    // Confirm Password
    if (isValidPassword(document.getElementById("txtPasswordConfirm").value) == false) 
    {
        document.getElementById("errPasswordConfirm").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Confirm Password.";
            ErrorField = "txtPasswordConfirm";
        }
    }

    // Password Confirm
    if (document.getElementById("txtPasswordSignUp").value != document.getElementById("txtPasswordConfirm").value)
    {
        document.getElementById("errPasswordSignUp").style.visibility = "visible";
        document.getElementById("errPasswordConfirm").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Confirm Password does not match.";
            ErrorField = "txtPasswordConfirm";
        }
    }

    // First Name
    if (isValidFirstName(document.getElementById("txtFirstName").value) == false) 
    {
        document.getElementById("errFirstName").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid First Name.";
            ErrorField = "txtFirstName";
        }
    }

    // Last Name
    if (isValidLastName(document.getElementById("txtLastName").value) == false) 
    {
        document.getElementById("errLastName").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Last Name.";
            ErrorField = "txtLastName";
        }
    }

    // Question
    if (document.getElementById("ddlQuestion").value == 0)
    {
        document.getElementById("errQuestion").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Secret Question.";
            ErrorField = "ddlQuestion";
        }
    }
    
    // Answer
    if (document.getElementById("txtSecretAnswer").value == "") 
    {
        document.getElementById("errSecretAnswer").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Secret Answer.";
            ErrorField = "txtSecretAnswer";
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessageSignUp').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessageSignUp").style.visibility = "visible";
    
    return true;
}


function ValidateSignUpProfile()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessage").style.visibility = "hidden";

    // Hide Error Astericks
    document.getElementById("errCurrentWeight").style.visibility = "hidden";
    document.getElementById("errAge").style.visibility = "hidden";

    // Current Weight
    if (document.getElementById("txtCurrentWeight").value != "")
    {
        if (isValidWeight(document.getElementById("txtCurrentWeight").value) == false) 
        {
            document.getElementById("errCurrentWeight").style.visibility = "visible";
        
            if (ErrorField == "")
            {
                ErrorMessage = "Error: Invalid Current Weight.";
                ErrorField = "txtCurrentWeight";
            }
        }
    }

    // Age
    if (document.getElementById("txtAge").value != "")
    {
        if (isValidPositiveNumber(document.getElementById("txtAge").value) == false) 
        {
            document.getElementById("errAge").style.visibility = "visible";
        
            if (ErrorField == "")
            {
                ErrorMessage = "Error: Invalid Age.";
                ErrorField = "txtAge";
            }
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessage").style.visibility = "visible";
    
    return true;
}


function ValidateSignUpFindFriendSearch()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessage").style.visibility = "hidden";
    
    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "hidden";
    }

    // Hide Error Astericks
    document.getElementById("errSearchData").style.visibility = "hidden";

    // Search Data
    var SearchData = document.getElementById("txtSearchData").value;

    if (((SearchData.indexOf("@") != -1) && (SearchData.indexOf(".") != -1)) || ((SearchData.indexOf(" ") != -1) && (SearchData.length > 2)))
    {
        // Okay
    }
    else
    {
        document.getElementById("errSearchData").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Search. Must be First and Last Name or Email.";
            ErrorField = "txtSearchData";
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessage").style.visibility = "visible";

    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "visible";
    }
    
    return true;
}

function ValidateSignUpFindChallengeSearch()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessage").style.visibility = "hidden";
    
    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "hidden";
    }

    // Hide Error Astericks
    document.getElementById("errChallengeName").style.visibility = "hidden";

    // Challenge Name
    if (document.getElementById("txtChallengeName").value == "")
    {
        document.getElementById("errChallengeName").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Challenge Name.";
            ErrorField = "txtChallengeName";
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessage").style.visibility = "visible";

    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "visible";
    }
    
    return true;
}



function ValidateSignUpFindTeamSearch()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessage").style.visibility = "hidden";
    
    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "hidden";
    }

    // Hide Error Astericks
    document.getElementById("errTeamName").style.visibility = "hidden";
    document.getElementById("errRange").style.visibility = "hidden";
    document.getElementById("errZipCode").style.visibility = "hidden";

    // Must Have Team Name or Zip Code and Range
    if ((document.getElementById("txtTeamName").value == "") && (document.getElementById("txtZipCode").value == "") && (document.getElementById("txtRange").value == ""))
    {
        document.getElementById("errTeamName").style.visibility = "visible";
        document.getElementById("errRange").style.visibility = "visible";
        document.getElementById("errZipCode").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Form is incomplete.";
            ErrorField = "txtTeamName";
        }
    }

    // Validate ZIP Code and Range if Provided
    if ((document.getElementById("txtZipCode").value != "") || (document.getElementById("txtRange").value != ""))
    {
        // Validate ZIP Code
        if (isValidZip(document.getElementById("txtZipCode").value) == false)
        {
            document.getElementById("errZipCode").style.visibility = "visible";
        
            if (ErrorField == "")
            {
                ErrorMessage = "Error: Invalid ZIP Code.";
                ErrorField = "txtZipCode";
            }
        }
        
        // Validate Range
        if (isValidPositiveNumber(document.getElementById("txtRange").value) == false)
        {
            document.getElementById("errRange").style.visibility = "visible";
        
            if (ErrorField == "")
            {
                ErrorMessage = "Error: Invalid Range.";
                ErrorField = "txtRange";
            }
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessage").style.visibility = "visible";

    if (document.getElementById("divResults"))
    {
        document.getElementById("divResults").style.visibility = "visible";
    }
    
    return true;
}

function ValidateUpdateUserProfile()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errUpdateUserInfoMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblUpdateUserInfoMessage").style.visibility = "hidden";

    // Hide Error Astericks
    document.getElementById("errFirstName").style.visibility = "hidden";
    document.getElementById("errLastName").style.visibility = "hidden";
    document.getElementById("errAge").style.visibility = "hidden";

    // First Name
    if (isValidFirstName(document.getElementById("txtFirstName").value) == false) 
    {
        document.getElementById("errFirstName").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid First Name.";
            ErrorField = "txtFirstName";
        }
    }

    // Last Name
    if (isValidLastName(document.getElementById("txtLastName").value) == false) 
    {
        document.getElementById("errLastName").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Last Name.";
            ErrorField = "txtLastName";
        }
    }

    // Age
    if (document.getElementById("txtAge").value != "")
    {
        if (isValidPositiveNumber(document.getElementById("txtAge").value) == false) 
        {
            document.getElementById("errAge").style.visibility = "visible";
        
            if (ErrorField == "")
            {
                ErrorMessage = "Error: Invalid Age.";
                ErrorField = "txtAge";
            }
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errUpdateUserInfoMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblUpdateUserInfoMessage").style.visibility = "visible";
    
    return true;
}


function ValidateAddComment()
{
    var ErrorMessage = "";
    var ErrorField = "";
    
    // Clear Client Side Message
    document.getElementById('errMessage').innerHTML = "";
    
     // Hide server side message
    document.getElementById("lblMessage").style.visibility = "hidden";

    // Hide Error Astericks
    document.getElementById("errComment").style.visibility = "hidden";

    // Comment
    if (document.getElementById("txtComment").value == "") 
    {
        document.getElementById("errComment").style.visibility = "visible";
        
        if (ErrorField == "")
        {
            ErrorMessage = "Error: Invalid Comment.";
            ErrorField = "txtComment";
        }
    }

    // Display Message if Error
    if (ErrorField != "") 
    { 
        document.getElementById('errMessage').innerHTML = ErrorMessage;
        document.getElementById(ErrorField).focus();

        return false;
    }

    // Success, show server side message. Hide client message.
    document.getElementById("lblMessage").style.visibility = "visible";
    
    return true;
}

