var form_valid = {
	
	current_prccess : ""
	,
	current_state : false
	,
	rulenote : ""
	,
	balloon_created : false
	,
	init_start : function(p_form, p_input_id)    
	{
        this.create_balloon();
		return this.get_form_rules(p_form,p_input_id);
	}
	,
	create_balloon : function()
	{
		if (!this.balloon_created) {
			this.balloon_created = true;
			balloon.create_balloon({
				"effect": "fade"
				,"position" : "right"
			})
		}

	}
	,	
	get_form_rules : function(p_form, p_input_id)
	{
		var return_rule = false;
		$('#'+p_form+" :input").each(function (el) {
			var id = "";
			try{
				var id = $(this).attr('id');
			}catch(e){}

			if(id == "")
				return true;
			var rule_str = $("#"+id).attr('rule');
			eval("rule_obj = "+rule_str);
			if(rule_obj != undefined)
			{
				var rule = rule_obj.action;
				var rulenote = rule_obj.note;
				var position = rule_obj.position;
                try{
                    var rel = rule_obj.rel;
                }catch(e){}
                
                if(rel != undefined && rel != ''){
                    form_valid.current_prccess = rel;
                }
                else{
				    form_valid.current_prccess = id;
                }
                
                try{
                    var msg_replace_func = rule_obj.msg_replace_func;
                }catch(e){}
                
                if(msg_replace_func != undefined && msg_replace_func != ''){                    
                    rulenote = eval(msg_replace_func + "('" + rulenote + "')");
                }                
                
				form_valid.rulenote = rulenote;
				var result = eval("form_valid.ch_"+rule);
				if(!form_valid.current_state)
				{
					balloon.settings.position = position;	
					balloon.show(form_valid.current_prccess , form_valid.rulenote);
					$("#"+form_valid.current_prccess).focus();
					return  return_rule = false;
				}
				else
				{
					balloon.hide(form_valid.current_prccess);	
                    if(id == p_input_id){
                        return false;
                    }
				}
			}
			return_rule = true;
		});
		return return_rule;
	}
	,
	ch_must_select : function ()
	{
		var selected_index = $("#"+this.current_prccess)[0].selectedIndex;
		
		if(selected_index == 0)
		{
			//balloon.show(this.current_prccess,this.rulenote);
			return form_valid.current_state = false;
		}
		else
		{
			return form_valid.current_state = true;
		}
	}
	,
	ch_length : function(p_start,p_end)
	{
		var return_res;
		var str = $("#"+this.current_prccess).val();
		if(p_start > 0 && p_end == undefined)
		{
			if(str.length >= p_start)
				return_res = true;
			else 
				return_res = false;
		}
		else if(p_end > 0 && p_start == undefined)
		{
			if(str.length <= p_end)
				return_res = true;
			else 
				return_res = false;	
		}
		else
		{
			if(str.length >= p_start && str.length <= p_end)
				return_res = true;
			else 
				return_res = false;	
		}
		form_valid.current_state = return_res;
		return return_res;
	}
    ,ch_account_name : function()
    {
        var return_res = false;
        var str = $("#"+this.current_prccess).val();
        var min_length = 2;
        if(str.length >= min_length && str.match(/^([ a-zA-Z\-\.\,]*)$/)){
            return_res = true;
        }
        form_valid.current_state = return_res;
        return return_res;
    }    
	,
	ch_amount : function(p_start,p_end)
	{
		var return_res;
		var str = $("#"+this.current_prccess).val();
        if(isNaN(p_start)){            
            p_start = _min_deposit_amount;
        }               
		if(p_start >= 0 && p_end == undefined)
		{
			if(str >= p_start)
				return_res = true;
			else 
				return_res = false;
		}
		else if(p_end > 0 && p_start == undefined)
		{
			if(str <= p_end)
				return_res = true;
			else 
				return_res = false;	
		}
		else
		{
			if(str >= p_start && str <= p_end)
				return_res = true;
			else 
				return_res = false;	
		}
		form_valid.current_state = return_res;
		return return_res;
	}
	,ch_is_email : function()
	{
		var str = $("#"+this.current_prccess).val();
		form_valid.current_state = (str.search(/^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/) != -1)
		return form_valid.current_state;
	}
	,ch_only_int : function()
	{
		var return_res = false;
		var str = $("#"+this.current_prccess).val();
		
		try{
			var exp = /[0-9]/;
			return_res = exp.test(str);
		}catch(e){}
		form_valid.current_state = return_res
		return return_res;
	}
	,ch_same_as : function(p_id)
	{
		var return_res = false;
		var str = $("#"+this.current_prccess).val();
		
		if(str == $("#"+p_id).val())
			return_res = true;
			
		form_valid.current_state = return_res
		return return_res;
	}
    ,ch_english_letters : function()
    {
        var return_res = false;
        var str = $("#"+this.current_prccess).val();
        
        try{            
            return_res = str.match(/^([ a-zA-Z\-\.\,]*)$/);
        }catch(e){}
        form_valid.current_state = return_res
        return return_res;
                
    }
	
    ,ch_img_type : function()
    {
        var return_res = false;
		
        var str = $("#"+this.current_prccess).val();
        
		str = str.split(".");
		ext = str[str.length -1] ;
		ext = ext.toLowerCase();
		if(ext == "")
		{
			return_res = true;
		}
		else
		{
			if(ext == "jpg" || ext == "jpg" || ext == "png" || ext == "jpeg")
			{
				return_res = true;
			}
			else
			{
				clearFileUpload(this.current_prccess)
				
				return_res = false;
			}
		}
        
        form_valid.current_state = return_res;
        return return_res;
                
    }
	
    ,ch_is_checked : function()
    {
        
        if($("#"+this.current_prccess).is(':checked')){
            return form_valid.current_state = true;
        }
        else{
            return form_valid.current_state = false;
        }
            
    }
}

