/********************************************************************/
/********************************************************************/	
	
	function Data(dzien,miesiac,rok)
	{
		this.dzien=parseInt(dzien);
		this.miesiac=parseInt(miesiac);
  		this.rok=parseInt(rok);
	
		/**************************************************************/	
	
		function ustawDzien(dzien)
			{ this.dzien=dzien; }
		this.ustawDzien=ustawDzien;
		
		/**************************************************************/	
		
		function ustawMiesiac(miesiac)
			{ this.miesiac=miesiac; }
		this.ustawMiesiac=ustawMiesiac;
		
		/**************************************************************/	
		
		function ustawRok(rok)
			{ this.rok=rok; }
		this.ustawRok=ustawRok;
		
		/**************************************************************/	
		
		function pobierzDzien()
			{ return(this.dzien); }
		this.pobierzDzien=pobierzDzien;	

		/**************************************************************/	
		
		function pobierzMiesiac()
			{ return(this.miesiac); }
		this.pobierzMiesiac=pobierzMiesiac;		
		
		/**************************************************************/	
		
 		function pobierzRok()	
			{ return(this.rok); }
		this.pobierzRok=pobierzRok;			
	
		/**************************************************************/	
			
		function sprawdzDzien(dzien)
		{
			if((this.pobierzDzien()>=1) && (this.pobierzDzien()<=31)) return(true);
			else return(false);
		}
		this.sprawdzDzien=sprawdzDzien;
		
		/**************************************************************/	
		
		function sprawdzMiesiac(miesiac)
		{
			if((this.pobierzMiesiac()>=1) && (this.pobierzMiesiac()<=12)) return(true);
			else return(false);		
		}
		this.sprawdzMiesiac=sprawdzMiesiac;
		
		/**************************************************************/
		
		function sprawdzRok()
		{
			if((this.pobierzRok()>=1) && (this.pobierzRok()<=9999)) return(true);
			else return(false);			
		}
		this.sprawdzRok=sprawdzRok;
		
		/**************************************************************/
	
		function sprawdzDate()
		{			
			with(this)
			{
				if((sprawdzRok(pobierzRok())) && (sprawdzMiesiac(pobierzMiesiac())) && (sprawdzDzien(pobierzDzien())))
				{
					if(pobierzIloscDniWMiesiacu()>=pobierzDzien()) return(true);
					else return(false);	
				}	
				else return(false);	
			}
		}
		this.sprawdzDate=sprawdzDate;	
		
		/**************************************************************/
		
		function pobierzIloscDniWMiesiacu()
		{
			with(this)
			{			
				switch(pobierzMiesiac())
				{
					case 1 	:
					case 3 	:
					case 5 	:
					case 7 	:
					case 8 	:
					case 10 	:
					case 12	:
						return(31);
					break;
					case 2	:
						return(((pobierzRok() % 4 == 0) && ((!(pobierzRok() % 100 == 0)) || (pobierzRok() % 400 == 0))) ? 29 : 28);
					default	:
						return(30);
				}
			}
		}
		this.pobierzIloscDniWMiesiacu=pobierzIloscDniWMiesiacu;
		
		/**************************************************************/

		function pobierzNumerDniaWTygodniu()
		{
			var data=new Date(this.pobierzRok(),this.pobierzMiesiac()-1,this.pobierzDzien());
			if(data.getDay()==0) return(7);
			else return(data.getDay());
		}
		this.pobierzNumerDniaWTygodniu=pobierzNumerDniaWTygodniu;		
		
		/**************************************************************/		
		
		function dodajDzien(przyrost)
		{  		
	  		var liczba=1;
			var data=new Data(this.pobierzDzien(),this.pobierzMiesiac(),this.pobierzRok());
			var przyrost=parseInt(przyrost);		
			if(przyrost<0) liczba=-1; 
			przyrost=Math.abs(przyrost);
			while(przyrost!=0)
			{
				data.ustawDzien(data.pobierzDzien()+liczba);				
				if(!data.sprawdzDate())
				{
					data.ustawDzien(1);
					data=data.dodajMiesiac(liczba);
					if(liczba<0) data.ustawDzien(data.pobierzIloscDniWMiesiacu());
					else data.ustawDzien(1); 
				}
				przyrost=przyrost-1;
			}
			if(data.sprawdzDate()) return(data);	
		}
		this.dodajDzien=dodajDzien;
		
		/**************************************************************/
		
		function dodajMiesiac(przyrost)
		{
			var data=new Data(this.pobierzDzien(),this.pobierzMiesiac(),this.pobierzRok());
			var miesiac=parseInt(parseInt(przyrost)+this.pobierzMiesiac());
			if(miesiac>12)
			{
				data.ustawRok(this.pobierzRok()+parseInt(miesiac/12));
				data.ustawMiesiac(miesiac-12);
 			}
			else
			if(miesiac==0) 
			{
				data.ustawRok(data.pobierzRok()-1);
				data.ustawMiesiac(12);
			}
			else
			if(miesiac<0)
			{
				data.ustawRok(data.pobierzRok()-parseInt(miesiac/12));		
				data.ustawMiesiac(12-miesiac);
			}
			else data.ustawMiesiac(miesiac);				
			if(data.sprawdzDate()) 
				return(data);
		}
		this.dodajMiesiac=dodajMiesiac;
		
		/**************************************************************/
		
		function dodajRok(przyrost)
		{
	  		var data=new Data(this.pobierzDzien(),this.pobierzMiesiac(),this.pobierzRok());
			data.ustawRok(datap.pobierzRok()+parseInt(przyrost));
			if(data.sprawdzDate()) return(data);
		}
		this.dodajRok=dodajRok;	
		
		/**************************************************************/
		
		function porownaj(data2)
		{
			var data1=new Data(this.pobierzDzien(),this.pobierzMiesiac(),this.pobierzRok());
			if(data1.pobierzRok()>data2.pobierzRok())
				return(1);
			else
			if(data1.pobierzRok()<data2.pobierzRok())
				return(2);
			else
			{
				if(data1.pobierzMiesiac()>data2.pobierzMiesiac())
					return(1);
				else
				if(data1.pobierzMiesiac()<data2.pobierzMiesiac())
					return(2);
				else
				{
					if(data1.pobierzDzien()>data2.pobierzDzien())
						return(1);
					else
					if(data1.pobierzDzien()<data2.pobierzDzien())
						return(2);
					else 
						return(0);				
				}	
			}	
		}
		this.porownaj=porownaj;
				
	}

/********************************************************************/
/********************************************************************/		
