// validate over cake plugin

(function($) {

	$.mp = $.mp || {};
		
    // menu initialization
	$.fn.validateOverCake = function(options) {

		options=$.extend({allowEmpty:false},options);
		
		$.mp.validate.attach(this,options);
	};	
	
	$.mp.validate={};

	$.mp.validate.json={};

	
	$.mp.validate.attach=function(el,options){
		el.blur(function(){
			// input=$(this);
			var method='ajax'+$(this).attr('rel');
			var value =this.value;
			var title=$(this).attr('title');

			var	match=this.name.match(/\[(.+)\]\[(.+)\]/);
			if (match) {
				var modelName=match[1];
				var field=match[2];				
				var action=modelName.toLowerCase()+'s'; //this is an ugly hacky inflector, but it gotta work for this;
			}else{
				return;
			}
			
			jsonUrl=TrendGal.Util.url('/'+action+'/'+method+'/'+modelName+'.'+field+':'+value);
				
			el=this;	
						
			$.getJSON(jsonUrl,function(json){$.mp.validate.check(el,field,json,options,title)});

		});
	}
	
	$.mp.validate.check=function(el,field,json,options,title){

		var sclass='success';
		if (!json.unique) sclass='error';
		
		var id='msg'+el.id;
		
		var msgDiv=$('#'+id);
		
		if (msgDiv){
			msgDiv.remove();
		}
		
		if (!title) {title=field};
		
		var html = "<div id='"+id+"'class='msg_"+sclass+"'>"+json.msg.replace("{field}",title)+"</div>";
		$(el.parentNode).append(html);
	}
	

	

	
})(jQuery);
