function input_events_go(focus_elem,textfield_class_name,textarea_class_name)
	{
	var elem_arr = [];
	input_events_focused = [];
	input_events_mouseover = [];
	
	//textfield
	if (textfield_class_name)
		{elem_arr = input_events_get_elements(document, 'input', textfield_class_name);
		
		for (var i = 0;i < elem_arr.length;i++)
			{
			elem_arr[i].onmouseover = function() {input_events_action(this, 'mouse_over',textfield_class_name + '_focus',textfield_class_name + '_error');}
			elem_arr[i].onmouseout = function() {input_events_action(this, 'mouse_out',textfield_class_name,textfield_class_name + '_error',textfield_class_name + '_error');}
			elem_arr[i].onkeypress = function() {input_events_action(this, 'keypress',textfield_class_name + '_focus',textfield_class_name + '_error');}		
			elem_arr[i].onfocus = function() {input_events_action(this, 'focus',textfield_class_name + '_focus',textfield_class_name + '_error');}
			elem_arr[i].onblur = function() {input_events_action(this, 'blur',textfield_class_name,textfield_class_name + '_error');}
			}
		}
	
	//textarea
	if (textarea_class_name)
		{elem_arr = input_events_get_elements(document, 'textarea', textarea_class_name);
		
		for (var i = 0;i < elem_arr.length;i++)
			{elem_arr[i].onmouseover = function() {input_events_action(this, 'mouse_over',textarea_class_name + '_focus',textarea_class_name + '_error');}
			elem_arr[i].onmouseout = function() {input_events_action(this, 'mouse_out',textarea_class_name,textarea_class_name + '_error',textarea_class_name + '_error');}
			elem_arr[i].onkeypress = function() {input_events_action(this, 'keypress',textarea_class_name + '_focus',textarea_class_name + '_error');}
			elem_arr[i].onfocus = function() {input_events_action(this, 'focus',textarea_class_name + '_focus',textarea_class_name + '_error');}
			elem_arr[i].onblur = function() {input_events_action(this, 'blur',textarea_class_name,textarea_class_name + '_error');}
			}
		}
	
	
	
	if (focus_elem)
		{document.forms[0][focus_elem].focus();}
	}

//////////////////////////////////

function input_events_action(input_obj,action_type,new_class_name,error_class)
	{
	var tmp_id = input_obj.name;
	
	switch (action_type)
		{case "mouse_over": 
			if (input_obj.className == error_class) {return;}
			input_obj.className = new_class_name;
			input_events_mouseover[tmp_id] = true;
		break;
		case "mouse_out":
			if (input_obj.className == error_class) {return;}
			if (!input_events_focused[tmp_id])
				{input_obj.className = new_class_name;}
			input_events_mouseover[tmp_id] = false;
		break;
		case "keypress": 
			if (input_obj.className == error_class)
				{input_obj.className = new_class_name;
				input_events_msg_control(tmp_id,'','',false,'error');
				}
		break;
		case "focus":			
			//bg change
			if (input_obj.className == error_class) {return;}
			input_events_focused[tmp_id] = true;
			input_obj.className = new_class_name;
		break;
		case "blur":			
			//bg change
			if (input_obj.className == error_class) {return;}
			if (!input_events_mouseover[tmp_id])
				{input_obj.className = new_class_name;}
			input_events_focused[tmp_id] = false;
		break;
		}
	}

function input_events_get_elements(elm, tag_name, class_name)
	{
	var arr_elem = new Array();
	if (tag_name == "*" && document.all)
		{arr_elem = document.all;}
	else
		{arr_elem = elm.getElementsByTagName(tag_name);}
	
	var arr_output = new Array();
	class_name = class_name.replace(/\-/g, "\\-");
	
	var oRegExp = new RegExp("(^|\\s)" + class_name + "(\\s|$)");
	
	var new_elm;
	for (var i = 0;i < arr_elem.length;i++)
		{new_elm = arr_elem[i];
		if(oRegExp.test(new_elm.className))
			{arr_output.push(new_elm);}
		}
	return arr_output;
	}

function input_events_msg_control(input_id,error_class,msg,do_open,msg_state)
	{
	var inp_obj = document.forms[0][input_id];
	
	//find msg object
	var parent_div = inp_obj.parentNode.parentNode;
	var msg_obj = input_events_get_elements(parent_div, 'div', "msg");
	
	var output_txt = "";
	if (do_open) 
		{if (msg_state == 'error' && error_class)
			{inp_obj.className = error_class;}
		
		output_txt = msg;
		}
	if (msg_obj[0]) {msg_obj[0].innerHTML = output_txt;}
	}
