function JSValidator () {
	this.ValidateField = function (elem, validate) {
		var field_expr = $(elem).attr('field_expr');
		var field_length = $(elem).attr('field_length');
		var field_req = $(elem).attr('field_req');
		
		var error = false;
		if (1 == field_req && !$(elem).attr('value'))
			error = $(elem).attr('field_req_error');
		else if ($(elem).attr('value') && 0 != field_expr && !$(elem).attr('value').match (new RegExp(field_expr)))
			error = $(elem).attr('field_regex_error');
		else if (0 != field_length && (new String ( $(elem).attr('value') )).length > field_length)
			error = $(elem).attr('field_length_error');
		
		if (error == $(elem).attr('field_req_error')&&!validate)
			return error;
		
		/*dlclass = error ? 'warn' : 0 != field_req ? 'ok_form' : '';

		try {
			if (null != $(elem).parents('dl').attr('class').match(/h_bord/)) {
				$(elem).parents('dl').removeClass();$(elem).parents('dl').addClass('h_bord');
			} else
				$(elem).parents('dl').removeClass();
		} catch (e) {
			$(elem).parents('dl').removeClass();
		}
						
		$(elem).parents('dl').addClass(dlclass);*/
		$(elem).parents("dd").children('div').remove();
		
		if (error)
			$(elem).after ('<div id="warn_tooltip" class="hidden"><div class="arrow_tool left"></div><p class="left">' + error + '</p></div>');
		return error;
	}
	
	this.hideValidateError= function (elem) {
		
		dlclass = '';

		try {
			if (null != $(elem).parents('dl').attr('class').match(/h_bord/)) {
				$(elem).parents('dl').removeClass();$(elem).parents('dl').addClass('h_bord');
			} else
				$(elem).parents('dl').removeClass();
		} catch (e) {
			$(elem).parents('dl').removeClass();
		}
						
		//$(elem).parents('dl').addClass(dlclass);		
		$(elem).parents("dd").children('div').remove();
		
	}
	
	this.passwordvalidate = function (params_arr) {
		var id_form = params_arr[0];
		var is_req = params_arr[1];
		
		var pass = $('#'+id_form).find("input[@name='password']");
		var repass = $('#'+id_form).find("input[@name='repassword']");
		repass.parents("dd").children('div').remove();
		if (is_req && '' == pass.val() && '' == repass.val()) {
			error = 'Password must be specified';
			//pass.parents('dl').removeClass();pass.parents('dl').addClass('warn');
			//repass.parents('dl').removeClass();repass.parents('dl').addClass('warn');
			repass.after ('<div id="warn_tooltip" class="hidden"><div class="arrow_tool left"></div><p class="left">' + error + '</p></div>');
			return;
		}
		if (pass.val() != repass.val()) {
			error = 'Passwords are different';
			
			//pass.parents('dl').removeClass();pass.parents('dl').addClass('warn');			
			//repass.parents('dl').removeClass();repass.parents('dl').addClass('warn');
			repass.after ('<div id="warn_tooltip" class="hidden"><div class="arrow_tool left"></div><p class="left">' + error + '</p></div>');
			return;
		}
		if (pass.val() == repass.val() && 'warn' == jQuery.trim(pass.parents('dl').attr('class'))) {
			pass.parents('dl').removeClass();pass.parents('dl').addClass('ok_form');
			repass.parents('dl').removeClass();	repass.parents('dl').addClass('ok_form');
		}
	}
	this.emailvalidate = function (params_arr) {
		var id_form = params_arr[0];
		var is_req = params_arr[1];
		
		var pass = $('#'+id_form).find("input[@name='email']");
		var repass = $('#'+id_form).find("input[@name='reemail']");
		repass.parents("dd").children('div').remove();		
		if (is_req && '' == pass.val() && '' == repass.val()) {
			error = params_arr[2];
			//pass.parents('dl').removeClass();pass.parents('dl').addClass('warn');
			//repass.parents('dl').removeClass();repass.parents('dl').addClass('warn');
			repass.after ('<div id="warn_tooltip" class="hidden"><div class="arrow_tool left"></div><p class="left">' + error + '</p></div>');
			return;
		}
		if (pass.val() != repass.val()) {
			error = params_arr[3];
			//pass.parents('dl').removeClass();pass.parents('dl').addClass('warn');			
			//repass.parents('dl').removeClass();repass.parents('dl').addClass('warn');
			repass.after ('<div id="warn_tooltip" class="hidden"><div class="arrow_tool left"></div><p class="left">' + error + '</p></div>');
			return;
		}
		if (pass.val() == repass.val() && 'warn' == jQuery.trim(pass.parents('dl').attr('class'))) {
			pass.parents('dl').removeClass();pass.parents('dl').addClass('ok_form');
			repass.parents('dl').removeClass();	repass.parents('dl').addClass('ok_form');
		}
	}
}