	var unknown_status 	= 'unknown';	
	var red_status 		= 'red_status';	
	var green_status 	= 'green_status';	
	var yellow_status 	= 'yellow_status';	
	var neutral_status 	= 'neutral_status';	

	function inc_quality(name) {
		var el = get(name);
		if (!el) { return;}
		set_el_quality(el, parseInt(el.getAttribute("curr_pos")) + 1);
	}
	
	function dec_quality(name) {
		var el = get(name);
		if (!el) { return;}
		set_el_quality(el, parseInt(el.getAttribute("curr_pos")) -1);
	}
	
	function set_quality(name, position) {
		var el = get(name);
		if (!el) { return;}
		set_el_quality(el, position);
	}

	//! doen't calculate status color
	function set_el_quality_position(el, position) { 
		if (position < 0) { position=0; }
		var max_pos = parseInt(el.getAttribute("max_pos"));
		var prc=0; 
		if (position > 0) {
			prc = (100 / max_pos) * position;
		}
		if (prc > 100) { prc = 100; }
		if (prc < 0) { prc = 0; }
		
		el.style.width = prc + "%";
	}
	
	function set_el_quality(el, position) {
		if (position < 0) { position=0; }
		var max_pos = parseInt(el.getAttribute("max_pos"));
		var bad_pos = parseInt(el.getAttribute("bad_max"));
		set_el_quality_position(el, position);
		

		var my_class = calc_quality_color(position ,max_pos, bad_pos);
		el.className = my_class;
		el.setAttribute("curr_pos", position);
		return my_class;
	}

	function calc_quality_color(curr_pos, good_pos, bad_pos) {
		if (bad_pos && curr_pos>=bad_pos) { return red_status; }
		if (curr_pos<=0) { return red_status; }
		var k = curr_pos/good_pos*100;
		if ( k<50 ) { return red_status; }
		if ( k>=100 ) { return green_status; }
		return yellow_status; 
	}

	
	function chk_results(name, val, res_msg) {
		var el = get(name);
		if (name == "confirm_password") {
                	confirm_passwordOnBlur(el);
			return;
		}

		if (el) { 
			var my_class;
			if ( res_msg.length>0 ) {
				 my_class = red_status; 
			} 
			else {
				my_class = green_status; 
			}
			el.className = 	my_class;

			var q_el = get(el.name + "_quality");
			if (q_el) {
				set_el_quality(q_el, el.value.length);	
				if (my_class==red_status) {
					if (q_el.className == green_status) {
						q_el.className = red_status;
					}
				}
			}

		}

		setErrorMsgByName(name, res_msg);
		
		if (name = "password") {
			var psw_conf = get("confirm_password");
			if (psw_conf) {
				if (psw_conf.value.length) {
					confirm_passwordOnBlur(psw_conf);
				}
			}
		}
	}

	function isKeyCode(val) {
		if (!val) { return false; }
		if (val == 9) { return false; }  //tab
		if (val == 16) { return false; } //shift
		return true;
	}

	function setOnKeyUp(el, my_event) {
		if (my_event) {
			if ( isKeyCode(my_event.keyCode) == false) { return; }
		}
		setErrorMsg(el);
		el.className= neutral_status;
 		set_quality(el.name + "_quality", el.value.length);
	
               
//		var q_el = get( el.name + "_quality");
//		alert( el.name );
//		var position = parseInt(q_el.getAttribute("curr_pos"))
//		var max_pos = parseInt(q_el.getAttribute("max_pos"));
//		var bad_pos = parseInt(q_el.getAttribute("bad_max"));
//		var my_class = calc_quality_color(position ,max_pos, bad_pos);
		
//		el.className = my_class;


	}


	function setStatusOnBlur(el) {
		if (el.name == "confirm_password") {
			confirm_passwordOnBlur(el);
		}
		else {
			ajaxExecute("?check=" + el.name + "&value=" + ruescape(el.value));
		}
	}

	
	function confirm_passwordOnBlur(el) {
		var psw_el = get("password");
		if (psw_el.className==green_status) {
			if (psw_el.value != el.value ) {
			  setErrorMsg(el, pass_confirm_msg);
			  el.className = red_status;
			  return;
			}
		        el.className = green_status;
		  	setErrorMsg(el, "");
		}
	}


	function setErrorMsg(el, msg) {
		setErrorMsgByName(el.name, msg);
	}

	function setErrorMsgByName(name, msg) {
		if (!msg) { msg=""; }
		var err_el = get(name + "_err");
		if (err_el) {
			err_el.innerHTML = msg;
		}
	}

$(document).ready(function() {
	var tip_s = { cluetipClass: 'rounded', splitTitle: '|', 
			showTitle: false, width: '200',  dropShadow: false, activation: 'focus',
    			positionBy: 'fixed'
		 };
	
	$('#login').cluetip( tip_s ); 
	$('#email').cluetip( tip_s ); 
	$('#name').cluetip( tip_s ); 
	$('#last_name').cluetip( tip_s ); 
	$('#password').cluetip( tip_s ); 
	$('#confirm_password').cluetip( tip_s ); 
	$('#keyword').cluetip( tip_s ); 

});

