var dvcal={
	day:1,
	month :0,
	year:0,
	curdiv:0,
	links:{},
	basepath:'',
	cal_type:'',
	
show:function(div) {
	var day_of_week = new Array('SU','MO','TU','WE','TH','FR','SA');
	var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

	var Calendar = new Date();

	Calendar.setDate(1);    // Start the calendar day at '1'
	Calendar.setMonth(dvcal.month);    // Start the calendar month at now
	Calendar.setFullYear(dvcal.year);    // Start the calendar month at now
	
	var year = Calendar.getFullYear();	    // Returns year
	var month = Calendar.getMonth();    // Returns month (0-11)
	var today = Calendar.getDate();    // Returns day (1-31)
	var weekday = Calendar.getDay();    // Returns day (1-31)

	var DAYS_OF_WEEK = 7;    // "constant" for number of days in a week
	var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
	var cal;    // Used for printin

	var TR_start = '<TR>';
	var TR_end = '</TR>';
	var highlight_start = '<TD><b>';
	var highlight_end   = '</B>';
	var TD_start = '<TD><CENTER>';
	var TD_end = '</CENTER></TD>';

	var cd=new Date();
	//alert(dvcal.day +"\n"+ month +"\n"+ dvcal.month +"\n"+ year +"\n"+ dvcal.year);	
	var next=(cd.getMonth()+cd.getFullYear()*12>dvcal.month+dvcal.year*12?"<a href=# onclick=dvcal.nextmonth()><span>&raquo;</span></a>":"<span>&raquo;</span></a>");
	cal =  "<TABLE CELLSPACING=0 CELLPADDING=0 style='width:284px; border:0px solid black;' id='calendar'>";
	cal+='<thead><tr><td class="calendarfl" rowspan=10 nowrap style="padding-top:30px; width:145px" nowrap><p><a href=# onclick=dvcal.prevmonth() style="color:green"><span style="color:green">&laquo;</span></a> '+month_of_year[month]+" "+(year)+" "+next+'</p></td>';
	cal+="<TD style='padding-top:30px;'>";
	cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 style="width:70px"><tr>' ;
	
	for(index=0; index < DAYS_OF_WEEK; index++)
	{
		if(index == 0||index == 6)	cal += "<td class=we>" + day_of_week[index] + '</td>';
		else 	cal += TD_start + day_of_week[index] + TD_end;
	}
	cal += "</tr>";
	cal += "</thead><tbody>"+TR_start;

	for(index=0; index < Calendar.getDay(); index++)
	cal += TD_start + '  ' + TD_end;

	for(index=0; index < DAYS_OF_MONTH; index++)
	{
		if( Calendar.getDate() > index )
		{
		  week_day =Calendar.getDay();
		  if(week_day == 0)  cal += TR_start;
		  if(week_day != DAYS_OF_WEEK)
		  {
			  var day  = Calendar.getDate();
			  if (week_day==0||week_day==6) {cal += "<td class='we";
			if (day==dvcal.day && month==dvcal.month && year==dvcal.year) cal+=" nowday";
			 cal+="' id=dtv_"+day+"><span>" + day + "</span></td>"} else {
			  cal += "<td id=dtv_"+day;
			if (day==dvcal.day && month==dvcal.month && year==dvcal.year) cal+=" class='nowday'";
			cal+="><span>" + day + "</span></td>"}
		  }

		  if(week_day == DAYS_OF_WEEK)
		  cal += TR_end;
		  }
		  Calendar.setDate(Calendar.getDate()+1);
	}
	cal += '</TD></TR></tbody></TABLE></TABLE>';

	var layer=div?div:dvcal.curdiv;
	document.getElementById(layer).innerHTML=cal;
	dvcal.curdiv=layer;
		
		var i;
		var cm;
		if (cm=dvcal.links[dvcal.year]) {cm=cm[dvcal.month+1]}		
		var obj;
		if (cm) {
			for (i in cm) {
				if (obj=document.getElementById('dtv_'+i)) {
					var rmonth=dvcal.month+1; if (rmonth<10) {rmonth="0"+rmonth}
					var rday=i;  if (rday<10) {rday='0'+rday}
					if (dvcal.cal_type=='blog'){obj.innerHTML = "<a href=/" + dvcal.basepath+ "/" + (dvcal.year)+"-"+(rmonth)+"-"+rday+".html>"+i+"</a>"}
					else if (dvcal.cal_type=='russia_now') {obj.innerHTML="<a href="+dvcal.basepath+"/"+(dvcal.year)+"-"+(rmonth)+"-"+rday+".html>"+i+"</a>"}
					else {obj.innerHTML="<a href="+dvcal.basepath+"/"+(dvcal.year)+"-"+(rmonth)+"-"+rday+"/"+cm[i]+".html>"+i+"</a>"}
				}
			} 
		}
		
	dvcal.ifnext();
},



	nextmonth: function() {
		var cd=new Date();
		if (cd.getMonth()+cd.getFullYear()*12>dvcal.month+dvcal.year*12){
			if(dvcal.month==11){dvcal.year++;dvcal.month=0} else {dvcal.month++};
			dvcal.show()
		}
		dvcal.ifnext();
	},

	prevmonth: function() {
		if(dvcal.month==0) {dvcal.year--;dvcal.month=11} else {dvcal.month--};
		dvcal.show();
		dvcal.ifnext();
	},

	setmonth: function(m,y) {
		if(m){dvcal.month=m}
		if(y){dvcal.year=y}
	},
	
	ifnext:function() {},
	
	initLinks:function(hash) {
		dvcal.links=hash;
		if (dvcal.cal_type=='blog' || dvcal.cal_type=='russia_now') {
			var reg=/(\d+)-(\d+)-(\d+).html$/;
			if (reg.test(document.location.href)) { dvcal.setmonth(RegExp.$2-1,RegExp.$1)}
			else {dvcal.setLastMonth()}
		}
		if (dvcal.cal_type=='program') {
			var reg=/^(.*\/Programmes\/[\w_]+)/; reg.exec(document.location.href);
			dvcal.basepath=RegExp.$1;
			reg=/^.*\/Programmes\/[\w_]+\/(\d+)-(\d+)-(\d+)/;
			if (reg.test(document.location.href)) { dvcal.setmonth(RegExp.$2-1,RegExp.$1)}
			else {dvcal.setLastMonth()}
		}
	},
	
	setLastMonth:function() {
			var km;
			for (var ty=2009;ty>2006;ty--) {
				for (var tm=12;tm>0;tm--) {  if (dvcal.links[ty]) {if (dvcal.links[ty][tm]) {km=tm;break} }}
				if (km) {break};
			}
			dvcal.setmonth(km-1,ty);
	}
}


;



