var mod_m2_small_calendar = new Class({
	
	Implements: [Events, Options],
	
	options: {
		targetDiv:'',		
	},
	
	curr_day:0,
	curr_month:0,
	curr_year:0,
	
	getParameter:function (queryString,parameterName) {
   
	   alert(queryString+' '+parameterName);
	   
	   var parameterName = parameterName + "=";
	   
	   var queryString2="dsadadasd";	   
	   
	   alert(queryString2.length);
	   
	   if ( queryString.length > 0 ) {	     
	      alert('radi');
		  begin = queryString.indexOf(parameterName);	     
	      alert(begin);
		  if ( begin != -1 ) {	         
	         begin += parameterName.length;	         
	         end = queryString.indexOf ( "&" , begin );
			      if ( end == -1 ) {
			         end = queryString.length
			      }	

			alert(begin+' '+end);				
			 return unescape ( queryString.substring ( begin, end ) );
		  }	   
	   return "null";
	   }
	},
	
	get_day_of_week:function (day,month,year,calendar_system) {     
		 
		 if (month < 3)
		 {
			   month = month + 12;
			   year = year - 1;
		 }
		 return (
				 day
				 + (2 * month)
				 + Math.floor(6 * (month + 1) / 10)
				 + year
				 + Math.floor(year / 4)
				 - Math.floor(year / 100)
				 + Math.floor(year / 400)
				 + calendar_system
				) % 7;
	},	
		
	get_day_labels:function(day) {	
		var labels = ['N','P','U','S','C','P','S'];					
		return labels[day];		
	},
		
	get_month_labels:function(month) {			
		var labels = ["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"];			
		return labels[month-1];			
	},		
		
	get_days_in_month:function(month,year) {	
		var num_days = [31,29,31,30,31,30,31,31,30,31,30,31];			
		return num_days[month-1];
	},
	
	create_divs:function() {
			
			var nav_prev=new Element('div',{class:'nav_prev'});			
			nav_prev.set('html','<<');
			nav_prev.injectInside(this.options.targetDiv);				
			
			var year_month_label=new Element('div',{class:'year_month_label'});			
			year_month_label.set('html','MONTH');
			year_month_label.injectInside(this.options.targetDiv);	
			
			var nav_next=new Element('div',{class:'nav_next'});
			nav_next.set('html','>>');
			nav_next.injectInside(this.options.targetDiv);	
			
			var week_days_labels=new Element('div',{class:'week_days_labels'});			
			week_days_labels.injectInside(this.options.targetDiv);
						
			var days=new Element('div',{class:'days'});			
			days.injectInside(this.options.targetDiv);		
			
	},
		
	select_day:function(day) {			
		
		var link='?option=com_content&view=archive';
		link=link+'&year='+this.curr_year;
		link=link+'&month='+this.curr_month;
		link=link+'&day='+day;
		link=link+'&Itemid='+this.getParameter(window.location,'Itemid');
		window.location=link;
	},	
		
	create_calendar:function(day,month,year) {			
		
		var first_day=this.get_day_of_week(1,month,year,1);
		var total_days=this.get_days_in_month(month,year);	
				
		/////////////////////// MONTH YEAR LABEL ///////////////////////////
		
		$(this.options.targetDiv).getElement('.year_month_label').set('html',this.get_month_labels(month)+' '+year);		
		
		////////////////////////// DAY LABELS ///////////////////////////////
		
		$(this.options.targetDiv).getElement('.week_days_labels').empty();
		$(this.options.targetDiv).getElement('.days').empty();
		
		for (i=0;i<=6;i++) {
			
			var curr_box=new Element('div',{class:'weekday_label_box'});
			
			curr_box.set('html', this.get_day_labels(i));
			
			if (i==0) {					
				curr_box.setStyle('clear', 'left');					
			}
			
			curr_box.injectInside($(this.options.targetDiv).getElement('.week_days_labels'));			
		}
				
		///////////// CALENDAR ITEMS //////////////
		
		for (i=1;i<=38;i++) {
			
			var curr_box=new Element('div',{class:'day_box'});
			var curr_box_a=new Element('a',{class:'day_box_a'});
				
				if ((i>first_day) && (i<=first_day+total_days)) { 
					curr_box_a.set('html', i-first_day);
					curr_box_a.injectInside(curr_box);													
					curr_box.addEvent('click', this.select_day.bind(this,i-first_day));
				} else {
					curr_box.set('html', '&nbsp;');	
				}
				
				if ((i-1)%7==0) {					
					curr_box.setStyle('clear', 'left');					
				} 
			
			curr_box.injectInside($(this.options.targetDiv).getElement('.days'));			
		}
		
	},	
	
	prev_month:function() {	
		this.curr_month--;
		if (this.curr_month==0) {this.curr_month=12;this.curr_year--;}		
		this.create_calendar(this.curr_day,this.curr_month,this.curr_year);		
	},
		
	next_month:function() {	
		this.curr_month++;
		if (this.curr_month==13) {this.curr_month=1;this.curr_year++;}		
		this.create_calendar(this.curr_day,this.curr_month,this.curr_year);		
	},
		
	initialize: function(options) {
		
		this.setOptions(options);
		
		this.create_divs();
				
		today = new Date();
        day_today = today.getDate();
        month_today = today.getMonth();
        year_today = today.getFullYear();
				
		this.curr_day=day_today;
		this.curr_month=month_today+1;
		this.curr_year=year_today;		
		
		this.create_calendar(this.curr_day,this.curr_month,this.curr_year);		
		
		$(this.options.targetDiv).getElement('.nav_prev').addEvent('click', this.prev_month.bind(this));
		$(this.options.targetDiv).getElement('.nav_next').addEvent('click', this.next_month.bind(this));	
	}	
});
