﻿ClientSide = {};
ClientSide.validation = {};

$(document).ready(function() {
    //Initialize validation on IsSearchRetailerTechnicianPage
    ClientSide.validation.initializeValidation('SearchRetailerTechnicianPage');
});

//Initialize validation
ClientSide.validation.initializeValidation = function(container) {
    if (ClientSide.IsSearchRetailerTechnicianPage()) {
        $('.PostalNumber').blur(function() {
            ClientSide.validation.validateForm(container, 'SingleFieldZipCode');
        });
        $('.SubmitButtonEnabled').click(function(e) {

            if (!ClientSide.validation.validateForm(container, 'SingleFieldZipCode')) {
                var aBetterEventObject = new $.Event(e);
                // Now you can do what you want: (Cross-browser)
                aBetterEventObject.preventDefault();
                aBetterEventObject.isDefaultPrevented();
                aBetterEventObject.stopPropagation();
                aBetterEventObject.isPropagationStopped();
                aBetterEventObject.stopImmediatePropagation();
                aBetterEventObject.isImmediatePropagationStopped();
                return false;
            }
        });

        $('.PostalNumber').keydown(function(e) {
            if (e.keyCode == 13) {
                var aBetterEventObject = new $.Event(e);
                // Now you can do what you want: (Cross-browser)
                aBetterEventObject.preventDefault();
                aBetterEventObject.isDefaultPrevented();
                aBetterEventObject.stopPropagation();
                aBetterEventObject.isPropagationStopped();
                aBetterEventObject.stopImmediatePropagation();
                aBetterEventObject.isImmediatePropagationStopped();
                return false;
            }
        });

        $('.SubmitButtonEnabled').keydown(function(e) {
            if (e.keyCode == 13) {
                var aBetterEventObject = new $.Event(e);
                // Now you can do what you want: (Cross-browser)
                aBetterEventObject.preventDefault();
                aBetterEventObject.isDefaultPrevented();
                aBetterEventObject.stopPropagation();
                aBetterEventObject.isPropagationStopped();
                aBetterEventObject.stopImmediatePropagation();
                aBetterEventObject.isImmediatePropagationStopped();
                return false;
            }
        });
    }
}

//Validate Zip Code
ClientSide.validation.validateZipCode = function(item) {
    var isValid = true;
    el = item.getElementsByTagName('input');
    var stringLength = ClientSide.validation.trim(el[0].value).length;
    if (isNaN(el[0].value)) {
        isValid = false;
    }
    if (stringLength != 5) {
        isValid = false;
    }
    if (!isValid) {
        ClientSide.validation.setErrorStyle($(item).find('.inputBox').get(0));
    }
    return isValid;
}

//Validate has value
ClientSide.validation.validateHasValue = function(item) {
    var isValid = true;
    el = item.getElementsByTagName('input');
    var stringLength = ClientSide.validation.trim(el[0].value).length;
    if (stringLength == 0) {
        isValid = false;
    }
    if (!isValid) {
        ClientSide.validation.setErrorStyle($(item).find('.inputBox').get(0));
    }
    return isValid;
}

ClientSide.IsSearchRetailerTechnicianPage = function() {
    return $(document.body).find('.SearchRetailerTechnicianPage')[0] != null;
}

//Trim function
ClientSide.validation.trim = function(str) {
    return str.replace(/^\s+|\s+$/g, '');
}

//Clear errors
ClientSide.validation.clearErrors = function(container) {
    var container;
    if (container == null) {
        container = 'customerInformationForm';
    }
    $('#' + container + ' .inputBox').each(function(i) {
        $(this).removeClass('error');
    });
    $('#' + container + ' select').each(function(i) {
        $(this).removeClass('error');
    });
    $('#' + container + ' .selectTime label').each(function(i) {
        $(this).removeClass('error');
    });
    $('#' + container + ' .Terms label').each(function(i) {
        $(this).removeClass('error');
    });
    $('#' + container + ' .form').each(function(i) {
        $(this).removeClass('error');
    });
    ClientSide.validation.ShowHideIncorrectFields('hidden');
    ClientSide.validation.HideInformationBubble('securityNumber');
}

//Clear errors single field
ClientSide.validation.clearErrorsSingleField = function(container, singleField) {
    var container;
    if (container == null) {
        container = 'customerInformationForm';
    }
    $('#' + container + ' .' + singleField + ' .inputBox').each(function(i) {
        $(this).removeClass('error');
    });
}

//Set error style
ClientSide.validation.setErrorStyle = function(item) {
    $(item).addClass('error');
}


//Validate form
ClientSide.validation.validateForm = function(container, singleField) {
    var isFormValid = true;
    var container;
    if (container == null) { container = 'customerInformationForm'; }
    if (singleField == null) {
        ClientSide.validation.clearErrors(container);
    } else {
        ClientSide.validation.clearErrorsSingleField(container, singleField);
    }
    if ($('#' + container) == null) return;
    $('#' + container + ' .Validate').each(function(i) {
        if (this.className.indexOf('SelectAutomatic') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateSelectAutomatic(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateSelectAutomatic(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('SelectPeriodBetweenThreeMonth') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateSelectPeriodBetweenThreeMonth(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateSelectPeriodBetweenThreeMonth(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('PaymentMethod') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validatePaymentMethod(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validatePaymentMethod(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('DateCheck') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateDate(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateDate(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('ProgramCardNumber') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateProgramCardNumber(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateProgramCardNumber(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('HasValue') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateHasValue(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateHasValue(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('TelWithStretch') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateTelWithStretch(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateTelWithStretch(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('IsChecked') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateIsChecked(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateIsChecked(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('String30') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateString30(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateString30(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('String60') != -1)
        {
            if (singleField != null)
            {
                if (this.className.indexOf(singleField) != -1)
                {
                    if (!ClientSide.validation.validateString60(this))
                    {
                        isFormValid = false;
                    }
                }
            } else
            {
                if (!ClientSide.validation.validateString60(this))
                {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('Street60') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateStreet(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateStreet(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('SocialSecurityNumber') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateSocialSecurityNumber(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateSocialSecurityNumber(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('ZipCode') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateZipCode(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateZipCode(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('HomePhone') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validatePhone(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validatePhone(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('MobPhone') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validatePhone(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validatePhone(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('EmailCheck') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateEmail(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateEmail(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('ConfirmEmail') != -1) {
            var originalEmail;
            if (document.all) {
                originalEmail = this.previousSibling;
            } else {
                originalEmail = this.previousSibling.previousSibling;
            }
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateConfirmEmail(originalEmail, this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateConfirmEmail(originalEmail, this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('SelectPayment') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateSelectPayment(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateSelectPayment(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('BindingPeriod') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateBindingPeriod(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateBindingPeriod(this)) {
                    isFormValid = false;
                }
            }
        }

        if (this.className.indexOf('ClearingNumber') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateClearingNumber(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateClearingNumber(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('AccountNumber') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateAccountNumber(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateAccountNumber(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('Terms') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateTerms(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateTerms(this)) {
                    isFormValid = false;
                }
            }
        }
        if (this.className.indexOf('Subscription') != -1) {
            if (singleField != null) {
                if (this.className.indexOf(singleField) != -1) {
                    if (!ClientSide.validation.validateSubscription(this)) {
                        isFormValid = false;
                    }
                }
            } else {
                if (!ClientSide.validation.validateSubscription(this)) {
                    isFormValid = false;
                }
            }
        }
    });
    if (!isFormValid && (singleField == null)) {
        ClientSide.validation.ShowHideIncorrectFields('visible');
    }
    return isFormValid;
}
