def getSuitableSlotDuration(task,flag):
	global globalFreeSlots	
	for freeSlot in globalFreeSlots:
		maxPredEndDay = getMaxPredEndDay(task)
		
		if task.duration<=freeSlot.slotDuration and freeSlot.start > maxPredEndDay:
			if(not flag and (task.startDay < freeSlot.start or task.endDay> freeSlot.end)):
				continue
			task.resourceOnTask = freeSlot.resourceOnSlot
			if flag == True:	
				task.startDay = freeSlot.start
				task.endDay = task.startDay + task.duration-1
				adjustSuccessors(task) 
			if task.startDay - freeSlot.start>0:	
				remFreeSlot1 = Slot(freeSlot.start, task.startDay-1)
				remFreeSlot1.resourceOnSlot = freeSlot.resourceOnSlot
				globalFreeSlots.append(remFreeSlot1)
				#remFreeSlot1.resourceOnSlot.freeSlots.remove(freeSlot)
				remFreeSlot1.resourceOnSlot.freeSlots.append(remFreeSlot1)
							
			if freeSlot.end - task.endDay>0:	
				remFreeSlot2 = Slot(task.endDay+1, freeSlot.end)
				remFreeSlot2.resourceOnSlot = freeSlot.resourceOnSlot
				globalFreeSlots.append(remFreeSlot2)
				#remFreeSlot2.resourceOnSlot.freeSlots.remove(freeSlot)
				remFreeSlot2.resourceOnSlot.freeSlots.append(remFreeSlot2)
						
			freeSlot.resourceOnSlot.freeSlots.remove(freeSlot)
			globalFreeSlots.remove(freeSlot) 
			updateFreeSlots()			
			globalFreeSlots.sort(key = lambda x:(x.start,x.slotDuration),reverse = False)
			
			return		
	return
	def __init__(self, resId, resName): # take the dura
		self.name = resName
		self.id	= resId
		freeSlot = Slot()
		freeSlot.resourceOnSlot = self
		self.freeSlots=[]
		self.freeSlots.append(freeSlot)