function findDate(CurrentForm)
{
	var return_value = new Array();
	var FirstNight = "";
	var LastNight = "";
	var NumberOfNight = 0;
	
	for (var i=0;i < ratecount ;i++ )
	{
		if (CurrentForm.elements["book_"+i].checked)
		{
			if ((CurrentForm.elements["book_"+i].value < FirstNight) || FirstNight == '')
			{
				FirstNight = CurrentForm.elements["book_"+i].value;
			}
			
			if ((CurrentForm.elements["book_"+i].value > LastNight) || LastNight == '')
			{
				LastNight = CurrentForm.elements["book_"+i].value;
			}
			
			NumberOfNight++;
		}
	}
	
	return_value['FirstNight'] = FirstNight;
	return_value['LastNight'] = LastNight;
	return_value['NumberOfNight'] = NumberOfNight;
	
	return return_value;
}

function GetWeekday(sourceDate)
{
	var splitDate = sourceDate.split("-");
	var thisYear = splitDate[0] * 1;
	var thisMonth = (splitDate[1] * 1) - 1;
	var thisDay = splitDate[2] * 1;
	var d = new Date();
	d.setFullYear(thisYear, thisMonth, thisDay);

	var weekday=new Array(7);
	weekday[0]="SUN";
	weekday[1]="MON";
	weekday[2]="TUE";
	weekday[3]="WED";
	weekday[4]="THU";
	weekday[5]="FRI";
	weekday[6]="SAT";
	
	return weekday[d.getDay()];
}

function calDate(sourceDate, calValue, caseType)
{
	var splitDate = sourceDate.split("-");
	var d = new Date();
	var thisYear = splitDate[0] * 1;
	var thisMonth = (splitDate[1] * 1) - 1;
	var thisDay = splitDate[2] * 1;
	var d = new Date();

	d.setFullYear(thisYear, thisMonth, thisDay);
	d.setDate(d.getDate() + (calValue * 1));
	
	var returnYear = d.getFullYear();
	var returnMonth = d.getMonth() + 1;
	var returnDay = d.getDate();
	
	if (returnMonth < 10) { returnMonth = "0"+ returnMonth; }
	if (returnDay < 10) { returnDay = "0"+ returnDay; }
	
	return_value = returnYear +"-"+ returnMonth +"-"+ returnDay;
	
	// alert(return_value);
	
	return return_value;
}

function CheckClose(sourceDate, sourceDateNum, dateType, dateFrom, dateTo, dayNum)
{
	var return_value = 0;
	
	if (dateType == "Date")
	{
		if (sourceDate >= dateFrom && sourceDate <= dateTo)
		{
			if ((sourceDateNum >= dayNum) && dayNum > 0)
			{
				return_value = 0;
			}
			else
			{
				return_value = 1;
			}
		}
	}
	else if (dateType == "Weekday")
	{
		var weekday = GetWeekday(sourceDate);
		
		if (weekday == dateFrom)
		{
			if ((sourceDateNum >= dayNum) && dayNum > 0)
			{
				return_value = 0;
			}
			else
			{
				return_value = 1;
			}
		}
	}
	
	return return_value;
}	

function CheckRule(CurrentForm)
{
	var msg = '';
	var SelectHotelId = CurrentForm.hotelId.value;
	var SelectOffer = CurrentForm.offerId.value;
	var DateData = findDate(CurrentForm); /* Get Firstdate and Last Date */
	var FirstNight = DateData['FirstNight'];
	var LastNight = DateData['LastNight'];
	var CheckOutDate = calDate(DateData['LastNight'], 1, 'Day');
	var NumberOfNight = DateData['NumberOfNight'];
	var Loop = ruleDetail.length;
	var outLoop = 0;
	var caseAnswer = 0;
	
	msg += 'SelectOffer : '+ SelectOffer +'\n';
	msg += 'FirstNight : '+ FirstNight +'\n';
	msg += 'LastNight : '+ LastNight +'\n';
	msg += 'CheckOutDate : '+ CheckOutDate +'\n';
	msg += 'NumberOfNight : '+ NumberOfNight +'\n';
	msg += 'NumberOfRule : '+ Loop +'\n';
	
	i = 0;
	while (i < Loop && outLoop == 0)
	{
		RuleLevel = ruleDetail[i]['RuleLevel'];
		RuleHotelId = new Number(ruleDetail[i]['RuleHotelId']);
		RuleOfferId = ruleDetail[i]['RuleOfferId'];
		RuleLevelSelect = ruleDetail[i]['RuleLevelSelect'];
		RuleType = ruleDetail[i]['RuleType'];
		RuleCase = ruleDetail[i]['RuleCase'];
		RuleStart = ruleDetail[i]['RuleStart'];
		RuleEnd = ruleDetail[i]['RuleEnd'];
		RuleNight = ruleDetail[i]['RuleNight'];
		if (RuleNight == '') { RuleNight = 0; }
		caseAnswer = 0;
		
		if ((RuleLevel == 'HOTEL' && RuleHotelId == SelectHotelId) || (RuleLevel == 'OFFER' && RuleOfferId == SelectOffer))
		{
			switch (RuleType)
			{
				case "IN" :
						caseAnswer = CheckClose(FirstNight, NumberOfNight, RuleCase, RuleStart, RuleEnd, RuleNight);
						caseAlert = 1;
					break;
					
				case "OUT" :
						caseAnswer = CheckClose(CheckOutDate, NumberOfNight, RuleCase, RuleStart, RuleEnd, RuleNight);
						caseAlert = 2;
					break;
					
				case "BOTH" : 
						caseAnswer = CheckClose(FirstNight, NumberOfNight, RuleCase, RuleStart, RuleEnd, RuleNight);
						caseAlert = 1;
						if (caseAnswer == 0)
						{
							caseAnswer = CheckClose(CheckOutDate, NumberOfNight, RuleCase, RuleStart, RuleEnd, RuleNight);
							caseAlert = 2;
						}
					break;
			}
			/*
			msg += '----- Check With This Rule -----\n';
			msg += 'RuleLevel : '+ RuleLevel +'\n';
			msg += 'RuleOfferId : '+ RuleOfferId +'\n';
			msg += 'RuleLevelSelect : '+ RuleLevelSelect +'\n';
			msg += 'RuleType : '+ RuleType +'\n';
			msg += 'RuleCase : '+ RuleCase +'\n';
			msg += 'RuleStart : '+ RuleStart +'\n';
			msg += 'RuleEnd : '+ RuleEnd +'\n';
			msg += 'RuleNight : '+ RuleNight +'\n';
			*/
		}
		
		if (caseAnswer == 1) 
		{ 
			msg += '----- Apply This Rule -----\n';
			msg += 'RuleLevel : '+ RuleLevel +'\n';
			msg += 'RuleOfferId : '+ RuleOfferId +'\n';
			msg += 'RuleLevelSelect : '+ RuleLevelSelect +'\n';
			msg += 'RuleType : '+ RuleType +'\n';
			msg += 'RuleCase : '+ RuleCase +'\n';
			msg += 'RuleStart : '+ RuleStart +'\n';
			msg += 'RuleEnd : '+ RuleEnd +'\n';
			msg += 'RuleNight : '+ RuleNight +'\n';
			
			caseAnswer = caseAlert;
			outLoop = 1; 
		}
		
		i++;
	}
	
	msg += 'caseAnswer : '+ caseAnswer +'\n';

	// alert(msg);
	return caseAnswer;
}