﻿//Member variables
var hide_css_class = "display_none";
var validation_error_class="validation_error"
function AddValidationToInputs(functionName){
    //Cant use $(.validate) because it blowse up in ie6
    $("input.validate").blur(function(){
        SetValidation(this.id, functionName);
    });
    $("select.validate").blur(function(){
        SetValidation(this.id, functionName);
    });
}
function SetValidation(id, functionName){
    //Determine the original input id from the myid_ class, this is needed because dot net adds prefixes to server side controls
    var pattern = /\s*myid_([^\s]+)/;
    var result = pattern.exec($("#" + id).attr("class"));
    if (result != null)
        ProcessValidation(id, result[1],functionName);
    return false;
}
function ProcessValidation(id, myId, functionName){
    //hide the validtion message on blur
    HideValidationError(id);
    $.getJSON("/Validation/ValidationAjax.ashx",{func: functionName, myid: myId, input_value: $("#" + id).val()},
        function(result){
            ShowHideValidation(result.IsValid, id, result.ErrorMessage);
        }
    );
}

function ShowHideValidation(isValid, inputId, errorMessage){
    var validation_id = GetValidationId(inputId);
    if (isValid){
        UnhighlightLabel(inputId);
        $("#" + validation_id).html("");
        $("#" + inputId).unbind("focus");
        //This is need for when the onfocus even is set server side via the attributes collection.
        $("#" + inputId).attr({onfocus: "javascript:{}"});
    }
    else{
        HighlightLabel(inputId);
        $("#" + inputId).focus(function() {ShowValidationError(this.id,errorMessage)});
    }
}
function ShowValidationError(id, errorMessage){
    $("#" + GetValidationId(id)).html(errorMessage);
    $("#" + GetValidationContainerId(id)).removeClass(hide_css_class); 
}
function HideValidationError(id){
    $("#" + GetValidationContainerId(id)).addClass(hide_css_class);
}
function HighlightLabel(id){
    $("#" + GetLabelId(id)).addClass(validation_error_class);
}
function UnhighlightLabel(id){
    $("#" + GetLabelId(id)).removeClass(validation_error_class);
}
function GetLabelId(id){
    return id + "_label";
}
function GetValidationContainerId(id){
    return id + "_validation_container"
}
function GetValidationId(id){
    return id + "_validation"
}
