fix in holiday list
diff --git a/hr/doctype/holiday_list/holiday_list.py b/hr/doctype/holiday_list/holiday_list.py
index 43f9916..e5504fa 100644
--- a/hr/doctype/holiday_list/holiday_list.py
+++ b/hr/doctype/holiday_list/holiday_list.py
@@ -8,11 +8,11 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 from __future__ import unicode_literals
 import webnotes
@@ -26,101 +26,64 @@
 sql = webnotes.conn.sql
 
 import datetime
-	
-
 
 class DocType:
-  def __init__(self,doc,doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
+	def __init__(self,doc,doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
 
-  # ---------
-  # autoname
-  # ---------
-  def autoname(self):
-    self.doc.name = make_autoname(self.doc.fiscal_year +"/"+ self.doc.holiday_list_name+"/.###")
+	def autoname(self):
+		self.doc.name = make_autoname(self.doc.fiscal_year +"/"+ self.doc.holiday_list_name+"/.###")
+		
+	def validate(self):
+		self.update_default_holiday_list()
+	
+	def get_weekly_off_dates(self):
+		self.validate_values()
+		yr_start_date, yr_end_date = self.get_fy_start_end_dates()
+		date_list = self.get_weekly_off_date_list(yr_start_date, yr_end_date)
+		for d in date_list:
+			ch = addchild(self.doc, 'holiday_list_details', 'Holiday', self.doclist)
+			ch.description = self.doc.weekly_off
+			ch.holiday_date = d
 
+	def validate_values(self):
+		if not self.doc.fiscal_year:
+			msgprint("Please select Fiscal Year")
+			raise Exception
+		if not self.doc.weekly_off:
+			msgprint("Please select weekly off day")
+			raise Exception
 
-# *************************************************** utilities ***********************************************
-  # ----------------
-  # validate values
-  # ----------------
-  def validate_values(self):
-    if not self.doc.fiscal_year:
-      msgprint("Please select Fiscal Year")
-      raise Exception
-    if not self.doc.weekly_off:
-      msgprint("Please select weekly off day")
-      raise Exception
+	def get_fy_start_end_dates(self):
+		return webnotes.conn.sql("""select year_start_date, 
+			subdate(adddate(year_start_date, interval 1 year), interval 1 day) 
+				as year_end_date
+			from `tabFiscal Year`
+			where name=%s""", (self.doc.fiscal_year,))[0]
 
+	def get_weekly_off_date_list(self, year_start_date, year_end_date):
+		from webnotes.utils import getdate
+		year_start_date, year_end_date = getdate(year_start_date), getdate(year_end_date)
+		
+		from dateutil import relativedelta
+		from datetime import timedelta
+		import calendar
+		
+		date_list = []
+		weekday = getattr(calendar, (self.doc.weekly_off).upper())
+		reference_date = year_start_date + relativedelta.relativedelta(weekday=weekday)
+			
+		while reference_date <= year_end_date:
+			date_list.append(reference_date)
+			reference_date += timedelta(days=7)
+		
+		return date_list
+	
+	def clear_table(self):
+		self.doclist = self.doc.clear_table(self.doclist, 'holiday_list_details')
 
-  # ------------------------------------
-  # get fiscal year start and end dates
-  # ------------------------------------
-  def get_fy_start_end_dates(self):
-    st_date = sql("select year_start_date from `tabFiscal Year` where name = '%s'" %(self.doc.fiscal_year))
-    st_date = st_date and st_date[0][0].strftime('%Y-%m-%d') or ''
-    ed_date = add_days(add_years(st_date,1), -1)
-    return st_date, ed_date
+	def update_default_holiday_list(self):
+		webnotes.conn.sql("""update `tabHoliday List` set is_default = 0 
+			where ifnull(is_default, 0) = 1 and fiscal_year = %s""", (self.doc.fiscal_year,))
 
-  # -------------------------
-  # get weekly off date list
-  # -------------------------
-  def get_weekly_off_date_list(self, yr_start_date, yr_end_date):
-    days_dict, dt_list, lst_st = {'Monday':0,'Tuesday':1,'Wednesday':2,'Thursday':3,'Friday':4,'Saturday':5,'Sunday':6}, [], ''
-
-    w = cint(days_dict[self.doc.weekly_off])    # Weekly Off Day No.
-
-    st_dt_weekday = getdate(yr_start_date).weekday()    # Year Start Date weekday()
-
-    if w == st_dt_weekday:     # Get Start Date
-      lst_st = yr_start_date
-      dt_list.append(lst_st)
-    elif w > st_dt_weekday:
-      lst_st = add_days(yr_start_date,w - st_dt_weekday)
-      dt_list.append(lst_st)
-    else:
-      lst_st = add_days(yr_start_date,6 - st_dt_weekday + 1)
-      dt_list.append(lst_st)
-
-    while getdate(lst_st) < getdate(yr_end_date):    # Get list of dates
-      lst_st = add_days(lst_st,7)
-      if getdate(lst_st) > getdate(yr_end_date):
-        break
-      dt_list.append(lst_st)
-
-    return dt_list
-
-  # ---------------------
-  # get weekly off dates
-  # ---------------------
-  def get_weekly_off_dates(self):
-    self.validate_values()
-    yr_start_date, yr_end_date = self.get_fy_start_end_dates()
-    date_list = self.get_weekly_off_date_list(yr_start_date, yr_end_date)
-    for d in date_list:
-      ch = addchild(self.doc, 'holiday_list_details', 'Holiday', self.doclist)
-      ch.description = self.doc.weekly_off
-      ch.holiday_date = d
-
-  # ------------
-  # clear table
-  # ------------
-  def clear_table(self):
-    self.doclist = self.doc.clear_table(self.doclist,'holiday_list_details')
-
-
-# ***************************************** validate *************************************************
-
-  # ---------------------------
-  # check default holiday list
-  # ---------------------------
-  def update_default_holiday_list(self):
-    sql("update `tabHoliday List` set is_default = 0 where ifnull(is_default, 0) = 1 and fiscal_year = '%s'" % (self.doc.fiscal_year))
-
-
-  # ---------
-  # validate
-  # ---------
-  def validate(self):
-    self.update_default_holiday_list()