﻿function ValidatePhoneNumber(phoneNumber, controlID, label)
    {
        if (phoneNumber.length < 10) return;
        if (!Validate.isValidPhoneNumber(phoneNumber,false)) 
        {
            Validate.displayFieldInvalidMessage(label);
            Field.setStateByValidity(controlID,false);
        }
        else
        {
            if (DirectoryService && DirectoryService.IsValidPhoneNumber)
            {
                DirectoryService.IsValidPhoneNumber(phoneNumber,controlID,label,OnValidateComplete);
            }
        }
    }
    function ValidateEmailAddress(emailAddress, controlID, label)
    {
        if (!Validate.isValueSuppliedByID(controlID)) return;
        if (!Validate.isValidEmail(emailAddress,false)) 
        {
            Validate.displayFieldInvalidMessage(label);
            Field.setStateByValidity(controlID,false);
        }
        else
        {
            if (DirectoryService && DirectoryService.IsValidEmailAddress)
            {
                DirectoryService.IsValidEmailAddress(emailAddress,controlID,label,OnValidateComplete);
            }
        }
    }
    function ValidateUniversityofPhoenixEmail(emailAddress, controlID)
    {
        if (!Validate.isValueSuppliedByID(controlID)) return;
        $.ajax(
        {
              type: "POST",
              url: "/services/DirectoryService.asmx/IsValidUniversityofPhoenixEmail",
              data: "{'emailAddress':'" + emailAddress + "','clientSideControlID':'" + controlID + "'}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: AjaxSucceeded
        });
    }
    function ValidateZipState(state, stateControlID, zipCode, zipControlID)
    {
        if (!Validate.isValueSuppliedByID(stateControlID) || !Validate.isValueSuppliedByID(zipControlID)) return true;
        if (!Validate.isValidZip(zipCode, false)) 
        {
            Validate.displayFieldInvalidMessage('Zip Code');
            Field.setStateByValidity(zipControlID,false);
        }
        else
        {
            $.ajax(
            {
                  type: "POST",
                  url: "/services/DirectoryService.asmx/IsValidLocationForZipCodeState",
                  data: "{'state':'" + state + "','zipCode':'" + zipCode + "','clientSideControlID':'" + zipControlID + "'}",
                  contentType: "application/json; charset=utf-8",
                  dataType: "json",
                  success: AjaxSucceeded
            });
        }
    }
    function ValidateZipCodeIncludedForOnlineCampus(schoolID, zipCode, zipControlID)
    {
        if (!Validate.isValueSuppliedByID(zipControlID)) return;
        if (!Validate.isValidZip(zipCode, false)) 
        {
            Validate.displayFieldInvalidMessage('Zip Code');
            Field.setStateByValidity(zipControlID,false);
        }
        else
        {
            $.ajax(
            {
                  type: "POST",
                  url: "/services/DirectoryService.asmx/IsZipCodeIncludedForOnlineCampus",
                  data: "{'schoolID':'" + 96 + "','zipCode':'" + zipCode + "','clientSideControlID':'" + zipControlID + "'}",
                  contentType: "application/json; charset=utf-8",
                  dataType: "json",
                  success: AjaxSucceeded
            });
        }
    }

    function AjaxSucceeded(result) 
    {
        OnValidateComplete(result.d);
    }
    
    function OnValidateComplete(result)
    {
        var resultsArr = List.getArrayFromList(result,'|');
        if (resultsArr && resultsArr.length > 1)
        {
            if(resultsArr[0] =='false')
            {
                Form.displayMessage(resultsArr[2]);
                Field.setStateByValidity(resultsArr[1],false);
            }
            else
            {
                Field.setStateByValidity(resultsArr[1],true);
            }
        }
        resultsArr = null;
    }
    function isValidFirstName(sender, args)
    {
        args.IsValid = isValidProperNoun(args.Value);
    }
    function isValidLastName(sender, args)
    {
        args.IsValid = isValidProperNoun(args.Value);
    }
    function isValidProperNoun(fieldValue)
    {
        var isValid = true;
        fieldValue = fieldValue.toLowerCase();
        if (isValid)
        {
            var searchConsecutiveVowels = /([aeiouy]{5,})/;
            if (searchConsecutiveVowels.test(fieldValue))
            {
                isValid = false;
            }
        }
        if (isValid)
        {
            var searchConsecutiveConsonants = /([bcdfghjklmnpqrstvwxz]{5,})/;
            if (searchConsecutiveConsonants.test(fieldValue))
            {
                isValid = false;
            }
        }
        if (isValid)
        {
            var searchVowels = /([aeiouy])/;
            if (!searchVowels.test(fieldValue))
            {
                if (fieldValue == 'ng')
                {
                    isValid = true;
                }
                else
                {
                    isValid = false;
                }
            }
        }
        return isValid;
    }
    function isValidBirthDate(birthYear, birthMonth, birthDay)
    {       
        var isValid = true;
        if (birthDay.length > 0 && birthMonth.length > 0 && birthYear.length > 0)
        {
            isValid = Validate.isValidDate(birthYear,birthMonth, birthDay);
        }
        return isValid;
    }