style = {
	'units' : 'mm',

	'width' : 1000,
	'height' : 700, 
	
	'year-color' : '#666666',
	'year-padding-top' : 50,	
	'year-font-family' : 'Consolas',
	'year-font-size' : 50,
	
	
	'month-width' : 255,
	'month-height' : 210,
	
	'day-width' : 230.0/7.0,
	'day-height' : 120.0/5.0,
	
	'month-margin-x' : 160,
	'month-margin-y' : 160,
	
	'month-font-family' : 'Consolas',
	'month-font-size' : 30,
	'month-color' : '#FF9525',
	'month-padding-top' : 10,	
	
	'month-offset-top' : 80,
	
	'week-padding-top' : 40,
	'week-font-family' : 'Consolas',
	'week-font-size' : 15,

	'day-padding-top' : 40,
	'day-font-family' : 'Consolas',
	'day-font-size' : 22,
	
	'day-color' : '#000000',
	'day-holiday-color' : '#79B1D4',
	
	'week-color' : '#999',
	'week-holiday-color' : '#79B1D4',	
}


month_names = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '0A', '0B', '0C']
days_count  = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month_beginning = [4, 7, 7, 3, 5, 1, 3, 6, 2, 4, 7, 2]

holidays = [ (1,1), (1,6), (1,7), (1,8), (1,9), (1,14), (3, 8), (3,9), (6,12), (31,12) ] 
not_holidays = [ (1,11) ] 

# days_names = ['01', '02', '03', '04', '05', '06', '07']
days_names = ['001', '010', '011', '100', '101', '110', '111']

def is_holiday (month, day, day_of_week):
	global holidays, not_holidays
	if day_of_week > 5:
		return (month, day) not in not_holidays
	return (month, day) in holidays


def day (x, y, month, day, day_of_week):
	global style
	if is_holiday (month, day,  day_of_week):
		color = style ['day-holiday-color']
	else:
		color = style ['day-color']
	print '<text x="%smm" y="%smm" font-family="\'%s\'" font-size="%smm" fill="%s" text-anchor="middle">'% (x + 0.5*style['day-width'], y, style['day-font-family'], style['day-font-size'], color)
	print '%02x' % day
	print '</text>'
	
def week (x,y):
	global style, days_names	
	print '<g>'
	for i in range (7):
		if i < 5:
			color = style['week-color']
		else:
			color = style['week-holiday-color']			
		print '<text x="%smm" y="%smm" font-family="\'%s\'" font-size="%smm" text-anchor="middle" fill="%s">'% (x + (i +0.5)* style['day-width'],y, style['week-font-family'], style['week-font-size'], color)
		print '%s' % (days_names [i])
		print '</text>'
	print '</g>'

def month (x,y, no):
	global style, month_names, month_beginning
	print '<g>'
	print '<text x="%smm" y="%smm" font-family="\'%s\'" font-size="%smm" text-anchor="middle" fill="%s">'% (x + style['month-width']/2,y+style['month-padding-top'], style['month-font-family'], style['month-font-size'], style['month-color'])
	print '%s' % (month_names [no-1])
	print '</text>'
	week (x, y+style['week-padding-top'])
	
	for i in range(days_count[no-1]):
		day_of_week = (month_beginning[no-1] + i) % 7
		if day_of_week == 0: day_of_week = 7
		xx = x + style['day-width'] * (day_of_week - 1)
		
		week_no = ((month_beginning[no-1] + i) / 7 + 1)
		if day_of_week == 7: week_no = week_no - 1
		yy = y + style['day-padding-top'] + week_no * style['day-height']
		day (xx, yy, no, i+1, day_of_week)
	
	print '</g>'
	
	
def year (x, y, no):
	global style
	print '<g>'
	print '<text x="%smm" y="%smm" font-family="\'%s\'" font-size="%smm" text-anchor="middle" fill="%s">'% (x + style['width']/2,y+style['year-padding-top'], style['year-font-family'], style['year-font-size'], style['year-color'])
	print '7D9'
	print '</text>'
	for i in range (12):
		xx = i % 4
		yy = i / 4 
		month (x+ xx*style['month-width'], y + style['month-offset-top']+ yy*style['month-height'], i+1)
	print '</g>'


print '<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'
print '<svg width="%smm" height="%smm" version="1.1" xmlns="http://www.w3.org/2000/svg"><desc>Calendar 2009</desc>' % (style['width'], style['height'])

print '<g><rect x="0" y="0" width="%smm" height="%smm" rx="2.5mm" fill="#fff" stroke="#999" storke-width="0.5mm"/></g>' % (style['width'], style['height'])

year (2, 0, 2009)

print '</svg>'
