/*
 * jQuery jax validation plug-in 0.1
 *
 * Copyright (c) 2010 BBMVC
 *	--usable only with BBMVC framework
 *
 */
$ = jQuery;

$(document).ready(

		function() {
			var validate_name_url = _url_main + '/' + _file_main
					+ '?module=Frontend&action=validateName';
			var validate_email_url = _url_main + '/' + _file_main
					+ '?module=Frontend&action=validateEmail';
			var validate_phone_url = _url_main + '/' + _file_main
					+ '?module=Frontend&action=validatePhone';

			$.validator.messages.invalid	= "Te rugam sa introduci o valoare valida.";
			$.validator.messages.name	= "Te rugam sa introduci un nume valid.";
			$.validator.messages.phone	= "Te rugam sa introduci un numar de telefon valid.";

			function validationCallback(data) {
				$.each(data, function(i, val) {
					if (val.field_validation == 'VALID') {
						$('#' + val.field_id).removeClass('error');
						$('#' + val.field_id).addClass('valid ajaxValidated');
					} else {
						$('#' + val.field_id).removeClass('valid');
						$('#' + val.field_id).addClass('error ajaxValidated');
					}
				});
			}

			$.validator.addMethod("ajaxValidateName", function(value, element) {
				$.post(validate_name_url, {
					validate_fields : {
						0 : {
							field_value : $(element).val(),
							field_id : $(element).attr('id')
						}
					}
				}, function(data) {
					validationCallback(data);
				}, 'json');
				return true;
			});

			$.validator.addMethod("ajaxValidateEmail", function(value, element) {
				$.post(validate_email_url, {
					validate_fields : {
						0 : {
							field_value : $(element).val(),
							field_id : $(element).attr('id')
						}
					}
				}, function(data) {
					validationCallback(data);
				}, 'json');
				return true;
			});

			$.validator.addMethod("ajaxValidatePhone", function(value, element) {
				$.post(validate_phone_url, {
					validate_fields : {
						0 : {
							field_value : $(element).val(),
							field_id : $(element).attr('id')
						}
					}
				}, function(data) {
					validationCallback(data);
				}, 'json');
				return true;
			});

			$.validator.addMethod("ajaxValidated", function(value, element) {
				return ! $(element).is('.error');
			}, function (dummy, element){
				element_classes	= $(element).attr('class').split(' ');
				if ($.inArray('ajaxValidateName',element_classes) != -1){return $.validator.messages.name;}
				if ($.inArray('ajaxValidateEmail',element_classes) != -1){return $.validator.messages.email;}
				if ($.inArray('ajaxValidatePhone',element_classes) != -1){return $.validator.messages.phone;}
				return $.validator.messages.invalid;
			});

			$(".ajaxSubmit").live ('submit',function(){

				if (!$(this).valid()){
				  return false;
				}

				var values = $(this).serialize();

				loader_id	= $(this).attr('id')+'_loading';
				$(this).children('fieldset').html($('#'+loader_id).html());

				$.post(this.action, values, function(data) {
					success_id	= data.form_name+'_success';
			    	 $('#'+success_id+' p.succes').html(data.data);
			    	 $('#'+data.form_name+' .form_loading_content').fadeOut('fast',function (){$('#'+data.form_name).children('fieldset').html($('#'+success_id).html())});
				}, 'json');

			 return false;

			});

		});
