(function()
{
	var $E = YAHOO.util.Event,
		$D = YAHOO.util.Dom,

		checkEmail = function(email)
		{
			var s = email.replace( new RegExp('/\(.*?\)/'), '' ),
				re = /^[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*@[A-Za-z0-9][-\w]*(\.[A-Za-z0-9][-\w]*)*\.[a-zA-Z]{2,4}$/;
			return re.test(s);
		},

		makeElementRequired = function(el, mode)
		{
			$D.setStyle(el, 'background-color', '');
			if( mode ) $D.addClass(el, 'required'); else $D.removeClass(el, 'required');
		}

		nameKeyup = function(e)
		{
			var el = $E.getTarget(e);
			makeElementRequired(el, (el.value == '' || el.value.indexOf(' ') == -1));
		},

		messageKeyup = function(e)
		{
			var el = $E.getTarget(e);
			makeElementRequired(el, (el.value == ''));
		},

		emailKeyup = function(e)
		{
			var el = $E.getTarget(e);
			makeElementRequired(el, (el.value == ''));
		},

		captchaKeyup = function(e)
		{
			var el = $E.getTarget(e);
			makeElementRequired(el, (el.value.length < 6));
		},

		isRequiredField = function(el)
		{
			return ( $D.hasClass(el, 'required') )
		},

		formSubmit = function(e)
		{
			var requiredArr = $D.getElementsBy(isRequiredField, null, 'f'), el;

			if( requiredArr.length > 0 )
			{
				el = requiredArr[0];
				el.focus();

				var c = $D.getStyle(el, 'background-color'),
					anim1 = new YAHOO.util.ColorAnim(el, {backgroundColor:{to:'#F5880D'}}, .1),
					anim2 = new YAHOO.util.ColorAnim(el, {backgroundColor:{to:c}});

				anim1.onComplete.subscribe(function(){anim2.animate()});
				anim1.animate();
			}
			else
			{
				$D.get('f').submit();
				$E.removeListener('input-submit', 'click', formSubmit);
			}
		};

	$E.onDOMReady(function()
	{
		$E.on('input-captcha', 'keyup', captchaKeyup);
		$E.on('input-message', 'keyup', messageKeyup);

		$E.on('input-email', 'keyup', emailKeyup);
		$E.on('input-name', 'keyup', nameKeyup);

		$E.on('f', 'submit', formSubmit);
		$E.on('input-submit', 'click', formSubmit);

		var f = function(e)
		{
			var charsLimit = 1000,
				el = $E.getTarget(e),
				indicatorEl = $D.get('opinion-indicator').firstChild,
				pos = Math.floor(412 * el.value.length / charsLimit);

			$D.setStyle(indicatorEl, 'left', pos + 'px');
			if( pos > 412 ) el.value = el.value.substr(0, charsLimit);
		}

		$E.on('opinion', 'keydown', f);
		$E.on('opinion', 'keyup', f);
		$E.on('opinion', 'change', f);


		if( $D.get('image-captcha') )
		{
			$D.get('image-captcha').src = $D.get('image-captcha').src + '?' + Math.random();
		}

	});

})();
