/*<!CDATA[*/
/**
 * Paxy Javascript UI Library (a jQuery Plugin)
 * 
 */
jQuery.fn.ajaxvalidate = function(options)
{
	var opts = jQuery.extend({}, $.fn.ajaxvalidate.defaults, options);
	this.each(function() {
		var $this = $(this);
		jQuery.fn.ajaxvalidate.bind($this, opts);
	});
}

jQuery.fn.ajaxvalidate.defaults = {
	events: ['change']
};

jQuery.fn.ajaxvalidate.bind = function($this, opts)
{
	for (var key in opts.events) {
		$this.bind(opts.events[key], function(e) {
			jQuery.fn.ajaxvalidate.execute(e);
		});
	}
}

jQuery.fn.ajaxvalidate.execute = function(e) {
	var $target = $(e.target);
	var $form = $target.closest("form");
	var url = $form.attr('action');
	
	var eleName = $target.attr('name');
	var eleValue = $target.val();
	
	var params = {
		validate: '',
		name: eleName,
		value: eleValue
	};

	jQuery.fn.ajaxvalidate.showValidating($target);
	
	jQuery.get(url, params, function(data) {
			if (data.success == 1) {
				jQuery.fn.ajaxvalidate.showValid($target);
			} else {
				jQuery.fn.ajaxvalidate.showInvalid($target);
			}
		},
		'json'
	);
}

jQuery.fn.ajaxvalidate.showValid = function(ele) {
	var $ele = $(ele);
	$ele.removeClass('invalid');
	$ele.removeClass('validating');
	$ele.addClass('valid');
}

jQuery.fn.ajaxvalidate.showInvalid = function(ele) {
	var $ele = $(ele);
	$ele.removeClass('valid');
	$ele.removeClass('validating');
	$ele.addClass('invalid');
}

jQuery.fn.ajaxvalidate.showValidating = function(ele) {
	var $ele = $(ele);
	$ele.removeClass('valid');
	$ele.removeClass('invalid');
	$ele.addClass('validating');
}

/*]]>*/