/* /\* -*- mode: c; tab-width: 2; c-tab-always-indent: t; c-basic-offset: 2; comment-column: 0 -*- *\/ */
if (typeof Yuku != 'object')
  throw 'Required objects missing';

/*
$j(function(){
	var $signin = $j('li.ka-sign-in a');

	if (!$signin.length)
		return;

	var boxselector = $j('li.ka-sign-in a').attr('href');
	boxselector = boxselector.slice(boxselector.indexOf('#'));

	function hide(){
		$j(boxselector).removeClass('ka-visible');
		$j(document).unbind('click', hide);
	}

	function show(){
		$j(boxselector).addClass('ka-visible').find('input[name=username]').focus();
		$j(document).bind('click', hide);
	}

	function toggle(){
		if ($j(boxselector).hasClass('ka-visible'))
			hide();
		else
			show();
	}

	$signin.click(function(){
		toggle();
		return false;
	});

	$j(boxselector).find('#ka-login').click(function(e) {
		e.stopPropagation();
		var $t = $j(e.target);
		if ($t.hasClass('ka-close'))
			hide();
	}).append($j('<a class="ka-close">close</a>'));

	$signin = null;
});
*/

yut.inputCheckifier = function(url, handlers) {
	var timeout = 250;

	function show_status_for_el($el, status, is_error){
		var $p = $el.parents('.ka-field');
		$p.find('span.ka-error-notice').remove();
		var $span = $p.find('span.ka-status');
		if (!$span.length)
			$span = $j('<span style="display:none" class="ka-status"></span>').appendTo($p).fadeIn();
		$span[0].innerHTML = status;
		$p.toggleClass('ka-error', is_error);
	};

	function show_success_status_for_el($el, msg){
		show_status_for_el($el, '<span class="ka-success-notice">'+msg+'</span>', false);
	};

	function show_error_status_for_el($el, msg){
		show_status_for_el($el, '<span class="ka-error-notice">'+msg+'</span>', true);
	};


	return function ($el, extra_keys) {
		var has_errors;
		var TID = null;
		function check_value(value){
			return function(){
				$j.post(url+handlers.encodeData(value), function(retval){
					handlers.updateStatus(retval, show_success_status, show_error_status);
				});
					TID = null;
			}
		};

		function show_success_status(msg){
			if (has_errors === false)
				return;
			has_errors = false;
			show_success_status_for_el($el, msg);
		};

		function show_error_status(msg){
			if (has_errors === true)
				return;
			has_errors = true;
			show_error_status_for_el($el, msg);
		};
		var allowed_keys = ['Tab', 'Backspace', 'Delete', 'Left', 'Right', 'Up', 'Down'];
		if (extra_keys)
			allowed_keys.push.apply(allowed_keys, extra_keys);
		$el.keypress(function(e){
			return e.isAlphaNumericKey() || e.isAnyKeyPressed.apply(e, allowed_keys);
		});
		$el.keyup(function(e){
			if (e.isKeyPressed('Tab'))
				return;
			if (TID !== null)
				clearTimeout(TID);
			var val = e.target.value;
			if (/^\s*$/.test(val))
				show_error_status('Field cannot be blank');
			else
				TID = setTimeout(check_value(val), timeout);
		});
		if ($j.trim($el.attr('value')).length)
			$el.trigger('keyup');
		return function(){return (has_errors === undefined) || has_errors;}
	}
};

yut.domainNameCheckifier = yut.inputCheckifier('/domain/available', {
	encodeData: function(value) {
		return '?name='+encodeURIComponent(value);
	},
	updateStatus: function(value, show_success_msg, show_error_msg) {
		var value = eval('('+value+')');
		if ('success' in value)
			show_success_msg(value.success);
		else if ('errors' in value)
			show_error_msg(value.errors);
	}
});

yut.userNameCheckifier = yut.inputCheckifier('/identity/check/', {
	encodeData: function(value) {
		return 'name/'+encodeURIComponent(value);
	},
	updateStatus: function(doc, show_success_msg, show_error_msg) {
		var $er = $j(doc).find("error");
		if ($er.length == 0)
			show_success_msg('Available');
		else
			show_error_msg('Unavailable');
	}
});

$j(function(){
		if ($j('body').attr('id') == 'ka-login-page-profile'){
			var $img = $j('img.ka-photo-border');
			$img.load(function(){
				 if ($img.height() < 250){
					 $img.next().insertBefore($img);
				 }
			});
		}
});
