function field_def_obj()
			 {
			    this.name = null;
					this.required = null;
					this.type = null;
					this.min_value = null;
					this.max_value = null;
					this.format = null;
				  this.validate = validate; 
				  this.validate_form = validate_form; 
				  this.calculate_formula = calculate_formula;
				  this.formula = null; 
				  this.pom_formula = null;				  
			}
			 function error_alert(obj, field_def_array, type, error_type)
			 {
			    var param = 0;
			    var message='';
			    switch(type)
			    {
			    	 case('number'):
			    	   switch(error_type)
			    	   {
			    	   		case('1'):
			    	   			message = "Внесете цел број!";
			    	   			break;
			    	   		case('2'):
			    	   			message = "Внесете број помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
			    	        break;
			    	      case('3'):
			    	      	message = "Внесениот број треба да биде поголем од "+field_def_array.min_value+"!";
			    	      	break;
			    	      case('4'):
			    	        message = "Внесениот број треба да биде помал од "+field_def_array.max_value+"!";
			    	        break;
			    	   }
				 	  	 break;
				 	  case('string'):
				 	  	switch(error_type)
			    	  {
			    	  	  case('1'):
			    	   			message = "Должината на стрингот мора да биде помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+" карактери!";
			    	   			break;
			    	   		case('2'):
			    	   			message = "Минималната должина на стрингот мора да биде "+field_def_array.min_value+" карактери!";
			    	        break;
			    	      case('3'):
			    	      	message = "Максималната должина на стрингот мора да биде "+field_def_array.max_value+" карактери!";
			    	      	break;
			    	  }
				 	  	break;
				 	  case('float'):
				 	  	switch(error_type)
			    	  {
			    	  	 case('1'):
			    	  	  message = "Не валиден формат!";
			    	  	 	break;
			    	  	 case('2'):
			    	  	  message = "Внесете број помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
			    	  	 	break;
			    	  	 case('3'):
			    	  	  message = "Внесениот број треба да биде поголем од "+field_def_array.min_value+"!";
			    	  	 	break;			    	  	 
			    	  	 case('4'):
			    	  	  message = "Внесениот број треба да биде помал од "+field_def_array.max_value+"!";
			    	  	 	break;
			    	  }
				 	  	break;
				 	  case('date'):
				 	    switch(error_type)
			    	  {
			    	  	case('1'):
			    	  	  message = "Треба да внесете датум во следниов формат : yyyy-mm-dd!";
			    	  		break;
			    	    case('2'):
			    	  	  message = "Внесете датум помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
			    	  		break;
			    	  	case('3'):
			    	  	  message = "Внесениот датум треба да биде поголем од "+field_def_array.min_value+"!";
			    	  		break;
			    	  	case('4'):
			    	  	  message = "Внесениот датум треба да биде помал од "+field_def_array.max_value+"!";
			    	  		break;
			    	  	case('5'):
			    	  	  message = "Внесете валидна вредност за месецот!";
			    	  		break;
			    	  	case('6'):
			    	  	  message = "Внесете валидна вредност за деновите!";
			    	  		break;
			    	  }
				 	  	break;
				 	 case('time'):
				 	    switch(error_type)
				 	    {
				 	    	 case('1'):
				 	    	  message = "Внесениот формат е невалиден!";
				 	    	 	break;
				 	    	 case('2'):
				 	    	  message = "Внесете час помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
				 	    	 	break;
				 	    	case('3'):
				 	    	  message = "Внесениот час треба да биде поголем од "+field_def_array.min_value+"!";
				 	    	 	break;
				 	    	case('4'):
				 	    	  message = "Внесениот час треба да биде помал од "+field_def_array.max_value+"!";
				 	    	 	break;
				 	    	case('5'):
				 	    	  message = "Минутите мора да бидат помеѓу 0 и 59!";
				 	    		break;
				 	    	case('6'):
				 	    	  message = "Секундите мора да бидат помеѓу 0 и 59!";
				 	    		break;
				 	    	case('7'):
				 	    	  message = "Часот мора да биде помеѓу 1 и 12!";
				 	    		break; 	
				 	    	case('8'):
				 	    	  message = "Внесeте го следниот формат: hh:mm!";
				 	    		break;
				 	    	case('9'):
				 	    		message = "Часот мора да биде помеѓу 0 и 24!";
				 	    		break;
				 	    }
				 	 		break;
				 	 case('datetime'):
				 	 		switch(error_type)
				 	 		{
				 	 			case('1'):
				 	 				message = "Внесовте невалиден формат!";
				 	 				break;
				 	 			case('2'):
				 	 				if(field_def_array.max_value)
				 	 					message = "Внесете датум помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
		 	  					else
		 	  					  message = "Внесениот датум треба да биде поголем од "+field_def_array.min_value+"!";
				 	 				break;
				 	 			case('3'):
				 	 				if(field_def_array.min_value)
				 	 				   message = "Внесете датум помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
		 	  					else
		 	  					   message = "Внесете датум помал од "+field_def_array.max_value+"!";
				 	 				break;
				 	 			case('4'):
				 	 				message = "Внесете датум помеѓу "+field_def_array.min_value+" и "+field_def_array.max_value+"!";
				 	 				break;
				 	 			case('5'):
				 	 				message = "Внесениот датум треба да биде поголем од "+field_def_array.min_value+"!";
				 	 				break;
				 	 			case('6'):
				 	 			  message = "Внесениот датум треба да биде помал од "+field_def_array.max_value+"!";
				 	 				break;
				 	 		}
				 	 		break;
				 	
			    }
			    if(message)
			    {
			    	 alert(message);
			    	 obj.focus();
				 		 obj.select();
				 		 param++;
			    }
			
			    return param;
			 }
			 function LeapYear(intYear) 
			 {
					if (intYear % 100 == 0) 
					{
						if (intYear % 400 == 0) 
						{ 
							return true; 
						}
					}
					else 
					{
						if ((intYear % 4) == 0) 
						{ 
							return true; 
						}
					}
					return false;
			}
			function check_date(obj,intMonth,intday)
			{
			      var err_number='';
						if(intMonth>12 || intMonth<1) 
						  err_number = '5';
						if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) 
							err_number = '6';
						if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) 
						  err_number = '6';
						if (intMonth == 2) 
						{
								if (intday < 1) 
								  err_number = '6';
								if (LeapYear(intYear) == true) 
								{
									if (intday > 29) 
									  err_number = '6';
								}
								else 
								{
									if (intday > 28) 
									  err_number = '6';
								}
						}
						return err_number;
			}
			 function check_time(obj, intHour, intMin, intSec, format)
			 {	
			 	 var err_number = '';
			   if(format==1)
			   {
						if (intHour > 24) 
						    err_number = '9';
						if (intMin > 59) 
						  err_number='5';
						if (intSec != null && (intSec > 59)) 
						  err_number='6';
				}
				if(format==0)
				{
					  if (intHour > 12 || intHour==0) 
					    err_number='7';
						if (intMin > 59) 
						  err_number='5';
						if (intSec != null && (intSec > 59)) 
						  err_number='6';	
				}
				  return err_number;
			 }
			 
			 function validate(obj)
			 {
			      if(obj.value)
			      {
			      	 var param = 0;
					     for (i=0; i<field_def_array.length; i++)
					     {
					     		if(field_def_array[i].name == obj.id)
					     		{
						     			 switch(field_def_array[i].type)
								 	     {
								 	      case "string":
								 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
								 	      {
								 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
								 	        {
									 	  			if(obj.value.length<parseInt(field_def_array[i].min_value) || obj.value.length>parseInt(field_def_array[i].max_value))
									 	  			{
									             param = error_alert(obj, field_def_array[i], 'string', '1');
									          }
									        }
								 	  			else
								 	  			{
								 	  				if(field_def_array[i].min_value)
								 	  					if(obj.value.length<parseInt(field_def_array[i].min_value))
								 	  						 param = error_alert(obj, field_def_array[i], 'string', '2');
								 	  				if(field_def_array[i].max_value)
								 	  					if(obj.value.length>parseInt(field_def_array[i].max_value))	
								 	  						param = error_alert(obj, field_def_array[i], 'string', '3');
								 	  			}
								 	  		}
								 	  		break;	
								 	  		case "number":
								 	  			var regexp = new RegExp("^([-])?[0-9]+$");
								 	  			if(!regexp.test(obj.value))
								 	  			{
								 	  				param = error_alert(obj, field_def_array[i], 'number', '1');
								 	  			}
								 	  			else
								 	  			{
										 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
										 	      {
										 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
										 	        {
											 	  			if(parseInt(obj.value)<parseInt(field_def_array[i].min_value) || parseInt(obj.value)>parseInt(field_def_array[i].max_value))
											          {
											          		param = error_alert(obj, field_def_array[i], 'number', '2');
											          }
											        }
										 	  			else
										 	  			{
										 	  				if(field_def_array[i].min_value)
										 	  					if(parseInt(obj.value)<parseInt(field_def_array[i].min_value))
										 	  						 param = error_alert(obj, field_def_array[i], 'number', '3');
										 	  				if(field_def_array[i].max_value)
										 	  					if(parseInt(obj.value)>parseInt(field_def_array[i].max_value))	
										 	  						param = error_alert(obj, field_def_array[i], 'number', '4');
										 	  			}
										 	  		}
								 	  			}
								 	  			if(param==0)
								 	  				 calculate_formula(obj);
								 	  			break;	
								 	  		case "float":
								 	  		  var regexp = new RegExp("^([-])?[0-9]+" + "("+"["+field_def_array[i].format+"]"+"[0-9]+)?$");
								 	  			if(!regexp.test(obj.value))
								 	  			{
								 	  				param = error_alert(obj, field_def_array[i], 'float', '1');
								 	  			}
								 	  			else
								 	  			{
										 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
										 	      {
										 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
										 	        {
											 	  			if(parseFloat(obj.value)<parseFloat(field_def_array[i].min_value) || parseFloat(obj.value)>parseFloat(field_def_array[i].max_value))
											             param = error_alert(obj, field_def_array[i], 'float', '2');
											        }
										 	  			else
										 	  			{
										 	  				if(field_def_array[i].min_value)
										 	  					if(parseFloat(obj.value)<parseFloat(field_def_array[i].min_value))
										 	  						 param = error_alert(obj, field_def_array[i], 'float', '3');
										 	  				if(field_def_array[i].max_value)
										 	  					if(parseFloat(obj.value)>parseFloat(field_def_array[i].max_value))	
										 	  						param = error_alert(obj, field_def_array[i], 'float', '4');
										 	  			}
										 	  		}
								 	  			}
								 	  			if(param==0)
								 	  				 calculate_formula(obj);
								 	  			break;	
								 	  		case "date":
								 	  		  var regexp = new RegExp("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}$");
								 	  			if(!regexp.test(obj.value))
								 	  			{
								 	  			  param = error_alert(obj, field_def_array[i], 'date', '1');
								 	  			}
								 	  			else
								 	  			{
								 	  			  intYear = parseInt(obj.value.substr(0,4),10);
									 	  			intMonth = parseInt(obj.value.substr(5,2),10);
									 	  			intday = parseInt(obj.value.substr(8,2),10);
									 	  			err_number = check_date(obj,intMonth,intday);
								 	  			  if(!err_number)
								 	  			  {
												 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
												 	      {
												 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
												 	        {
													 	  			if(obj.value<field_def_array[i].min_value || obj.value>field_def_array[i].max_value)
													             param = error_alert(obj, field_def_array[i], 'date', '2');
													        }
												 	  			else
												 	  			{
												 	  				if(field_def_array[i].min_value)
												 	  					if(obj.value<field_def_array[i].min_value)
												 	  						 param = error_alert(obj, field_def_array[i], 'date', '3');
												 	  				if(field_def_array[i].max_value)
												 	  					if(obj.value>field_def_array[i].max_value)	
												 	  						param = error_alert(obj, field_def_array[i], 'date', '4');
												 	  			}
												 	  		}
										 	  	   }
										 	  	   else
										 	  	   		param = error_alert(obj, field_def_array[i], 'date', err_number);
								 	  			}
								 	  			break;	
								 	  			case "time":
								 	  				switch(field_def_array[i].format)
								 	  			  {
								 	  			  	case('0'):
								 	  			  		var regexp = new RegExp("^[0-9]{2}(:)[0-9]{2}(:[0-9]{2})?(([ ])?(AM|PM|am|pm))$");
											 	  			if(!regexp.test(obj.value))
											 	  			{
											 	  			   param = error_alert(obj, field_def_array[i], 'time', '1');
											 	  			}
											 	  			else
											 	  			{
											 	  			  intMin = parseInt(obj.value.substr(3,2),10);
											 	  			  if(obj.value.substr(5,1)==":")
			                        			intSec = parseInt(obj.value.substr(6,2),10);
			                        		else 
			                        			intSec=null;
			                        		intHour_arg = parseInt(obj.value.substr(0,2),10);
											 	  			  err_number = check_time(obj, intHour_arg, intMin, intSec, 0);
											 	  			  if(!err_number)
											 	  			  {
															 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
															 	      {
															 	        if(field_def_array[i].min_value)
															 	        {
																 	          if(field_def_array[i].min_value.indexOf('am')!=-1 || field_def_array[i].min_value.indexOf('AM')!=-1)
														 	  			      {
														 	  			      	intHour_min = parseInt(field_def_array[i].min_value.substr(0,2),10);
														 	  			      	intMin_min = parseInt(field_def_array[i].min_value.substr(3,2),10);
														 	  			      	if(field_def_array[i].min_value.substr(5,1)==":")
								                        				intSec_min = parseInt(field_def_array[i].min_value.substr(6,2),10);
								                        		  else 
								                        			 intSec_min=null;
														 	  			      }	
														 	  			      else
														 	  			      {
														 	  			      	if(field_def_array[i].min_value.indexOf('pm')!=-1 || field_def_array[i].min_value.indexOf('PM')!=-1)
														 	  			      	{
														 	  			      		intHour_min = parseInt(field_def_array[i].min_value.substr(0,2),10)+12;
														 	  			      		intMin_min = parseInt(field_def_array[i].min_value.substr(3,2),10);
															 	  			      	if(field_def_array[i].min_value.substr(5,1)==":")
									                        				intSec_min = parseInt(field_def_array[i].min_value.substr(6,2),10);
									                        		  else 
									                        			 intSec_min=null;
														 	  			      	}
														                }
														                if(intSec_min==null)
														 	  			      	hour_min = (intHour_min*3600)+(intMin_min*60);
														 	  			      else 
														 	  			      	hour_min = (intHour_min*3600)+(intMin_min*60)+intSec_min;
														 	  			    }
														 	  			    if(field_def_array[i].max_value)
															 	          {
															 	  			      if(field_def_array[i].max_value.indexOf('am')!=-1 || field_def_array[i].max_value.indexOf('AM')!=-1)
															 	  			      {
															 	  			      	intHour_max = parseInt(field_def_array[i].max_value.substr(0,2),10);
															 	  			      	intMin_max = parseInt(field_def_array[i].max_value.substr(3,2),10);
															 	  			      	if(field_def_array[i].max_value.substr(5,1)==":")
									                        				intSec_max = parseInt(field_def_array[i].max_value.substr(6,2),10);
									                        		  else 
									                        			 intSec_max=null;
															 	  			      }
															 	  			      else
															 	  			      {
															 	  			      	if(field_def_array[i].max_value.indexOf('pm')!=-1 || field_def_array[i].max_value.indexOf('PM')!=-1)
															 	  			      	{
															 	  			      		intHour_max = parseInt(field_def_array[i].max_value.substr(0,2),10)+12;
															 	  			      		intMin_max = parseInt(field_def_array[i].max_value.substr(3,2),10);
																 	  			      	if(field_def_array[i].max_value.substr(5,1)==":")
										                        				intSec_max = parseInt(field_def_array[i].max_value.substr(6,2),10);
										                        		  else 
										                        			 intSec_max=null;
															 	  			      	}
															 	  			      }
															 	  			      if(intSec_max==null)
															 	  			      	hour_max = (intHour_max*3600)+(intMin_max*60);
															 	  			      else 
															 	  			      	hour_max = (intHour_max*3600)+(intMin_max*60)+intSec_max;
													 	  			      }
													 	  			      if(obj.value.indexOf('am')!=-1 || obj.value.indexOf('AM')!=-1)
													 	  			      	intHour = parseInt(obj.value.substr(0,2),10);
													 	  			      else
													 	  			      	if(obj.value.indexOf('pm')!=-1 || obj.value.indexOf('PM')!=-1)
													 	  			      		intHour = parseInt(obj.value.substr(0,2),10)+12;
													 	  			      if(intSec==null)
													 	  			      	hour = (intHour*3600)+(intMin*60);
													 	  			      else 
													 	  			      	hour = (intHour*3600)+(intMin*60)+intSec;
															 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
															 	        {
																 	  			if(hour<hour_min || hour>hour_max)
																             param = error_alert(obj, field_def_array[i], 'time', '2');
																        }
															 	  			else
															 	  			{
															 	  				if(field_def_array[i].min_value)
															 	  					if(hour<hour_min)
															 	  						 param = error_alert(obj, field_def_array[i], 'time', '3');
															 	  				if(field_def_array[i].max_value)
															 	  					if(hour>hour_max)	
															 	  						param = error_alert(obj, field_def_array[i], 'time', '4');
															 	  			}
															 	  		}
											 	  			 }
											 	  			 else
											 	  			 		param = error_alert(obj, field_def_array[i], 'time', err_number);
											 	  		}
											 	  		break;
											 	  		case('1'):
											 	  			var regexp = new RegExp("^[0-9]{2}(:)[0-9]{2}(:[0-9]{2})?$");
											 	  			if(!regexp.test(obj.value))
											 	  			{
											 	  			  param = error_alert(obj, field_def_array[i], 'time', '8');
											 	  			}
											 	  			else
											 	  			{
											 	  			  intHour = parseInt(obj.value.substr(0,2),10);
											 	  			  intMin = parseInt(obj.value.substr(3,2),10);
											 	  			  if(obj.value.substr(5,1)==":")
			                        			intSec = parseInt(obj.value.substr(6,2),10);
			                        		else 
			                        			intSec=null;
			                        		if(intSec==null)
											 	  			      hour = (intHour*3600)+(intMin*60);
									 	  			      else 
									 	  			      	  hour = (intHour*3600)+(intMin*60)+intSec;
									 	  			      err_number = check_time(obj,intHour,intMin,intSec,1);
									 	  			      if(!err_number)
									 	  			      {
													 	  				if(field_def_array[i].min_value || field_def_array[i].max_value)
															 	      {
															 	        if(field_def_array[i].min_value)
															 	        {
																 	        	intHour_min = parseInt(field_def_array[i].min_value.substr(0,2),10);
													 	  			      	intMin_min = parseInt(field_def_array[i].min_value.substr(3,2),10);
													 	  			      	if(field_def_array[i].min_value.substr(5,1)==":")
							                        				intSec_min = parseInt(field_def_array[i].min_value.substr(6,2),10);
							                        		  else 
							                        			 intSec_min=null;
							                        			if(intSec_min==null)
														 	  			      	hour_min = (intHour_min*3600)+(intMin_min*60);
														 	  			      else 
														 	  			      	hour_min = (intHour_min*3600)+(intMin_min*60)+intSec_min;
															 	        }
															 	        if(field_def_array[i].max_value)
															 	        {
																 	        	intHour_max = parseInt(field_def_array[i].max_value.substr(0,2),10);
													 	  			      	intMin_max = parseInt(field_def_array[i].max_value.substr(3,2),10);
													 	  			      	if(field_def_array[i].max_value.substr(5,1)==":")
							                        			intSec_max = parseInt(field_def_array[i].max_value.substr(6,2),10);
							                        		  else 
							                        			 intSec_max=null;
							                        			if(intSec_max==null)
															 	  			       hour_max = (intHour_max*3600)+(intMin_max*60);
														 	  			      else 
														 	  			      	 hour_max = (intHour_max*3600)+(intMin_max*60)+intSec_max;
															 	        }
															 	      	if(field_def_array[i].min_value && field_def_array[i].max_value)
														 	  			  {	
														 	  			  	if(hour<hour_min || hour>hour_max)
													            			 param = error_alert(obj, field_def_array[i], 'time', '2');
														 	  			  }
														 	  			  else
															 	  			{
															 	  				if(field_def_array[i].min_value)
															 	  					if(hour<hour_min)
															 	  						 param = error_alert(obj, field_def_array[i], 'time', '3');
															 	  				if(field_def_array[i].max_value)
															 	  					if(hour>hour_max)	
															 	  						param = error_alert(obj, field_def_array[i], 'time', '4');
															 	  			}
															 	      }
													 	      }
													 	      else
													 	      	param = error_alert(obj, field_def_array[i], 'time', err_number);	
											 	  		}
											 	  	}
									 	  			break;
									 	  		  case "datetime":
									 	  		  	switch(field_def_array[i].format)
									 	  		  	{
									 	  		  		case("0"):
									 	  		  			var regexp = new RegExp("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}([ ])[0-9]{2}(:)[0-9]{2}(:[0-9]{2})?(([ ])?(AM|PM|am|pm))$");
												 	  			if(!regexp.test(obj.value))
												 	  			{
												 	  			  param = error_alert(obj, field_def_array[i], 'datetime', '1	');	
												 	  			}
												 	  			else
												 	  			{
												 	  				intYear = parseInt(obj.value.substr(0,4),10);
												 	  				intMonth = parseInt(obj.value.substr(5,2), 10);
												 	  				intday = parseInt(obj.value.substr(8,2), 10);
												 	  				var err;
											 	  				  intMin = parseInt(obj.value.substr(14,2),10);
												 	  			  if(obj.value.substr(16,1)==":")
				                        			intSec = parseInt(obj.value.substr(17,2),10);
				                        		else 
				                        			intSec=null;
				                        		intHour_arg = parseInt(obj.value.substr(11,2),10);
				                        		if(obj.value.indexOf('am')!=-1 || obj.value.indexOf('AM')!=-1)
													 	  			     intHour = parseInt(obj.value.substr(11,2),10);
													 	  			 else
													 	  			     if(obj.value.indexOf('pm')!=-1 || obj.value.indexOf('PM')!=-1)
													 	  			       intHour = parseInt(obj.value.substr(11,2),10)+12;
													 	  			       
													 	  			err_number1 = check_date(obj,intMonth,intday);
													 	  			err_number2 = check_time(obj,intHour_arg,intMin,intSec, 0);
													 	  			if(!err_number1 && !err_number2)
													 	  			{
																 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
																 	      {
																 	        date = obj.value.substr(0,10);
																 	        if(field_def_array[i].min_value)
																 	        	date_min = field_def_array[i].min_value.substr(0,10);
																 	        else
																 	        	date_min="";
																 	        if(field_def_array[i].max_value)
																 	        	date_max = field_def_array[i].max_value.substr(0,10);
																 	        else
																 	        	date_max="";
																 	        
													 	  			      if(intSec==null)
													 	  			      	hour = (intHour*3600)+(intMin*60);
													 	  			      else 
													 	  			      	hour = (intHour*3600)+(intMin*60)+intSec;
													 	  			      	
													 	  			      if(date_min)
													 	  			      {
																	 	        if(date == date_min)
																	 	        {
																	 	        	    if(field_def_array[i].min_value.indexOf('am')!=-1 || field_def_array[i].min_value.indexOf('AM')!=-1)
																	 	  			      {
																	 	  			      	intHour_min = parseInt(field_def_array[i].min_value.substr(11,2),10);
																	 	  			      	intMin_min = parseInt(field_def_array[i].min_value.substr(14,2),10);
																	 	  			      	if(field_def_array[i].min_value.substr(16,1)==":")
											                        				intSec_min = parseInt(field_def_array[i].min_value.substr(17,2),10);
											                        		  else 
											                        			 intSec_min=null;
																	 	  			      }	
																	 	  			      else
																	 	  			      {
																	 	  			      	if(field_def_array[i].min_value.indexOf('pm')!=-1 || field_def_array[i].min_value.indexOf('PM')!=-1)
																	 	  			      	{
																	 	  			      		intHour_min = parseInt(field_def_array[i].min_value.substr(11,2),10)+12;
																	 	  			      		intMin_min = parseInt(field_def_array[i].min_value.substr(14,2),10);
																		 	  			      	if(field_def_array[i].min_value.substr(16,1)==":")
												                        				intSec_min = parseInt(field_def_array[i].min_value.substr(17,2),10);
												                        		  else 
												                        			 intSec_min=null;
																	 	  			      	}
																	                }
																	              if(intSec_min==null)
															 	  			      		hour_min = (intHour_min*3600)+(intMin_min*60);
																 	  			      else 
																 	  			      	hour_min = (intHour_min*3600)+(intMin_min*60)+intSec_min;
																 	  			      if(hour<hour_min)
																 	  			      	param = error_alert(obj, field_def_array[i], 'datetime', '2');	
																	 	        }
																 	        }
																 	        if(date_max)
																 	        {
																		 	        if(date == date_max)
																		 	        {
																		 	        	  if(field_def_array[i].max_value.indexOf('am')!=-1 || field_def_array[i].max_value.indexOf('AM')!=-1)
																	 	  			      {
																	 	  			      	intHour_max = parseInt(field_def_array[i].max_value.substr(11,2),10);
																	 	  			      	intMin_max = parseInt(field_def_array[i].max_value.substr(14,2),10);
																	 	  			      	if(field_def_array[i].max_value.substr(16,1)==":")
											                        				intSec_max = parseInt(field_def_array[i].max_value.substr(17,2),10);
											                        		  else 
											                        			 intSec_max=null;
																	 	  			      }
																	 	  			      else
																	 	  			      {
																	 	  			      	if(field_def_array[i].max_value.indexOf('pm')!=-1 || field_def_array[i].max_value.indexOf('PM')!=-1)
																	 	  			      	{
																	 	  			      		intHour_max = parseInt(field_def_array[i].max_value.substr(11,2),10)+12;
																	 	  			      		intMin_max = parseInt(field_def_array[i].max_value.substr(14,2),10);
																		 	  			      	if(field_def_array[i].max_value.substr(16,1)==":")
												                        				intSec_max = parseInt(field_def_array[i].max_value.substr(17,2),10);
												                        		  else 
												                        			 intSec_max=null;
																	 	  			      	}
																	 	  			      }
																	 	  			      if(intSec_max==null)
																	 	  			      	hour_max = (intHour_max*3600)+(intMin_max*60);
																	 	  			      else 
																	 	  			      	hour_max = (intHour_max*3600)+(intMin_max*60)+intSec_max;
																	 	  			      if(hour>hour_max)
																	 	  			      	param = error_alert(obj, field_def_array[i], 'datetime', '3');	
																		 	        }
																 	        }
																 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
																 	        {
																	 	  			if(date<date_min || date>date_max)
																	             param = error_alert(obj, field_def_array[i], 'datetime', '4');	
																	        }
																 	  			else
																 	  			{
																 	  				if(field_def_array[i].min_value)
																 	  					if(date<date_min)
																 	  						 param = error_alert(obj, field_def_array[i], 'datetime', '5');	
																 	  				if(field_def_array[i].max_value)
																 	  					if(date>date_max)	
																 	  						param = error_alert(obj, field_def_array[i], 'datetime', '6');	
																 	  			}
																 	  		}
														 	  	 }
														 	  	 else
														 	  	 {
														 	  	   if(err_number1)
														 	  	 		 param = error_alert(obj, field_def_array[i], 'date', err_number1);
														 	  	 	 if(err_number2)
														 	  	 	 	 param = error_alert(obj, field_def_array[i], 'time', err_number2);	
														 	  	 }
												 	  			}
												 	  			break;
												 	  			case("1"):
												 	  				var regexp = new RegExp("^[0-9]{4}[-]{1}[0-9]{2}[-]{1}[0-9]{2}([ ])[0-9]{2}(:)[0-9]{2}(:[0-9]{2})?$");
													 	  			if(!regexp.test(obj.value))
													 	  			{
														 	  				param = error_alert(obj, field_def_array[i], 'datetime', '1');	
													 	  			}
													 	  			else
													 	  			{
													 	  				  
													 	  				  intHour = parseInt(obj.value.substr(11,2),10);
													 	  				  intMin = parseInt(obj.value.substr(14,2),10);
														 	  			  if(obj.value.substr(16,1)==":")
														 	  			  {
						                        			intSec = parseInt(obj.value.substr(17,2),10);
						                        			hour = (intHour*3600)+(intMin*60)+intSec;
						                        		}
						                        		else 
						                        		{
						                        			intSec=null;
													 	  			      hour = (intHour*3600)+(intMin*60);
													 	  			    }
											 	  			        intYear = parseInt(obj.value.substr(0,4),10);
														 	  				intMonth = parseInt(obj.value.substr(5,2), 10);
														 	  				intday = parseInt(obj.value.substr(8,2), 10);
														 	  				
														 	  				err_number1 = check_date(obj,intMonth,intday);
													 	  			    err_number2 = check_time(obj,intHour, intMin, intSec,1);
																				if(!err_number1 && !err_number2)
																				{
																		 	      if(field_def_array[i].min_value || field_def_array[i].max_value)
																		 	      {
																		 	        date = obj.value.substr(0,10);
																		 	        if(field_def_array[i].min_value)
																		 	        	date_min = field_def_array[i].min_value.substr(0,10);
																		 	        else
																		 	        	date_min="";
																		 	        if(field_def_array[i].max_value)
																		 	        	date_max = field_def_array[i].max_value.substr(0,10);
																		 	        else
																		 	        	date_max="";
														
															 	  			      if(date_min)
															 	  			      {
																			 	        if(date == date_min)
																			 	        {
																			 	        	    
																			 	  			      	intHour_min = parseInt(field_def_array[i].min_value.substr(11,2),10);
																			 	  			      	intMin_min = parseInt(field_def_array[i].min_value.substr(14,2),10);
																			 	  			      	if(field_def_array[i].min_value.substr(16,1)==":")
																			 	  			      	{
													                        				intSec_min = parseInt(field_def_array[i].min_value.substr(17,2),10);
													                        		    hour_min = (intHour_min*3600)+(intMin_min*60)+intSec_min;
													                        		  }
													                        		  else 
													                        		  {
													                        			  intSec_min=null;
													                        			  hour_min = (intHour_min*3600)+(intMin_min*60);
																			                  }
																				 	  			      if(hour<hour_min)
																				 	  			      	param = error_alert(obj, field_def_array[i], 'datetime', '2');	
																			 	        }
																		 	        }
																		 	        if(date_max)
																		 	        {
																				 	        if(date == date_max)
																				 	        {
																		 	  			      	intHour_max = parseInt(field_def_array[i].max_value.substr(11,2),10);
																		 	  			      	intMin_max = parseInt(field_def_array[i].max_value.substr(14,2),10);
																		 	  			      	if(field_def_array[i].max_value.substr(16,1)==":")
																		 	  			      	{
												                        				intSec_max = parseInt(field_def_array[i].max_value.substr(17,2),10);
												                        		    hour_max = (intHour_max*3600)+(intMin_max*60)+intSec_max;
												                        		  }
												                        		  else 
												                        		  {
												                        			 	intSec_max=null;
												                        			 	hour_max = (intHour_max*3600)+(intMin_max*60);
																		 	  			        }
																		 	  			      	
																		 	  			        if(hour>hour_max)
																		 	  			      		param = error_alert(obj, field_def_array[i], 'datetime', '3');	
																				 	        }
																		 	        }
																		 	        if(field_def_array[i].min_value && field_def_array[i].max_value)
																		 	        {
																			 	  			if(date<date_min || date>date_max)
																			             param = error_alert(obj, field_def_array[i], 'datetime', '4');	
																			        }
																		 	  			else
																		 	  			{
																		 	  				if(field_def_array[i].min_value)
																		 	  					if(date<date_min)
																		 	  						 param = error_alert(obj, field_def_array[i], 'datetime', '5');	
																		 	  				if(field_def_array[i].max_value)
																		 	  					if(date>date_max)	
																		 	  						param = error_alert(obj, field_def_array[i], 'datetime', '6');	
																		 	  			}
																		 	  		}
																 	  	  }
																 	  	  else
																 	  	  {
																 	  	  		 if(err_number1)
																		 	  	 		 param = error_alert(obj, field_def_array[i], 'date', err_number1);
																		 	  	 	 if(err_number2)
																		 	  	 	 	 param = error_alert(obj, field_def_array[i], 'time', err_number2);	
																 	  	  }
													 	  		  	}
													 	  			}
												 	  			  break;
									 	  		  	}
										 	  		  
								 	     }
					     		}
					     }
					    else
					    {
					    		for (i=0; i<field_def_array.length; i++)
							    {
							     		if(field_def_array[i].name == obj.name)
							     		{
								     			 if(field_def_array[i].type == 'number' || field_def_array[i].type=='float')
										 	     		calculate_formula(obj);
										 	}
									}
					    }
					  return param;
			 }
			 
			 function calculate_formula(field)
			 {
			    value = field.value;
			    name = field.name;
			    if(value)
			    {
					 		for(i=0; i<field_def_array.length; i++)
					 	  {	
					 	  		if(field_def_array[i].formula)
					 	  		{
					 	  		    field_def_array[i].pom_formula = field_def_array[i].formula;
					 	  		    for(j=0; j<field_def_array.length; j++)
					 	  		    {
					 	  		      field_id = field_def_array[j].name;
					 	  		      if(document.getElementById(field_id).value)
					 	  		      {
					 	  		    		if(field_def_array[i].pom_formula.indexOf(field_def_array[j].name)!=-1)
					 	  		    		{
					 	  		    		    field_id = field_def_array[j].name;
							 	  		    	  value1 = document.getElementById(field_id).value;
							 	  		    		field_name = field_def_array[j].name;
							 	  		    		var re = new RegExp("(#"+field_name+")","gi");
							 	  		    		replace_name = "#"+field_name;
							 	  		    		if(re.test(replace_name))
							 	  		    		{
							 	  		        		field_def_array[i].pom_formula = field_def_array[i].pom_formula.replace(re, value1);
							 	  		        }
					 	  		        }
					 	  		      }
					 	  		    }
					 	  				if(field_def_array[i].pom_formula.indexOf("#")==-1)
					 	  				{
					 	  						field_id = field_def_array[i].name;
					 	  						document.getElementById(field_id).value = eval(field_def_array[i].pom_formula);
					 	  				}
					 	  				else
					 	  				{
					 	  					 field_id = field_def_array[i].name;
					 	  					 document.getElementById(field_id).value='';
					 	  				}
					 	  					
					 	  				
					 	  		}
					 	  }
					 }
					 else
					 {
					 		for(i=0; i<field_def_array.length; i++)
					 		{
					 				if(field_def_array[i].formula)
					 				{
					 						if(field_def_array[i].formula.indexOf(name)!=-1)
					 						{
							 						field_id = field_def_array[i].name;
							 						document.getElementById(field_id).value='';
					 					  }
					 				}
					 		}
					 }
			 }
			 function validate_form()
			 {
			 	    var pass = true;
				 		for (j=0; j<field_def_array.length; j++)
					  {
					    if(field_def_array[j].required == "required" && document.getElementById(field_def_array[j].name).value=='')
					    {
						  	pass = false;
						  	break;
					  	}
					  }
					  if(!pass)
			  		{
			  			alert("Едно или повеќе од задолжителните полиња не се внесени!");
			  			document.getElementById(field_def_array[j].name).focus();
			  			return false;
			  	  }
			  	  
			  	  else
			  		{
			  				for (j=0; j<field_def_array.length; j++)
					      {
					      	 field_name = field_def_array[j].name;
					      	 field = document.getElementById(field_name);
					      	 param = field_def_array[j].validate(field);
					      	 if(param>0)
					      	 		return false;
					      	 else
					      	 	  return true;
					      }
			  		}
			  		 
			  	   
			 }
