
	var xmlDoc;
	var xmlDocReady = false;	
	loadBabyLiteXML("BabyLite.xml");
	
	var RegionSelected = "";
	var PriceSelected = "";
	var LeaveMessage = "";
			
	
	function loadBabyLiteXML(FileToLoad)
	{
		if (window.ActiveXObject)
		{
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		}
		else if (document.implementation && document.implementation.createDocument)
		{
			xmlDoc= document.implementation.createDocument("","doc",null);
		}
		
 		xmlDoc.async=false;
 		xmlDoc.onreadystatechange=verify;
 		xmlDoc.load(FileToLoad);
		if(xmlDoc.documentElement == null) 
        { 
            //alert ("Could not load XML file " + FileToLoad);          	
        } 
	}
	
	function verify()
	{ 
		if (xmlDoc.readyState != 4)
 		{ 
  			return false; 
 		}
	}
	
	
	
function createdropdowns() 
{
	var SelectTypeList = xmlDoc.getElementsByTagName("SelectType");
	var SelectTypeListLength = SelectTypeList.length;	
	for (var i = 0; i < SelectTypeListLength; i++) 
	{
		var DropDownObjName = SelectTypeList[i].getAttribute("type");
		var DropDownObject = document.getElementById(DropDownObjName);
		var RegionBlockList =  SelectTypeList[i].getElementsByTagName("RegionBlock");
		for (var RegionCnt = 0; RegionCnt < RegionBlockList.length; RegionCnt++) 
		{
			var OptionValue = RegionBlockList[RegionCnt].getAttribute("price");
			var OptionText = RegionBlockList[RegionCnt].getAttribute("name");
			DropDownObject.options[DropDownObject.options.length] = new Option(OptionText, OptionValue)
		}
	}	
}	

//*********************************************************************

function ValidateForm()
{
	var ValidForm = true;
	var FormMessage = "";
	var ThisForm = document.getElementById("form1");	
	if (!IsDateLeadTime())
	{
		FormMessage = FormMessage + "The start date must be 2 days from todays date.'\n";
		ValidForm = false;
	}
	if (!IsDatesCorrect())
	{
		FormMessage = FormMessage + "The end date must be AFTER the start date.'\n";
		ValidForm = false;
	}
	if (!CheckLeavePeriod())
	{
		FormMessage = FormMessage + LeaveMessage + "\n";
		ValidForm = false;
	}
	if (RegionSelected == "")
	{
		FormMessage = FormMessage + "You must select a delivery/collection area." + "\n";
		ValidForm = false;
	}
	
	
	if (ValidForm == false)
	{
		alert(FormMessage);
	}
	else
	{
		//alert("deliverycharge is R " + PriceSelected);
		document.getElementById("DeliveryCharge").disabled = false;
		document.getElementById("FormAction").value='CHECKOUT';
		document.forms[0].submit();
	}
}


function SetCharge()
{
	var CollectCB = document.getElementById("Collect");
	var DropDownNm = "";
	if (CollectCB.checked)
	{
		DropDownNm = "CollectingFrom";
		document.getElementById("DeliveryCharge").value = "0";
		alert("coll");
	}
	else
	{
		DropDownNm = "DeliveryTo";
	}
	
	
	var DropDownObject = document.getElementById(DropDownNm);
	var SelectedID = DropDownObject.selectedIndex;
	document.getElementById("DeliveryCharge").value = DropDownObject.options[SelectedID].value;	
	//George and Plett Mod
	if ((SelectedID > 0)&&(DropDownNm == "DeliveryTo"))
	{	
		SelectedID = SelectedID - 1;
		//[Check Against XML Doc]
		var SelectTypeList = xmlDoc.getElementsByTagName("SelectType");
		var SelectTypeListLength = SelectTypeList.length;
		for (var i = 0; i < SelectTypeListLength; i++) 
		{
			if (SelectTypeList[i].getAttribute("type") == DropDownNm)
			{
				var RegionBlockList =  SelectTypeList[i].getElementsByTagName("RegionBlock");
				//alert(SelectedID);
				if (SelectedID < RegionBlockList.length+1)
				{
					regionCode = RegionBlockList[SelectedID].getAttribute("regionCode");
					if (( regionCode == "PLE")||(regionCode == "GEO")||(regionCode == "GEOAIR"))
					{
						var GObjectStyle = document.getElementById("GEODiv").style;
						//alert(GObjectStyle.visibility);
						GObjectStyle.visibility = "visible";
						//alert(regionCode + " - " + GObject.style);
					}
					else
					{
						var GObjectStyle = document.getElementById("GEODiv").style;
						//alert(GObjectStyle.visibility);
						GObjectStyle.visibility = "hidden";
					}
				}
			}		
		}	
	}
	//End Modification for George and Plett
}


function GetCharge()
{
	var CollectCB = document.getElementById("Collect");
	var DropDownNm = "";
	if (CollectCB.checked)
	{
		DropDownNm = "CollectingFrom";
	}
	else
	{
		DropDownNm = "DeliveryTo";
	}
	var DropDownObject = document.getElementById(DropDownNm);
	var SelectedID = DropDownObject.selectedIndex;
	return DropDownObject.options[SelectedID].value;	
}


function CheckLeavePeriod()
{
	var ValidDate = true;	
	var Collection = document.getElementById("Collect").checked;	
	var regionCode = "";
	var StartDay = document.getElementById("StartDay").value;
	var StartMonth = document.getElementById("StartMonth").value;
	var StartYear = document.getElementById("StartYear").value;
	var EndDay = document.getElementById("EndDay").value;
	var EndMonth = document.getElementById("EndMonth").value;
	var EndYear = document.getElementById("EndYear").value;
	var StartDate = new Date(StartYear, StartMonth, StartDay)
	var EndDate = new Date(EndYear, EndMonth, EndDay)
	
    //alert(StartMonth);
    //alert(StartDay);
	
	
	var CollectCB = document.getElementById("Collect");
	var DropDownNm = "";
	if (CollectCB.checked)
	{
		DropDownNm = "CollectingFrom";
	}
	else
	{
		DropDownNm = "DeliveryTo";
	}
	var DropDownObject = document.getElementById(DropDownNm);
	var SelectedID = DropDownObject.selectedIndex;
	if (SelectedID > 0)
	{	
		SelectedID = SelectedID - 1;
		//[Check Against XML Doc]
		var SelectTypeList = xmlDoc.getElementsByTagName("SelectType");
		var SelectTypeListLength = SelectTypeList.length;
		for (var i = 0; i < SelectTypeListLength; i++) 
		{
			if (SelectTypeList[i].getAttribute("type") == DropDownNm)
			{
				var RegionBlockList =  SelectTypeList[i].getElementsByTagName("RegionBlock");
				//alert(SelectedID);
				if (SelectedID < RegionBlockList.length+1)
				{
					PriceSelected = RegionBlockList[SelectedID].getAttribute("price");
					RegionSelected = RegionBlockList[SelectedID].getAttribute("province");
					regionCode = RegionBlockList[SelectedID].getAttribute("regionCode");
				}
			}		
		}	
	}
	else
	{
		PriceSelected = "0";
		RegionSelected = "";
	}
	document.getElementById("DeliveryAreaCode").value = RegionSelected;
	document.getElementById("regionCode").value = regionCode;
	//alert(regionCode);
	//alert(document.getElementById("regionCode").value);
	
	
	//[Check Leave Dates By RegionSelected]
	var LeaveList = xmlDoc.getElementsByTagName("LeaveDates");
	var LeaveListLength = LeaveList.length;
	var AreaLeaveMessage = "";
	for (var i = 0; i < LeaveListLength; i++) 
	{
		//alert(regionCode + "==" + LeaveList[i].getAttribute("regionCode"));
		//[Check the Specific RegionCode]
		//NOTE: THIS REGIONCODE FUNCTION WAS REMOVED BY REQUEST FROM GARETH
		//gareth specifically requested that it be done via "area" on the 20/9/2008
		/*if (LeaveList[i].getAttribute("regionCode") == regionCode)
		{			
			var MonthList = LeaveList[i].getElementsByTagName("Month");
			for (var MonthCnt = 0; MonthCnt < MonthList.length; MonthCnt++) 
			{
				//[Check Months]
				if (StartMonth==MonthList[MonthCnt].getAttribute("value"))
				{
					//[Check Days]
					var DayList = MonthList[MonthCnt].getElementsByTagName("Day");
					for (var DayCnt = 0; DayCnt < DayList.length; DayCnt++) 
					{
						if (StartDay==DayList[DayCnt].getAttribute("value"))
						{
							ValidDate = false;
							AreaLeaveMessage = LeaveList[i].getAttribute("leavemessage");
						}
					}
				}
				if (EndMonth==MonthList[MonthCnt].getAttribute("value"))
				{
					//[Check Days]
					var DayList = MonthList[MonthCnt].getElementsByTagName("Day");
					for (var DayCnt = 0; DayCnt < DayList.length; DayCnt++) 
					{
						if (EndDay==DayList[DayCnt].getAttribute("value"))
						{
							ValidDate = false;
							AreaLeaveMessage = LeaveList[i].getAttribute("leavemessage");
						}
					}
				}
			}
		}*/
		
		//[Check the Specific Area (NOT REGION)]
		if (LeaveList[i].getAttribute("area") == RegionSelected)
		{			
			var MonthList = LeaveList[i].getElementsByTagName("Month");
			for (var MonthCnt = 0; MonthCnt < MonthList.length; MonthCnt++) 
			{
				//[Check Months]
				if (StartMonth==MonthList[MonthCnt].getAttribute("value"))
				{
					//[Check Days]
					var DayList = MonthList[MonthCnt].getElementsByTagName("Day");
					for (var DayCnt = 0; DayCnt < DayList.length; DayCnt++) 
					{
						if (StartDay==DayList[DayCnt].getAttribute("value"))
						{
							ValidDate = false;
							AreaLeaveMessage = LeaveList[i].getAttribute("leavemessage");
						}
					}
				}
				if (EndMonth==MonthList[MonthCnt].getAttribute("value"))
				{
					//[Check Days]
					var DayList = MonthList[MonthCnt].getElementsByTagName("Day");
					for (var DayCnt = 0; DayCnt < DayList.length; DayCnt++) 
					{
						if (EndDay==DayList[DayCnt].getAttribute("value"))
						{
							ValidDate = false;
							AreaLeaveMessage = LeaveList[i].getAttribute("leavemessage");
						}
					}
				}
			}
		}
	}
	if (!ValidDate)
	{
		LeaveMessage = AreaLeaveMessage;
	}
	return ValidDate;

}


function getElmById(aID)
{ 
  var element = null; 
  var isMozilla = (document.all) ? 0 : 1;  
  if (isMozilla || isIE5) 
    element = document.getElementById(aID) 
  else if (isNetscape4) 
    element = document.layers[aID] 
  else if (isIE4) 
    element = document.all[aID]; 

  return element; 
} 

function IsDatesCorrect()
{
	var ValidDate = false;	
	var StartDay = document.getElementById("StartDay").value;
	var StartMonth = document.getElementById("StartMonth").value;
	var StartYear = document.getElementById("StartYear").value;
	var EndDay = document.getElementById("EndDay").value;
	var EndMonth = document.getElementById("EndMonth").value;
	var EndYear = document.getElementById("EndYear").value;
	var StartDate = new Date(StartYear, StartMonth, StartDay)
	var EndDate = new Date(EndYear, EndMonth, EndDay)
	
	//Calculate difference btw the two dates, and convert to days
	var one_day=1000*60*60*24
	var DayDiff = (Math.ceil((EndDate.getTime()-StartDate.getTime())/(one_day))) + 1;
	if (DayDiff > 1)
	{
		ValidDate = true;
	}
	return ValidDate;
}


function IsDateLeadTime()
{
	var ValidDate = false;
	
	var months = new Array(13);
   	months[0]  = "January";
   	months[1]  = "February";
   	months[2]  = "March";
   	months[3]  = "April";
   	months[4]  = "May";
   	months[5]  = "June";
   	months[6]  = "July";
   	months[7]  = "August";
   	months[8]  = "September";
   	months[9]  = "October";
   	months[10] = "November";
   	months[11] = "December";
	var now         = new Date();
   	var monthnumber = now.getMonth();
   	var monthname   = months[monthnumber];
   	var monthday    = now.getDate();
   	var thisyear        = now.getYear();
	//year = year + 2000; 
	var CurrentDate = new Date();
   	var CurrentDateString = monthname + ' ' + monthday + ', ' + thisyear;
	
	var StartDay = Number(document.getElementById("StartDay").value);
	var StartMonthInt = Number(document.getElementById("StartMonth").value);
	var StartMonth = months[StartMonthInt];
	var StartYear = Number(document.getElementById("StartYear").value);
	var StartDate = new Date(StartYear, StartMonthInt, StartDay)
	//var StartDateString = StartMonth + " " + StartDay + ", " + StartYear;
	
	//Calculate difference btw the two dates, and convert to days
	var one_day=1000*60*60*24
	var DayDiff = (Math.ceil((StartDate.getTime()-CurrentDate.getTime())/(one_day))) + 1;
	if (DayDiff > 3)
	{
		ValidDate = true;
	}
	//alert(DayDiff);
	//alert(CurrentDate);
	//alert(StartDate);
	return ValidDate;
}


//Calculate Difference in Dates
function CalculateDateDiff()
{
	var StartDay = document.getElementById("StartDay").value;
	var StartMonth = document.getElementById("StartMonth").value;
	var StartYear = document.getElementById("StartYear").value;
	var StartHour = document.getElementById("StartHour").value;
	var StartMinute = document.getElementById("StartMinute").value;
	var EndDay = document.getElementById("EndDay").value;
	var EndMonth = document.getElementById("EndMonth").value;
	var EndYear = document.getElementById("EndYear").value;
	var EndHour = document.getElementById("EndHour").value;
	var EndMinute = document.getElementById("EndMinute").value;
	var Seconds = "00"
	var StartDate = new Date(StartYear, StartMonth, StartDay, StartHour, StartMinute, Seconds)
	var EndDate = new Date(EndYear, EndMonth, EndDay, EndHour, EndMinute, Seconds)
	
	
	
	//Month is 0-11 in JavaScript
	var one_day=1000*60*60*24

	//Calculate difference btw the two dates, and convert to days
	//var DayDiff = (Math.ceil((EndDate.getTime()-StartDate.getTime())/(one_day))) + 1;
	//modified above ceil to floor because time element increases day by 1
	var DayDiff = (Math.floor((EndDate.getTime()-StartDate.getTime())/(one_day))) + 1;
	//alert(DayDiff);
	if (DayDiff == 1)
	{
		DayDiff = 2;
	}
	DayDiff = Math.floor(DayDiff);
	//Calculate the Total Price Per Item for the number of Days..
	if (DayDiff > 30)
	{
		CalculateCartTotal(2,DayDiff,30, StartDate, EndDate);
	}
	else if (DayDiff > 6)
	{
		CalculateCartTotal(1,DayDiff,7, StartDate, EndDate);
	}
	else if (DayDiff < 0)
	{
		alert("Your selected dates are incorrect.");
		CalculateCartTotal(0,0,1, StartDate, EndDate);
	}
	else
	{
		CalculateCartTotal(0,DayDiff,1, StartDate, EndDate);
	}
}




function CalculateCartTotal(CalcLevel, NoOfDays, DivideBy, StartDate, EndDate)
{
	var TotalItems = Number(document.getElementById("TotalItems").value)+1;	
	TotalPrice = 0;
	for(i = 1;i <TotalItems ;i++)
	{
		var PurchaseFlagField = "IVPurchaseFlag" + i;
		var isPurchase = Number(document.getElementById(PurchaseFlagField).value);
		//
		//alert("item: " + i);
		if (isPurchase ==  1)
		{
			var RateFieldID = "IVPrice" + i;
			var Quantity = Number(document.getElementById("CartIVQTY"+i).value);
			var IVPrice = document.getElementById(RateFieldID).value;
			var UnitPrice = (Quantity*IVPrice);
			//alert(UnitPrice);
			TotalPrice = TotalPrice + UnitPrice;
		}
		else
		{
			var RateFieldID = "IVRate" + i;
			var RateArray = document.getElementById(RateFieldID).value.split("-");
			if (RateArray.length > 2)
			{
				var Quantity = Number(document.getElementById("CartIVQTY"+i).value);
				var QuanRate = Number(Quantity*RateArray[CalcLevel]);
				var NumDays = Number(NoOfDays/DivideBy);
				//alert("NoOfDays: " + NoOfDays);
				//alert("DivideBy: " + DivideBy);
				//var UnitPrice = (Quantity*RateArray[CalcLevel])*(NoOfDays/DivideBy);
				var UnitPrice = Number(QuanRate*NumDays);
				//alert("quan: " + Quantity);
				//alert("cacllevel: " + CalcLevel);
				//alert("calcualte: (" + QuanRate + "*" + NumDays + ")" );
				//alert("UnitPrice: " + UnitPrice );				
				TotalPrice = TotalPrice + UnitPrice;
				//alert("total: " + TotalPrice);
				
			}
			//else
			//{
			//	alert("fullrate: " + document.getElementById(RateFieldID).value);
			//}
		}
	}	
	//alert(TotalPrice + "--");
	if (TotalPrice < 499)
	{		
		var Collection = document.getElementById("Collect").checked;
		if (!Collection)
		{
			//alert(TotalPrice);
			var DeliveryCharge = GetCharge();
			var DblDeliveryCharge = Number(DeliveryCharge);
			//Check to See if CPT, JHN, DBN or ORT OR PTA..
			var DelAreaText = document.getElementById("DeliveryTo").options[document.getElementById("DeliveryTo").selectedIndex].text;
			if (CheckValidDelArea(DelAreaText))
			{
				if ((isWeekendOrBusy(StartDate))&&(isWeekendOrBusy(EndDate)))
				{
					DblDeliveryCharge = DblDeliveryCharge*1.5;
					//alert(DblDeliveryCharge);
				}
				else if ((isWeekendOrBusy(StartDate))||(isWeekendOrBusy(EndDate)))
				{
					DblDeliveryCharge = DblDeliveryCharge + (((DblDeliveryCharge/2)*1.5)/2);
					//alert(DblDeliveryCharge);
				}		
			}			
			document.getElementById("DeliveryCharge").value = DblDeliveryCharge;	
			document.getElementById("DeliveryCharge").disabled = true;
			//isWeekendOrBusy(StartDate);
			TotalPrice = TotalPrice + Number(DblDeliveryCharge);
			//alert(TotalPrice + " - " + DblDeliveryCharge);			
		}
		else
		{
			//alert("1");	
			document.getElementById("DeliveryCharge").value = "0";	
			document.getElementById("DeliveryCharge").disabled = true;
		}
	}
	else
	{
		var CurrentDelCharge = Number(document.getElementById("DeliveryCharge").value);
		var DeliveryCharge = GetCharge();
		var DblDeliveryCharge = Number(DeliveryCharge);
		//Check to See if CPT, JHN, DBN or ORT..
		var DelAreaText = document.getElementById("DeliveryTo").options[document.getElementById("DeliveryTo").selectedIndex].text;
		if (CheckValidDelArea(DelAreaText))
		{
				if ((isWeekendOrBusy(StartDate))&&(isWeekendOrBusy(EndDate)))
				{
					DblDeliveryCharge = DblDeliveryCharge*1.5;
				}
				else if ((isWeekendOrBusy(StartDate))||(isWeekendOrBusy(EndDate)))
				{
					DblDeliveryCharge = DblDeliveryCharge + (((DblDeliveryCharge/2)*1.5)/2);
				}		
		}			
		if (DblDeliveryCharge < 76)
		{		
			document.getElementById("DeliveryCharge").value = "0";	
			document.getElementById("DeliveryCharge").disabled = true;
		}
		else
		{		
			document.getElementById("DeliveryCharge").value = DblDeliveryCharge;	
			document.getElementById("DeliveryCharge").disabled = true;
			//alert(DeliveryCharge);
			//isWeekendOrBusy(StartDate);
			TotalPrice = TotalPrice + Number(DblDeliveryCharge);		
			//TotalPrice = TotalPrice + Number(document.getElementById("DeliveryCharge").value);
		}		
	}
	if (IsNumeric(document.getElementById("AdditionalCharge").value))
	{
		TotalPrice = TotalPrice + Number(document.getElementById("AdditionalCharge").value);
	}
	else
	{
		document.getElementById("AdditionalCharge").value = "0";	
	}
	TotalPrice = Math.round(TotalPrice*100)/100 
	document.getElementById("TotalCost").value = TotalPrice;
}


function CheckValidDelArea(AreaText)
{
	var validArea = false;
	var SelectTypeList = xmlDoc.getElementsByTagName("SelectType");
	var SelectTypeListLength = SelectTypeList.length;
	var ThisRegionCode = "";
	for (var i = 0; i < SelectTypeListLength; i++) 
	{
		if (SelectTypeList[i].getAttribute("type") == "DeliveryTo")
		{
			//[Get All the Regions in the Delivery DropDowns]
			var RegionBlockList =  SelectTypeList[i].getElementsByTagName("RegionBlock");
			var RegionBlockLength = RegionBlockList.length;
			for (var regi = 0; regi < RegionBlockLength; regi++) 
			{
				if (RegionBlockList[regi].getAttribute("name") == AreaText)
				{
					ThisRegionCode = RegionBlockList[regi].getAttribute("regionCode");
					//alert(RegionBlockList[regi].getAttribute("regionCode"));
				}
			}
		}		
	}	
	if ((ThisRegionCode.substring(0,3)=="CPT")||(ThisRegionCode.substring(0,3)=="JHB")||(ThisRegionCode.substring(0,3)=="DBN")||(ThisRegionCode.substring(0,3)=="ORT")||(ThisRegionCode.substring(0,3)=="PTA"))
	{
		validArea = true;
	}
	//alert(validArea);
	return validArea;	
}



function isWeekendOrBusy(CheckDate)
{
	var returnBool = false;
	//[Check if Weekend]0 to 6 (0=Sunday, 1=Monday, etc)
	var intDay = CheckDate.getDay();
	if ((intDay == 0)||(intDay == 6))
	{
		//is a weekend (sat/sun)
		returnBool = true;
	}
	if ((CheckDate.getHours()>6)&&(CheckDate.getHours() < 10))
	{
		if ((CheckDate.getMinutes()< 30)&&(CheckDate.getHours() == 7))
		{
			//returnBool = false;
		}
		if ((CheckDate.getMinutes()> 0)&&(CheckDate.getHours() == 9))
		{
			//returnBool = false;
		}
		else
		{
			returnBool = true;
		}
	}
	else if ((CheckDate.getHours()>15)&&(CheckDate.getHours() < 19))
	{
		if ((CheckDate.getHours() == 16)&&(CheckDate.getMinutes()< 30))
		{
			//returnBool = false;
		}
		else if ((CheckDate.getHours() == 18)&&(CheckDate.getMinutes()> 30))
		{
			//returnBool = false;
		}
		else
		{
			returnBool = true;
		}
	}
	//alert(CheckDate.getDay());
	return returnBool;
}

//**************************************************************


function ValidateCollectTickbox()
{
	var CollectCB = document.getElementById("Collect");
	//[Divs]
	var CollectDiv = document.getElementById("collectdiv");
	var DeliveryDiv = document.getElementById("deliverydiv");
	//alert(CollectCB.checked);
	if (CollectCB.checked)
	{
		CollectDiv.style.visibility='visible';
		CollectDiv.style.display='block';
		DeliveryDiv.style.visibility='hidden';
		DeliveryDiv.style.display='none';
	}
	else
	{		
		CollectDiv.style.visibility='hidden';
		CollectDiv.style.display='none';
		DeliveryDiv.style.visibility='visible';
		DeliveryDiv.style.display='block';
	}
}






function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char; 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;   
}
