﻿if (jQuery) {
    var validation_mode = 2;//0: On Button Click, 1: On Button Click and then On Blur, 2: Always
    var validation_img = "jquery/images/exclamation.png";
    var stars = Array();
    
    $(document).ready( function() {
        if(validation_mode == 2)
        {
            if(typeof(CustomValidation) == "object")
	        {
	            for(i=0;i<CustomValidation.length;i++)
		        {
		            $("#"+CustomValidation[i][0]).blur(function() {ValidateCustomRequire(1,this.id);});
		        }
		    }
        }
    });
    
    function ValidateCustomRequire(ovrCall, cObjId)
    {
        var valid_page = true;
        var validate_it = (!StopValidation && obj_event != null && obj_event.type == "submit" && obj_event.onclick != null);
        var validate_ovrCall = (ovrCall ? true : false);
        if (validate_it || validate_ovrCall)
        {
            var c_cObjId = (cObjId?cObjId:-1);
	        if(typeof(CustomValidation) == "object")
	        {
	            PrepareRemoveStars(c_cObjId);
		        for(i=0;i<CustomValidation.length;i++)
		        {		            
                    if(c_cObjId == -1 || c_cObjId == CustomValidation[i][0])
                    {
                        var V_obj = GetObject(CustomValidation[i][0]);
		                if(V_obj)
		                {		                
			                if (Trim(V_obj.value) == "")
			                {
			                    valid_page = false;
			                    MakeStar(V_obj, 1, CustomValidation[i][2]);
			                }
    				        
			                if(Validator(Trim(V_obj.value),CustomValidation[i][1]) == null)
			                {
			                    valid_page = false;	
                                var wht = 1;
                                if(CustomValidation[i][1] == "Integer") wht = 2;
                                else if(CustomValidation[i][1] == "Date" || CustomValidation[i][1] == "DateTime") wht = 3;
			                    MakeStar(V_obj, wht, CustomValidation[i][2]);
			                }
    				        
			                if(CustomValidation[i].length > 3 && CustomValidation[i][3] != "") //new
			                {
			                    var func = CustomValidation[i][3];
			                    var ret_func = func();
			                    if(ret_func && !ret_func.valid)
			                    {
			                        valid_page = false;
			                        MakeStar(V_obj, -1, ret_func.message);
			                    }
			                }
		                }
		            }
		        }
	        
	            RemoveStars(c_cObjId);
	        }
	        if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) valid_page = false;  
        }
        return valid_page;
    }

    MakeStar = function(control, msgt, emsf)
    {
        stars.push(control.id);
        var star_id = control.id + "sp";
        
        var _msgt = "";
        if(emsf && emsf != "") { _msgt = emsf; }
        else if(msgt == "1") { _msgt = (SystemLanguage=="el-GR" ? "Υποχρεωτικό πεδίο" : "Required field"); }
        else if(msgt == "2") { _msgt = (SystemLanguage=="el-GR" ? "Αριθμητικό πεδίο" : "Numeric field"); }
        else if(msgt == "3") { _msgt = (SystemLanguage=="el-GR" ? "Ημερολογιακό πεδίο" : "Date field"); }
        var _er = "<"+"img id='" + star_id + "' name='" + star_id + "' src='" + validation_img + "' align='absmiddle' hspace='3'/>";        
       
        if ($("#"+star_id).length<=0) {	           
	        $(control).after(_er);
	        if(validation_mode==1) {
	            $(control).blur(function() {ValidateCustomRequire(1, this.id);});
            }
        } else {
            if($("#"+star_id).attr("title") != "") _msgt = $("#"+star_id).attr("title") + ", " + _msgt;
	        $("#"+star_id).css("display","");
        }
        $("#"+star_id).attr("title",_msgt).attr("alt",_msgt).removeClass("validation-remove").addClass("validation-no-remove");
    }
    
    PrepareRemoveStars = function (c_cObjId)
    {
        for(var i=0;i<stars.length ; i++)
        {
            if(c_cObjId == -1 || c_cObjId == stars[i]) 
            {
                $("#"+stars[i] + "sp").removeClass("validation-no-remove").addClass("validation-remove").attr("title","").attr("alt","");
            }
        }
    }
    
    RemoveStars = function (c_cObjId)
    {
        for(var i=0;i<stars.length ; i++)
        {
            if(c_cObjId == -1 || c_cObjId == stars[i]) 
            {
                if($("#"+stars[i] + "sp").hasClass("validation-remove"))
                {
                    $("#"+stars[i] + "sp").css("display","none");
                }
            }
        }
    }
    
    function ValidateSelected()
    {
        var valid_page = true;
	    if(arguments)
	    {
	        PrepareRemoveStars(-1);
		    for(var i=0;i<arguments.length;i++)
		    {
			    var V_obj = GetObject(arguments[i]);
			    if(V_obj)
			    {
				    if (Trim(V_obj.value) == "")
				    {
					    MakeStar(V_obj, 1);
					    valid_page = false;
				    }
			    }
		    }
		    RemoveStars(-1);
	    }
	    StopValidation = true;
	    return valid_page;
    }
}
