	function addCalendars(){
		
		var obj=getCn('calendar');
		var calendars=new Array();
		
		for(var i=0;i<obj.length;i++){
			var cal=new calendarObject();
			cal.obj=obj[i];
			calendars[i]=cal;
			cal.initCalendar();
		}
		
		for(var i=0;i<calendars.length;i++){
			calendars[i].friends=calendars;
		}
	}
	
	function calendarObject(){
	
		this.timestamp=0*1000;
		
		this.initCalendar=function(id){
	
			this.target=getTn('INPUT',this.obj)[0];
			this.target.obj=this;
			this.target.onclick=function(){this.obj.showHide();}
			this.target.className='dateInput';
			this.target.readOnly=true;
			this.target.blur();
			this.show=0;
			this.createContainer();
		}
		
		this.createContainer=function(){
			
			var container=document.createElement('DIV');
			this.container=container;
			container.className='months';
			container.style.position='absolute';
			container.style.visibility='hidden';
			
			var calhead=document.createElement('DIV');
			this.calhead=calhead;
			calhead.className='monthDisplay';
			calhead.style.position='relative';
			calhead.style.marginBottom='10px';
					
			var calbody=document.createElement('DIV');
			this.calbody=calbody;
			calbody.style.position='relative';
			calbody.className='calendarMonth';
			
			var display=document.createElement('DIV');
			this.display=display;
			display.style.position='relative';
			display.style.textAlign='center';
			
			var prev=document.createElement('A');
			this.prev=prev;
			prev.className='prevMonth';
			prev.href='javascript:void(0)';
			prev.style.position='absolute';
			prev.style.top='0px';
			prev.style.left='0px';
			prev.innerHTML='&laquo;';
			prev.obj=this;
			prev.onclick=function(){this.obj.stepPrev()}
			
			var next=document.createElement('A');
			this.next=next;
			next.className='nextMonth';
			next.href='javascript:void(0)';
			next.style.position='absolute';
			next.style.top='0px';
			next.style.right='0px';
			next.innerHTML='&raquo;';
			next.obj=this;
			next.onclick=function(){this.obj.stepNext()}
			
			this.obj.appendChild(container);
			container.appendChild(calhead);
			container.appendChild(calbody);
			calhead.appendChild(display);
			container.appendChild(prev);
			container.appendChild(next);
			
			this.createMonth();	
		}
		
		
		this.createMonth=function(t){
		
			this.date=new Date(); this.calbody.innerHTML='';
			
			if(typeof(t)=='undefined'){
				if(this.timestamp!=0) this.date.setTime(this.timestamp);
			}
			else{
				this.date.setTime(t);
			}
			this.currentMonth=this.date.getMonth();
			
			this.display.innerHTML=this.date.getFullYear()+' /  '+(this.date.getMonth()+1);
			
			var cnt=0; do{
				cnt++;
				this.currentDay=new Date();
				var cD=this.currentDay; var cal=this.calbody; var date=this.date;
				
				cD.setMonth(this.currentMonth);
				cD.setDate(cnt);
				
				if(cnt==1 && cD.getDay()!=0) for(var i=0;i<cD.getDay()-1;i++){
						var day=document.createElement('A');
						day.className='spacer';
						cal.appendChild(day); 
					}
				
				if(cnt==1 && cD.getDay()==0) for(var i=0;i<6;i++){
						var day=document.createElement('A');
						day.className='spacer';
						cal.appendChild(day) 
					}
				
				if(cD.getDay()==1 && cnt!=1){
						var week=document.createElement('BR');
						cal.appendChild(week);
					}
			
				
				if(cD.getDate()!=date.getDate()){
						var day=document.createElement('A');
						day.href='javascript:void(0)';
						day.obj=this;
						day.className='day';
						day.innerHTML=cD.getDate();
						day.onclick=function(){this.obj.insertDate(this.innerHTML)}
						cal.appendChild(day); 
					}
				else{
						var day=document.createElement('A');
						day.href='javascript:void(0)';
						day.obj=this;
						day.className='today';
						day.innerHTML=cD.getDate();
						day.onclick=function(){this.obj.insertDate(this.innerHTML)}
						cal.appendChild(day); 
					}
	
			}while(cD.setDate(cD.getDate()+1), cD.getMonth()==this.currentMonth);			
			
			var week=document.createElement('BR'); cal.appendChild(week);
			
			this.containerPosition();
		}
	
	
		this.containerPosition=function(){
			
			var tC=this.container; var tG=this.target; var tB=this.calbody;

			tC.style.top=tG.offsetHeight+'px';
			
			if(tC.offsetWidth<tG.offsetWidth){
				tC.style.width=tG.offsetWidth-2+'px';
				tC.style.left='0px';
			}
			else{
				tC.style.left=((tG.offsetWidth-tC.offsetWidth)/2)+'px';
			}
			
			var weekend=getTn('A',getCn('calendarMonth')[0])[6];
			var tBw=weekend.offsetLeft+weekend.offsetWidth;
			
			tB.style.left=(tG.offsetWidth-tBw)/2+'px';
		}
	

		this.stepPrev=function(){
				
			this.date.setMonth(this.date.getMonth()-1);
			this.date.setDate(1);
			this.createMonth(this.date.getTime());
		}
		
		
		this.stepNext=function(){
		
			this.date.setMonth(this.date.getMonth()+1);
			this.date.setDate(1);
			this.createMonth(this.date.getTime());
		}
		
		
		this.insertDate=function(d){
		
			this.target.value=this.date.getFullYear()+'-'+(this.date.getMonth()+1)+'-'+d;
			this.showHide();
		}
		
		
		this.showHide=function(){
		
			switch(this.show){
			
				case 1:	this.container.style.visibility='hidden'; 
						this.container.parentNode.style.zIndex='1'; 
						this.container.parentNode.parentNode.style.zIndex='1'; 
						this.show=0;
						break;

				case 0: var objs=this.friends;
						for(var i=0;i<objs.length;i++){
							if(objs[i].container!=this.container){
								objs[i].show=0;
								objs[i].container.style.visibility='hidden';
								objs[i].container.parentNode.style.zIndex='1';
								objs[i].container.parentNode.parentNode.style.zIndex='1';
							}
						}
						this.container.style.visibility='visible'; 
						this.container.parentNode.style.zIndex='1000'; 
						this.container.parentNode.parentNode.style.zIndex='1000'; 
						this.show=1; 
						break;
			}	
		}
	}
	
	
	
	window.onload=function(){
	
		addCalendars();
	}
	
	function getId(trg){
		return document.getElementById(trg);
	}
	
	function getTn(name_,parent_){
		if(typeof(parent_)=='undefined') parent_=document;
		return parent_.getElementsByTagName(name_);
	}
	
	function getCn(name_,parent_){
		if(typeof(parent_)=='undefined') parent_=document;
		var ndsArray=new Array();
		var nds=parent_.getElementsByTagName('*');
		var cnt=0;
		for(var i=0;i<nds.length;i++){
			if(nds[i].className==name_){
				ndsArray[cnt]=nds[i];
				cnt++;
			}
		}
		return ndsArray;
	}