﻿String.prototype.beginsWith = function(t, i)
{
    if (i == false)
    {
        return  (t == this.substring(0, t.length));
    } 
    else
    {
        return (t.toLowerCase() == this.substring(0, t.length).toLowerCase());
    } 
}

String.prototype.endsWith = function(t, i)
{
    if (i == false)
    {
        return (t == this.substring(this.length - t.length));
    } 
    else
    {
        return (t.toLowerCase() == this.substring(this.length - t.length).toLowerCase());
    }
}

function CloseButtonClicked()
{
    window.close();
}

function _RecursiveEnabling(control, disabledState)
{
    // If this is a Pfizer validator, enable or disable it
    if (control.evaluationfunction != undefined
        && typeof (control.evaluationfunction) == "function")
    {
        if (control.validationstyled != "true"
            && control.imageid != undefined
            && control.errorlabelid != undefined
            && !disabledState)
        {
            var setdefault = true;
        }
        
        ValidatorEnable(control, !disabledState);

        if (setdefault)
        {
            DefaultValidationStyling(document.getElementById(control.imageid)
                                     , document.getElementById(control.errorlabelid));
            control.validationstyled = "false";
        }
    }
    
    if (control.evaluateanyway == undefined
        && (control.enablemanual == undefined
            || control.enablemanual == null
            || control.enablemanual == false
            || control.enablemanual == "false"))
    {
        if (control.disabled != undefined
            || control.enabled != undefined)
        {
            if (disabledState == true)
                $(control).attr('disabled', 'disabled')
            else
                $(control).removeAttr('disabled')

            control.enabled = !disabledState;         
        }
        if (control.id != undefined) {
            if (control.id.endsWith("PV_WarningsLabel")) {
                control.style.display = disabledState ? "none" : "inline";
            }
            if (control.id.endsWith("PV_ValidImage")) {
                if (control.nameProp != "") {
                    control.style.display = disabledState ? "none" : "inline";
                }
            }
        }
        if (control.children != undefined
            && control.children.length > 0)
        {
            for (var i = 0; i < control.children.length; i++)
            {
                cont = control.children[i];

                _RecursiveEnabling(cont, disabledState);
            }
        }
        else if(control.childNodes != undefined
            && control.childNodes.length > 0)
        {
            for (var i = 0; i < control.childNodes.length; i++)
            {
                cont = control.childNodes[i];

                _RecursiveEnabling(cont, disabledState);
            }
        }
    }
}

function _HideValidatorRow(rowClientId)
{
    var tagHandle = document.getElementById(rowClientId);

    if (tagHandle != null) {
        tagHandle.style.display = "none";
        $(tagHandle).attr('disabled', 'disabled')
        _RecursiveEnabling(tagHandle, true);
    }
}

function _ShowValidatorRow(rowClientId, recursiveEnable)
{
    var tagHandle = document.getElementById(rowClientId);
    tagHandle.style.display = '';
    if (tagHandle.enablemanual != "true") {        
        $(tagHandle).removeAttr('disabled');
        if (recursiveEnable != false)
        {
            _RecursiveEnabling(tagHandle, false);
        }
    }
}

function ClientsideValidate(inputid, imageid, inputsdivid, warningslabelid)
{
    var control = document.getElementById(inputid);
    
    control.calledbyclientside = true;
    
    ValidatorValidate(control);

    var image = document.getElementById(imageid);
    var inputsdiv = document.getElementById(inputsdivid);
    var label = document.getElementById(warningslabelid);
    
    if (control.isvalid) {

        //hack to not display passed validation image if control is greyed out
        var inputStyle = $(inputsdiv).children("input[type=text]").attr("style");

        if (inputStyle == undefined 
            || inputStyle.indexOf('background: Gray') == -1)
        {
            PassedValidationStyling(image, label);
        }      
    }
    else
    {
        FailedValidationStyle(image, label, control.errormessage);
    }

    control.validationstyled = "true";

    control.calledbyclientside = false;
}

function PfizerValidatorRowEvaluateIsValid(val, validationGroup)
{
    var control = document.getElementById(val.pfizervalidatorid);

    return PfizerValidatorEvaluateIsValid(control, validationGroup);
}

function PfizerValidatorEvaluateIsValid(val, validationGroup)
{
    val.isvalid = true;
    newErrormessage = "";
    if ((val.disabled == false || val.enabled == true)
        || (val.evaluateanyway == true || val.evaluateanyway == "true"))
    {

        if (val.children != undefined
            && val.children.length > 0) {
            for (var i = 0; i < val.children.length; i++) {
                var innerValidator = val.children[i];

                var passed = InnerValidatorValidate(innerValidator);

                if (!innerValidator.isvalid) {
                    val.isvalid = false;
                    if (innerValidator.errormessage != undefined) {
                        if (newErrormessage == "") {
                            newErrormessage += innerValidator.errormessage + "\r\n"; 
                        }
                    }
                }
            }
        }
        
        else if (val.childNodes != undefined
            && val.childNodes.length > 0) {
            for (var i = 0; i < val.childNodes.length; i++) {
                var innerValidator = val.childNodes[i];

                var passed = InnerValidatorValidate(innerValidator);

                if (!innerValidator.isvalid) {
                    val.isvalid = false;
                    if (innerValidator.errormessage != undefined) {
                        if (newErrormessage == "") {
                            newErrormessage += innerValidator.errormessage + "\r\n";
                        }
                    }
                }
            }
        }
        if (newErrormessage != "")
        {
            val.errormessage = newErrormessage;
        }
    }
    
    if (val.calledbyclientside == undefined
       || val.calledbyclientside == false)
    {
        if (val.isvalid)
        {
            PassedValidationStyling(document.getElementById(val.imageid)
                                    , document.getElementById(val.errorlabelid));
        }
        else
        {
            FailedValidationStyle(document.getElementById(val.imageid)
                                  , document.getElementById(val.errorlabelid)
                                  , val.errormessage);
        }
        val.validationstyled = "true";
    }
    val.style.visibility = "visible";
    return val.isvalid;
}

function InnerValidatorValidate(validator)
{
    validator.isvalid = true;
    if ((typeof (validator.enabled) == "undefined"
          || validator.enabled != false
          || validator.evaluateanyway == "true"))
    {
        if (typeof (validator.evaluationfunction) == "function")
        {
            validator.isvalid = validator.evaluationfunction(validator);
            if (!validator.isvalid
                && Page_InvalidControlToBeFocused == null
                && typeof (validator.focusOnError) == "string"
                && validator.focusOnError == "t")
            {
                ValidatorSetFocus(validator, event);
            }
        }
    }
}

function PassedValidationStyling(image, label)
{
for(var controlCount=0;controlCount<document.forms[0].elements.length;controlCount++)
    {
        if (document.forms[0].elements[controlCount].id.indexOf('Password') > -1 && image != null)
        {
             image.style.display = "block";
             image.src = "../_LAYOUTS/1033/IMAGES/VR/Check.gif";
        }
    }
//if (label.id.indexOf('Password') > -1 && image != null)
//        {
//    image.style.display = "block";
//    image.src = "../_LAYOUTS/1033/IMAGES/VR/Check.gif";
//}

    $(label).html('');
}


function DefaultValidationStyling(image, label)
{
//    image.style.display = "block";
//    image.src = "../_LAYOUTS/1033/IMAGES/VR/default.gif";

    $(label).html('');
}

function FailedValidationStyle(image, label, errormessages)
{
//    image.style.display = "block";
//    image.src = "../_LAYOUTS/1033/IMAGES/VR/BadAuth.gif"

    if (errormessages != undefined
       && errormessages != "undefined" && label != null) 
    {
        label.style.display = "inline";
        label.style.visibility = "visible";
        $(label).html(errormessages);        
    }
    else if(image != null)
    {
        $(label).html('');
        image.style.display = "block";
        image.src = "../_LAYOUTS/1033/IMAGES/VR/BadAuth.gif";
    }
}

function CommonPasswordValidateSet(ValidatorSet, threshold)
{
    var numberOfPasses = 0;
    
    for (var i = 0; i < ValidatorSet.length; i++)
    {
        vali = ValidatorSet[i];

        validatorConvertStringToFunction(vali);

        ValidatorValidate(vali);

        vali.style.visibility = "visible";

        if (vali.isvalid)
        {
            numberOfPasses++;
        }
    }
    
    return (numberOfPasses >= threshold);
}

function validatorConvertStringToFunction(validator)
{
    if (typeof (validator.evaluationfunction) == "string")
    {
        eval("validator.evaluationfunction = " + validator.evaluationfunction + ";");
    }
}

function AddLoadEvent(func)
{
    var oldonload = window.onload;
    if (typeof window.onload != 'function')
    {
        window.onload = func;
    }
    else
    {
        window.onload = function()
        {
            oldonload();
            func();
        }
    }
}