﻿function RequiredField(sender, args)
{   
    var val = args.Value;
    if((val.indexOf("Your ") != -1 || val=="")&& !Skip( sender.id )){
        errorCss(sender.id, true);
        toggleError(sender.id,true,"This is a Required Field");
        args.IsValid = false;
        return false;
    }else{
        errorCss(sender.id, false);
        toggleError(sender.id,false);
    }
    args.IsValid = true;
    return true;
}

function validateEmail(sender, args) {
    var objRegExp  = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
    
    if(args.Value!="" && !Skip()){
        if(!objRegExp.test(args.Value)){
            errorCss(sender.id, true);
            toggleError(sender.id,true,"Invalid Email Address");
            args.IsValid = false;
            return false;
        }else{
            errorCss(sender.id, false);
            toggleError(sender.id,false);
        }
    }
    args.IsValid = true;
    return true;
}

function toggleError(id,show,txt){
    var fieldobj = parseFieldName(id, true);
    var msg = document.getElementById("msg_"+fieldobj.field);
    if(msg){
        if(show){
                if(msg.tagName == 'SPAN') {
                    msg.style.display = "inline";
                    }
                else{
                    msg.style.display = "block";
                    }
                
                msg.innerHTML = txt;
        }else{
            if(msg) msg.style.display = "none";
        }
    }
}

function errorCss( id, err )
{
    var fieldobj = parseFieldName(id, true);
    var obj = document.getElementById("con_"+fieldobj.field);
    var sum = $("ErrorSummary");
    
    if(obj){
        if(err){
            
            if( obj.className.indexOf("fieldError")==-1 ){
                obj.className = obj.className + " fieldError";
            }
			if(sum) sum.css("display","block");
            //if(sum) sum.style.display = "block";
        }else{
            if( obj.className.indexOf("fieldError")!=-1 ){
                obj.className = obj.className.substring( 0, obj.className.indexOf("fieldError") );
            }
            if(sum) sum.css("display","none"); 
			//if(sum) sum.style.display = "none";
        }
    }
}

function Skip(id){
    var skipobj = document.getElementById("SkipValidation");
    var fldobj = document.getElementById(id);
    
    if(skipobj && fldobj){
    
        var ary = skipobj.value.split(",");
        var group = fldobj.getAttribute("CustomGroup");
        if(group != null){
            for( var i = 0; i < ary.length; i++ ){
                
                if( ary[i] == group ){
                    return true;
                } 
            }
        }
    }
    return false;
}

function toggleSkipGroup(group,leave){
    var obj = document.getElementById("SkipValidation");
    if(obj){
        var str = obj.value
        
        if(str.indexOf(group) > -1){
            //Remove
            if( leave != true ){
			    str = ( str.indexOf( "," + group  ) > -1 ? remove( str, "," + group ):remove( str, group) );
			    if( str.indexOf(",")==0 ){
				    str = str.substring( 1, str.length );
			    }
			}
        }else{
            //Add
			str = str + ( str == "" ? group : "," + group );
        }
		obj.value = str;
    }
}

function remove(s, t) {
    i = s.indexOf(t);
    r = "";
    if (i == -1) return s;
    r += s.substring(0,i) + remove(s.substring(i + t.length), t);
    return r;
}

function parseFieldName( id, compare ){

    var path, field
    if(id.indexOf("val_")!= -1){
        path = id.substring( 0, id.indexOf("val_") );
        field = id.substring(id.indexOf("val_") + 4);
        
        if( compare && field.indexOf("_compare")!=-1 ){
        
            field = field.substring(0, field.indexOf("_compare") + 8 );
        } else if( field.indexOf("_")!=-1 ){
            field = field.substring(0, field.indexOf("_"));
        }
        var obj = { path:path, field:field };
        return obj
    }
    return obj;    
}