var value_begin= new Array();

$(document).ready(function(){
	$.fn.form = function(a) {
		var form=$(this);
		var del_click_value=a.del_click_value;
		$(form).find("input,textarea").each(function(n,element){
			name=$(element).attr('name');
			val=$(element).val();
			value_begin[name]=val;
		});
		
		/*######## если есть кнопка, то проверка формы ############*/
		if (a.submit)
		{	
			$(a.submit).click(function(){
			if ($(form).test_all_form({
					a:a
				})==true) $(form).submit();
			});
		}
		
		/*######## проверка на цифры ############*/
		$(form).find("[name=phone],[name=home_phone],[name=mob_phone],[name=phone_small],[name=phone_block],[name=date]").keyup(function(){
			val=$(this).val();
			reg_ex=/[^0-9-.]/i;
			if (reg_ex.test(val))
			{
				val = val.replace(reg_ex, ''); 
				$(this).val(val);
			}
		});
		
		
		/*######## проверка на поле ############*/
		
		$(form).find("input,textarea").each(function(i,elem_e){
			value=$(elem_e).val();
			$(elem_e).click(function(){
				name=$(this).attr('name');
				if ((!value_begin[name]) || (value_begin[name]==$(this).val()))
				{
					if (del_click_value) $(this).val('');
				}
			});
			$(elem_e).blur(function(){
				th=$(this);
				setTimeout(function(){
					name=$(th).attr('name');
					val=$(th).val();
					elem=$(th);
					if (val=='')
					{
						if (del_click_value) $(th).val(value_begin[name]);
					}
						$().test_form({
							val: val,
							name: name,
							begin_name: value_begin[name],
							property:a,
							elem:elem
						});
					
				},200);
			});
		}); 
	}
	
	/*######## функция проверки всех полей ############*/
	$.fn.test_all_form = function(a){
		id=$(this)[0].id;
		yes=true;
		$("#"+id+" input,textarea").each(function(n,element){
			val=$(element).val();
			name=$(element).attr('name');
			elem=$(element);
			test=$(element).test_form({
				val: val,
				name: name,
				begin_name: value_begin[name],
				property:a.a,
				elem:elem
			});
			if (test==false) yes=false;
		});
		return yes;
	}
	
	/*######## функция проверки данного поля ############*/
	
	$.fn.test_form = function(b) {
		val=b.val;
		name=b.name;
		elem=b.elem;
		begin_name=b.begin_name;
		a=b.property;
		prop_begin=new Array('mail','mail_not','phone','phone_not','text','select_image');
		y=-1;
		while (y<(prop_begin.length-1))
		{
			y++;
			prop=prop_begin[y];
			if (a[prop])
			{
				reg=/.*,.*/;
				names_fields=a[prop];
				if (!reg.test(a[prop]))
				{
					name_field= new Array(names_fields);
				}
				else
				{
					name_field=names_fields;
				}
							
				if (name_field)
				{
					i=-1;
					while (i<(name_field.length-1))
					{
						i++;
						if (name_field[i]==name)
						{
						
						/*#################### MAIL NOT NECESSARILY ###################*/
							if (prop=='mail_not')
							{
								if ((val=='') || (val==begin_name))
								{
										$("#form_"+name+" .sign_no").hide();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").hide();
									//$(elem).css('border','1px solid #fa7878');
								}
								else
								{
									reg_ex=/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/;
									if (!reg_ex.test(val))
									{
										$("#form_"+name+" .sign_no").show();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").show();
										$("#form_"+name+" .sign_ok").hide();
										//$(elem).css('border','1px solid #fa7878');
										return false;
									}
									else
									{
										$("#form_"+name+" .sign_no").hide();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").show();
										//$(elem).css('border','1px solid #b3b3b3');
									}
								}
							}
							
							/*#################### MAIL ###################*/
							if (prop=='mail')
							{
								if ((val=='') || (val==begin_name))
								{
										$("#form_"+name+" .sign_no").show();
										$("#form_"+name+" .sign_no_message").show();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").hide();
									//$(elem).css('border','1px solid #fa7878');
									return false;
								}
								else
								{
									reg_ex=/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/;
									if (!reg_ex.test(val))
									{
										$("#form_"+name+" .sign_no").show();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").show();
										$("#form_"+name+" .sign_ok").hide();
										//$(elem).css('border','1px solid #fa7878');
										return false;
									}
									else
									{
										$("#form_"+name+" .sign_no").hide();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").show();
										//$(elem).css('border','1px solid #b3b3b3');
									}
								}
							}
							
							/*#################### PHONE NOT NECESSARILY ###################*/
							if (prop=='phone_not')
							{
								if ((val=='') || (val==begin_name))
								{
									$("#form_"+name+" .sign_no").hide();
									$("#form_"+name+" .sign_no_message").hide();
									$("#form_"+name+" .sign_no_message2").hide();
									$("#form_"+name+" .sign_ok").hide();	
									//$(elem).css('border','1px solid #fa7878');
								}
								else
								{
									reg_ex=/[0-9- \(\)]{5,9}/i;
									if (!reg_ex.test(val))
									{
										$("#form_"+name+" .sign_no").show();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").show();
										$("#form_"+name+" .sign_ok").hide();
									//	$(elem).css('border','1px solid #fa7878');
										return false;
									}
									else
									{	
										$("#form_"+name+" .sign_no").hide();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").show();

									//	$(elem).css('border','1px solid #b3b3b3');
									}
								}
							}
							
							/*#################### PHONE  ###################*/
							if (prop=='phone')
							{
								if ((val=='') || (val==begin_name))
								{
									$("#form_"+name+" .sign_no").show();
									$("#form_"+name+" .sign_no_message").show();
									$("#form_"+name+" .sign_no_message2").hide();
									$("#form_"+name+" .sign_ok").hide();	
									//$(elem).css('border','1px solid #fa7878');
									return false;
								}
								else
								{
									reg_ex=/[0-9- \(\)]{5,9}/i;
									if (!reg_ex.test(val))
									{
										$("#form_"+name+" .sign_no").show();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").show();
										$("#form_"+name+" .sign_ok").hide();
									//	$(elem).css('border','1px solid #fa7878');
										return false;
									}
									else
									{	
										$("#form_"+name+" .sign_no").hide();
										$("#form_"+name+" .sign_no_message").hide();
										$("#form_"+name+" .sign_no_message2").hide();
										$("#form_"+name+" .sign_ok").show();

									//	$(elem).css('border','1px solid #b3b3b3');
									}
								}
							}
							
							/*#################### TEXT  ###################*/
							if (prop=='text')
							{
								if ((val=='') || (val==begin_name))
								{
									$("#form_"+name+" .sign_no").show();
									$("#form_"+name+" .sign_no_message").show();
									$("#form_"+name+" .sign_ok").hide();									
									//$(elem).css('border','1px solid #fa7878');
									return false;
								}
								else
								{	
									$("#form_"+name+" .sign_no").hide();
									$("#form_"+name+" .sign_no_message").hide();
									$("#form_"+name+" .sign_ok").show();
									//$(elem).css('border','1px solid #b3b3b3');
								}
							}
							/*#################### SELECT_IMAGE  ###################*/
							if (prop=='select_image')
							{
								if ((val=='') || (val==begin_name))
								{
									//alert('form');
									$("#form_"+name+" .sign_no").show();
									$("#form_"+name+" .sign_no_message").show();
									$("#form_"+name+" .sign_ok").hide();									
									//$(elem).css('border','1px solid #fa7878');
									return false;
								}
								else
								{	
									$("#form_"+name+" .sign_no").hide();
									$("#form_"+name+" .sign_no_message").hide();
									$("#form_"+name+" .sign_ok").show();
									//$(elem).css('border','1px solid #b3b3b3');
								}
							}
						}
					}
				}
				
			}
		}
		return true;
	}
});
