var Calendar = function (Calendar_id,inner_div,from_year,from_month,to_year,to_month,period,year,month,day)
{
	this.ID = Calendar_id || 'CAL';
	this.ID_pref = this.ID+'_';
	this.inner_div = inner_div || null;
	this.from_year = from_year || null;
	this.from_month = from_month || null;
	this.to_year = to_year || null;
	this.to_month = to_month || null;
	this.nonemptydays = null;
	this.pos_id = null;
	this.pos_uid = null;
	
	if(year == null)
	{
		date = new Date();
		day = date.getDate();
		month = date.getMonth()+1;
		year = date.getFullYear();
	}
	else
	{
		cur_date = new Date(year, month, day);
		day = cur_date.getDate();
		if (month == '12')
		{
			month = 12;
			year = cur_date.getFullYear()-1;
		}
		else
		{
			month = cur_date.getMonth();
			year = cur_date.getFullYear();
		}
	}
	
	this.year = year || null;
	this.month = month || null;
	this.day = day || null;
	this.period = period || null;
}

Calendar.prototype.setvalues = function ()
{
	var year = this.year;
	var month = this.month;
	var month_year_array = this.month_year_array;
	
	for (var i=0; i<month_year_array.length;i++)
	if (month_year_array[i]['month']==month && month_year_array[i]['year']==year)
	{
		var mm = document.getElementById(this.ID_pref+'month_year_select');
		mm.value = i;
		break
	}
}

Calendar.prototype.changeyearmonth = function (i)
{
	this.year = this.month_year_array[i]['year'];
	this.month = this.month_year_array[i]['month'];
	news.states['annonce'].paramstr = 'news_date='+this.year+'.'+this.month+'.'+this.day+'&news_per='+this.period;
	news.states['annonce'].loaded = 'N';
	news.set_state('annonce');
	this.draw();
}


Calendar.prototype.set_data = function (day)
{
	this.day = day;
	news.states['annonce'].paramstr = 'news_date='+this.year+'.'+this.month+'.'+day+'&news_per='+this.period;
	news.states['annonce'].loaded = 'N';
	news.set_state('annonce');
}

Calendar.prototype.set_period = function (period)
{
	this.period = period;
	news.states['annonce'].paramstr = 'news_date='+this.year+'.'+this.month+'.'+this.day+'&news_per='+this.period;
	news.states['annonce'].loaded = 'N';
	news.set_state('annonce');
	this.draw();
}

Calendar.prototype.draw = function ()
{
	var ID = this.ID;
	var pref = this.ID_pref;
	var inner_div = this.inner_div || null;
	var from_year = this.from_year || null;
	var from_month = this.from_month || null;
	var to_year = this.to_year || null;
	var to_month = this.to_month || null;
	var year = this.year || null;
	var month = this.month || null;
	var day = this.day || null;
	var period = this.period || null;
	var nonemptydays = this.nonemptydays || null;
	months = new Array(calendar_js_january,calendar_js_february,calendar_js_march,calendar_js_april,calendar_js_may,calendar_js_june,calendar_js_july,calendar_js_august,calendar_js_september,calendar_js_october,calendar_js_november,calendar_js_december);
	days_of_week = new Array (calendar_js_mn,calendar_js_tue,calendar_js_wed,calendar_js_thu,calendar_js_fri,calendar_js_sat,calendar_js_sn);
	holidays = [[1,1],[1,2],[1,3],[1,4],[1,5],[1,7],[2,23],[3,8],[5,1],[5,9],[6,12],[11,4]];
	var background_id = 1;
	
	this_month = new Date(year, month-1, 1);
	next_month = new Date(year, month, 1);
	prev_month = month - 2;

	//Find out when this month starts and ends.
	first_week_day = this_month.getDay();
	if (first_week_day == 0) first_week_day = 6;
	else first_week_day-- ;

	days_in_this_month = Math.floor((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));
	
	if (month == 3) days_in_this_month++;
	
	calendar_html = '<table cellspacing="0" celpadding="0" border="0" class="Calendar_main_table">';

	var days_of_week_line = '';
	
	for (var i=0;i<days_of_week.length;i++)
	{
		days_of_week_line += '<td class="Calendar_days_of_week_td">'+days_of_week[i]+'</td>';
	}
	calendar_html += '<tr class="Calendar_days_of_week_tr">'+days_of_week_line+'</tr>';

	//Fill the first week of the month with the appropriate number of blanks.
	var first_empty_days_of_week = '';
	for(week_day = 0; week_day < first_week_day; week_day++)
	{
		if (week_day == first_week_day-1) var brc = 'bd_right bd_bottom';
		else var brc = 'bd_bottom';
		first_empty_days_of_week += '<td class="Calendar_fisrt_empty_days_td '+brc+'">&nbsp;</td>';
	}
	
	calendar_html += '<tr class="Calendar_days_tr">'+first_empty_days_of_week;
	
	var first_line = 0;
	cur_week_day = first_week_day;
	for (day_counter = 1; day_counter <= days_in_this_month; day_counter++)
	{
		week_day = cur_week_day % 7;
		if (week_day == 0) calendar_html += '</tr><tr class="Calendar_days_tr">';

		var is_hol = 'N';
		for (var k=0;k<holidays.length;k++)
		{
			if (holidays[k][0]==month && holidays[k][1]==day_counter)
			{
				is_hol = "Y";
				break;
			}
		}
		
		var is_exi = 'N';
		if (nonemptydays !== null)
		{
			for (var k=0;k<nonemptydays.length;k++)
			{
				if (nonemptydays[k][0]==day_counter && nonemptydays[k][1]==month && nonemptydays[k][2]==year)
				{
					is_exi = "Y";
					break;
				}
			}
		}
		//if (week_day == 5 ||week_day == 6) is_hol = "Y";
		//Do something different for the current day.
		
//		var brc = 'bd_bottom bd_right';
		var brc = '';
		
		if (day_counter+first_week_day <= 7) brc += ' bd_top';
		if (week_day == 0)
		{
			brc += ' bd_left';
			background_id = background_id+1;
		}
		
		if (day_counter > days_in_this_month - 7) brc += ' bd_bottom';
		if (day_counter == days_in_this_month) brc += ' bd_right';
		if (week_day == 6) brc += ' bd_right';
		
/*		if (day == day_counter)	calendar_html += '<td class="Calendar_current_day_td '+brc+'"><a class="Calendar_current_day_a" href="?sbu=3&news_date='+this.year+'.'+this.month+'.'+day_counter+'&news_per='+this.period+'" onclick="'+this.ID+'.set_data('+day_counter+'); return false;">'+ day_counter + '</a></td>';
		else */if (is_hol == "Y")
		{ 
			if (is_exi=="N") calendar_html += '<td class="Calendar_holyday_empty_td Calendar_background_'+background_id+' '+brc+'">' + day_counter + '</td>';
			else if (is_exi=="Y") calendar_html += '<td class="Calendar_holyday_td Calendar_background_'+background_id+' '+brc+'"><a class="Calendar_holyday_a" href="javascript:'+this.ID+'.set_data('+ day_counter +');">' + day_counter + '</a></td>';
		}
		else
		{
			if (is_exi=="N") calendar_html += '<td class="Calendar_day_empty_td Calendar_background_'+background_id+' '+brc+'">' + day_counter + '</td>';
			else if (is_exi=="Y") calendar_html += '<td class="Calendar_day_td Calendar_background_'+background_id+' '+brc+'"><a class="Calendar_day_a" href="javascript:'+this.ID+'.set_data('+ day_counter +');">' + day_counter + '</a></td>';
		} 
		
		first_line++;
		cur_week_day++;
	}

	calendar_html += '</tr>';
	
	var cur_month = from_month-1;
	var cur_year = from_year;
	var out_years_select = '';
	
	var months_count = 12*(to_year-from_year)+(to_month-from_month)+1;
	var month_year_array = new Array();
	if (months_count<121)
	{
		for (var i=0; i<months_count;i++)
		{
			cur_month++;
			if (cur_month>12)
			{
				cur_month = 1;
				cur_year++;
			}
			var sub_arr = new Array();
			
			sub_arr['month'] = cur_month;
			sub_arr['year'] = cur_year;
			month_year_array[i] = sub_arr;
			
			if (cur_month == to_month && cur_year == to_year) out_years_select += '<option class="Calendar_month_year_option" value="'+i+'" selected>'+cur_year+', '+months[cur_month-1]+'</option>';
			else out_years_select += '<option class="Calendar_month_year_option" value="'+i+'">'+cur_year+', '+months[cur_month-1]+'</option>';
		}
	}
	
	this.month_year_array = month_year_array;
	
	calendar_html += '<tr class="Calendar_month_year_tr"><td colspan="7" class="Calendar_month_year_td"><select name="'+pref+'month_year_select" class="Calendar_month_year_select" onchange="'+this.ID+'.changeyearmonth(this.value);">'+out_years_select+'</select><td></tr>';
	
	calendar_html += '<tr class="Calendar_period_tr"><td colspan="7" class="Calendar_period_td" nowrap>'+calendar_js_period+':  ';
	if (period == 'day') var cek = "checked"; else var cek = "";
	calendar_html += '<input type="radio" name="'+pref+'period" value="day" class="Calendar_period_radio" '+cek +' onclick="'+this.ID+'.set_period(this.value);"> '+calendar_js_day+'  ';
	if (period == 'month') var cek = "checked"; else var cek = "";
	calendar_html += '<input type="radio" name="'+pref+'period" value="month" class="Calendar_period_radio" '+cek +' onclick="'+this.ID+'.set_period(this.value);"> '+calendar_js_month+'  ';
	if (period == 'year') var cek = "checked"; else var cek = "";
	calendar_html += '<input type="radio" name="'+pref+'period" value="year" class="Calendar_period_radio" '+cek +' onclick="'+this.ID+'.set_period(this.value);"> '+calendar_js_year+'  ';
	calendar_html += '<td></tr>';
	calendar_html += '</table>';
	//Display the calendar.
	
	var indiv = document.getElementById(inner_div);
	indiv.innerHTML = calendar_html;
	
	this.setvalues();
}
		 
