		var dayArray = new Array ("sun", "mon", "tue", "wed", "thu", "fri", "sat");
		var minArray = new Array( 0, -100, -200, -300, -400, -500, -600);
		var maxArray = new Array(605, 505, 405, 305, 205, 100, 0);
		var minPosArray = new Array(130,225,320,415,510,605,700)
		var maxPosArray = new Array(225,320,415,510,605,700,795)

		var zindexCtr = 2;

		var image01 = new Image(53,53)
		image01.src="/images/mybalancedlife/myactsched/light_walking_icon.jpg"

		var image02 = new Image(53,53)
		image02.src="/images/mybalancedlife/myactsched/flex_icon.jpg"

		var image03 = new Image(53,53)
		image03.src="/images/mybalancedlife/myactsched/strength_icon.jpg"

		function addDraggable(id, dropcontainer, dayOfWeek)
		{
			var min = minArray[dayOfWeek - 1];
			var max = maxArray[dayOfWeek - 1];

			document.getElementById(id).setAttribute('dropcontainer', dropcontainer);
			document.getElementById(id).setAttribute('minsnap', min);
			document.getElementById(id).setAttribute('maxsnap', max);

			var dragObject = new Draggable(id,{ghosting:false,constraint:'horizontal',zindex:5000, revert:function(element)
				{
					var revert = element.getAttribute('revert');
					if (revert == 'true' || revert == null)
						return true;
					else
						return false;

				},snap: function(x,y,draggable)
					{
      			function constrain(n, lower, upper)
      			{
        			if (n > upper) return upper;
        			else if (n < lower) return lower;
			        else return n;
      			}

      			return[constrain(x, draggable.element.getAttribute('minsnap'), draggable.element.getAttribute('maxsnap')),0];
      		},onStart: function(dragElement){

						document.getElementById(dragElement.element.getAttribute('dropcontainer')).style.zIndex = ++zindexCtr;
					}
      	});
		}

		function addDroppable(id, dayVal)
		{
			document.getElementById(id).setAttribute("dayVal", dayVal);

			Droppables.add(id,{accept: 'schedule_activity', overlap:'vertical',
			 onDrop: function(dragElement, dropElement, event)
				 {

  				 var dragLeft = Position.page(dragElement)[0];
					 var dropLeft = Position.page(dropElement)[0];
					 var dragWidth = document.getElementById(dragElement.id).offsetWidth
					 var dropWidth = document.getElementById(dropElement.id).offsetWidth

						if (dropLeft >= dragLeft ||
								(dropLeft + dropWidth) <= (dragLeft + dragWidth))
						{
							dragElement.setAttribute('revert','true');
							return;
						}
						else if (!droppableEmpty(dropElement.id))
						{
							dragElement.setAttribute('revert','true');
							return;
						}

					 var srcField = dragElement.getAttribute('dropcontainer');
					 var destField = dropElement.id.substring(0,3);
					 var type = dropElement.id.substring(3);
					 var dayText = dragElement.id.substring(4,7);

					 var title = document.getElementById("spn"  + dayText + type).innerHTML;


					 document.getElementById(dropElement.id).innerHTML = "";
					 document.getElementById(srcField).innerHTML = "&nbsp;";

					 removeDraggable(dragElement.id);

					 rebuildDiv(findDayNum(dayText), title, type, dropElement.id)
	 				 document.getElementById("spn" + dayText + type).innerHTML = title;

  				 //Set the image source of the activity
						if (type == 'cardio')
							document.images["img" + dayText + type].src = "/images/mybalancedlife/myactsched/light_walking_icon.jpg";

						else if (type == 'flex')
							document.images["img" + dayText + type].src = "/images/mybalancedlife/myactsched/flex_icon.jpg";

						else if (type == 'strength')
							document.images["img" + dayText + type].src = "/images/mybalancedlife/myactsched/strength_icon.jpg";

					 //Add it to the draggable collection
					 addDraggable("drag" + dayText + type, destField + type, findDayNum(destField));

					 var hiddenName = 'hdn' + dragElement.id;
					 var changedName = 'hdn' + dayText + type + 'Changed';


					 var origValue = document.getElementById("hdn" + dayText + type + "Orig").value;
					 var newValue = dropElement.getAttribute("dayVal");

					 var hiddenField = document.getElementById(hiddenName);
					 document.getElementById(hiddenName).value = dropElement.getAttribute("dayVal");

					if (origValue == newValue)
						document.getElementById(changedName).value = "true";
					else
						document.getElementById(changedName).value = "false";

 					 dragElement.setAttribute('dropcontainer', dropElement.id);
					 dragElement.setAttribute('revert','false');

						/********* MAY need to uncommment if index gets messed up again *******/
					 //resetZindexes('cardio');
					 document.getElementById(dragElement.getAttribute('dropcontainer')).style.zIndex = ++zindexCtr;
					}});

		}

		function droppableEmpty(id)
		{
			for (i=0; i<Draggables.drags.length; i++)
			{
				var draggable = Draggables.drags[i];
				if (draggable.element.getAttribute('dropcontainer') == id)
					return false;
			}

			return true;
		}

		function changeWalkingLevel(levelNumber)
		{

			document.body.style.cursor = 'wait';

			new Ajax.Request("" + "/myFitness/ajax/GetWalkingLevelAJAX.do", {
				asynchronous: true,
				method: "get",
				parameters: "levelNumber=" + levelNumber,
				onSuccess: function(request)
				{

				//Remove all the cardio draggables so they don't interfere with the new ones.
				removeDraggables("cardio");

					//Reset cardio cells so that we can start over
					for (i=0; i<dayArray.length; i++)
					{
							document.getElementById(dayArray[i] + "cardio").innerHTML = "&nbsp;";
					}

					var doc = request.responseXML.documentElement;

					//Check if we got any items back from AJAX call
					if(doc.hasChildNodes())
					{
						//Get all days
						var days = doc.getElementsByTagName("day");

						//Loop through each item
						for (i=1; i<=days.length; i++)
						{
							var day = days[i-1];

							var title = "";
							var dayOfWeek = -1;
							var origDayOfWeek = -1;

							//Loop through each element in the day
							for (j=0; j<day.childNodes.length; j++)
							{
								var dayElement = day.childNodes[j];

								if (dayElement.nodeName == "dayofweek")
								{
									dayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "origdayofweek")
								{
									origDayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "title")
								{
									title = dayElement.childNodes[0].nodeValue;
								}
							}

							//This is a cell that we are going to populate so clear out the space we put in
							//earlier so that it is still top aligned.
							document.getElementById(dayArray[dayOfWeek - 1] + "cardio").innerHTML = "";

							//Set this day's original value so we can determine if it is overriden
							document.getElementById("hdn" + dayArray[dayOfWeek - 1] + "cardioOrig").value = origDayOfWeek;

							//Rebuild this day with a new div (we had to clear out previous one)
							rebuildDiv(dayOfWeek, title, "cardio", dayArray[dayOfWeek - 1] + 'cardio');

							//if (document.getElementById("spn" + dayArray[dayOfWeek - 1] + "cardio") != null)
							//{
							//Set title of the activity
								document.getElementById("spn" + dayArray[dayOfWeek-1] + "cardio").innerHTML = title;

								//Set the image source of the activity
								document.images["img" + dayArray[dayOfWeek-1] + "cardio"].src = "/images/mybalancedlife/myactsched/light_walking_icon.jpg";

								//Add it to the draggable collection
								addDraggable("drag" + dayArray[dayOfWeek-1] + "cardio", dayArray[dayOfWeek-1] + "cardio", dayOfWeek);
							//}
						}

					}
				},
				onFailure: function(request)
				{
					alert(request.statusText);
					alert("We're currently experiencing technical problems on this website; please try again later. We apologize for any inconvenience.");
				},
				onComplete: function(request)
				{
						document.body.style.cursor = 'default'
				}
			});
		}

		function changeFlexibilityLevel(levelNumber)
		{

			document.body.style.cursor = 'wait';

			new Ajax.Request("" + "/myFitness/ajax/GetFlexibilityLevelAJAX.do", {
				asynchronous: true,
				method: "get",
				parameters: "levelNumber=" + levelNumber,
				onSuccess: function(request)
				{

				//Remove all the flexibility draggables so they don't interfere with the new ones.
				removeDraggables("flex");

					//Reset cardio cells so that we can start over
					for (i=0; i<dayArray.length; i++)
					{
							document.getElementById(dayArray[i] + "flex").innerHTML = "&nbsp;";
					}

					var doc = request.responseXML.documentElement;

					//Check if we got any items back from AJAX call
					if(doc.hasChildNodes())
					{
						//Get all days
						var days = doc.getElementsByTagName("day");

						//Loop through each item
						for (i=1; i<=days.length; i++)
						{
							var day = days[i-1];

							var title = "";
							var dayOfWeek = -1;
							var origDayOfWeek = -1;

							//Loop through each element in the day
							for (j=0; j<day.childNodes.length; j++)
							{
								var dayElement = day.childNodes[j];

								if (dayElement.nodeName == "dayofweek")
								{
									dayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "origdayofweek")
								{
									origDayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "title")
								{
									title = dayElement.childNodes[0].nodeValue;
								}
							}

							//This is a cell that we are going to populate so clear out the space we put in
							//earlier so that it is still top aligned.
							document.getElementById(dayArray[dayOfWeek - 1] + "flex").innerHTML = "";

							//Set this day's original value so we can determine if it is overriden
							document.getElementById("hdn" + dayArray[dayOfWeek - 1] + "flexOrig").value = origDayOfWeek;

							//Rebuild this day with a new div (we had to clear out previous one)
							rebuildDiv(dayOfWeek, title, "flex", dayArray[dayOfWeek - 1] + "flex");

							//if (document.getElementById("spn" + dayArray[dayOfWeek - 1] + "cardio") != null)
							//{
							//Set title of the activity
								document.getElementById("spn" + dayArray[dayOfWeek-1] + "flex").innerHTML = title;

								//Set the image source of the activity
								document.images["img" + dayArray[dayOfWeek-1] + "flex"].src = "/images/mybalancedlife/myactsched/flex_icon.jpg";

								//Add it to the draggable collection
								addDraggable("drag" + dayArray[dayOfWeek-1] + "flex", dayArray[dayOfWeek-1] + "flex", dayOfWeek);
							//}
						}

					}
				},
				onFailure: function(request)
				{
					alert(request.statusText);
					alert("We're currently experiencing technical problems on this website; please try again later. We apologize for any inconvenience.");
				},
				onComplete: function(request)
				{
						document.body.style.cursor = 'default'
				}
			});
		}

		function changeStrengthLevel(levelNumber, strengthSessions)
		{

			document.body.style.cursor = 'wait';
			var programType = document.getElementById("strengthProgramType").value;

			new Ajax.Request("" + "/myFitness/ajax/GetStrengthLevelAJAX.do", {
				asynchronous: true,
				method: "get",
				parameters: "levelNumber=" + levelNumber + "&strengthSessions=" + strengthSessions + "&strengthProgramType=" + programType,
				onSuccess: function(request)
				{

					//Remove all the flexibility draggables so they don't interfere with the new ones.
					removeDraggables("strength");

					//Reset cardio cells so that we can start over
					for (i=0; i<dayArray.length; i++)
					{
							document.getElementById(dayArray[i] + "strength").innerHTML = "&nbsp;";
					}

					var doc = request.responseXML.documentElement;

					//Check if we got any items back from AJAX call
					if(doc.hasChildNodes())
					{
						//Get all days
						var days = doc.getElementsByTagName("day");

						//Loop through each item
						for (i=1; i<=days.length; i++)
						{
							var day = days[i-1];

							var title = "";
							var dayOfWeek = -1;
							var origDayOfWeek = -1;

							//Loop through each element in the day
							for (j=0; j<day.childNodes.length; j++)
							{
								var dayElement = day.childNodes[j];

								if (dayElement.nodeName == "dayofweek")
								{
									dayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "origdayofweek")
								{
									origDayOfWeek = dayElement.childNodes[0].nodeValue;
								}

								else if (dayElement.nodeName == "title")
								{
									title = dayElement.childNodes[0].nodeValue;
								}
							}

							//This is a cell that we are going to populate so clear out the space we put in
							//earlier so that it is still top aligned.
							document.getElementById(dayArray[dayOfWeek - 1] + "strength").innerHTML = "";

							//Set this day's original value so we can determine if it is overriden
							document.getElementById("hdn" + dayArray[dayOfWeek - 1] + "strengthOrig").value = origDayOfWeek;

							//Rebuild this day with a new div (we had to clear out previous one)
							rebuildDiv(dayOfWeek, title, "strength", dayArray[dayOfWeek - 1] + "strength");

							//if (document.getElementById("spn" + dayArray[dayOfWeek - 1] + "cardio") != null)
							//{
							//Set title of the activity
								document.getElementById("spn" + dayArray[dayOfWeek-1] + "strength").innerHTML = title;

								//Set the image source of the activity
								document.images["img" + dayArray[dayOfWeek-1] + "strength"].src = "/images/mybalancedlife/myactsched/strength_icon.jpg";

								//Add it to the draggable collection
								addDraggable("drag" + dayArray[dayOfWeek-1] + "strength", dayArray[dayOfWeek-1] + "strength", dayOfWeek);
							//}
						}

					}
				},
				onFailure: function(request)
				{
					alert(request.statusText);
					alert("We're currently experiencing technical problems on this website; please try again later. We apologize for any inconvenience.");
				},
				onComplete: function(request)
				{
						document.body.style.cursor = 'default'
				}
			});
		}


		/**
		 * Disable the row in the table so that it looks removed
		 */
		function disableRow(activityType)
		{
			document.getElementById(activityType + "SepRow1").className = "schedule_sep_row_disabled";
			document.getElementById(activityType + "SepRow2").className = "schedule_sep_row_disabled";
			document.getElementById(activityType + "LevelEnabledDiv").style.display = "none";
			document.getElementById(activityType + "LevelDisabledDiv").style.display = "block";
			document.getElementById(activityType + "AddLink").style.display = "block";
			document.getElementById(activityType + "RemoveLink").style.display = "none";
			document.getElementById(activityType + "Remove").value = "true";

			if (document.getElementById(activityType + "Add") != null)
				document.getElementById(activityType + "Add").value = "";

			//Remove icons from all the cells
			for (i=0; i<dayArray.length; i++)
			{
					document.getElementById(dayArray[i] + activityType).innerHTML = "&nbsp;";

					document.getElementById(dayArray[i] + activityType).className = "schedule_cell_disabled";

					if (i < dayArray.length - 1)
						document.getElementById(dayArray[i] + activityType + "SepCol").className = "schedule_sep_col_disabled";
			}

			if (activityType == "strength")
				document.getElementById("bottomFrame").src = "/images/mybalancedlife/myactsched/bottom_frame_deselect.jpg"

		}

		/**
		 * Disable the row in the table so that it looks removed
		 */
		function enableRow(activityType)
		{
			document.getElementById(activityType + "SepRow1").className = "schedule_sep_row";
			document.getElementById(activityType + "SepRow2").className = "schedule_sep_row";
			document.getElementById(activityType + "LevelEnabledDiv").style.display = "block";
			document.getElementById(activityType + "LevelDisabledDiv").style.display = "none";
			document.getElementById(activityType + "AddLink").style.display = "none";
			document.getElementById(activityType + "RemoveLink").style.display = "block";
			document.getElementById(activityType + "Remove").value = "";

			document.getElementById(activityType + "Level").value = "1";

			//This field is only valid if the type removed when the screen was loaded. If
			//this is the case, set it to added so we know to insert a record.
			if (document.getElementById(activityType + "Add") != null)
				document.getElementById(activityType + "Add").value = "true";

			//Remove icons from all the cells
			for (i=0; i<dayArray.length; i++)
			{
					document.getElementById(dayArray[i] + activityType).className = "schedule_cell";

					if (i < dayArray.length - 1)
						document.getElementById(dayArray[i] + activityType + "SepCol").className = "schedule_sep_col";
			}

			if (activityType == "strength")
			{
				document.getElementById("bottomFrame").src = "/images/mybalancedlife/myactsched/bottom_frame_img.jpg"
				changeStrengthLevel(1, 2);
			}

			else if (activityType == "flex")
			{
				changeFlexibilityLevel(1);
			}

			else if (activityType == "cardio")
			{
				changeWalkingLevel(1);
			}

		}

		/**
		* Rebuild the draggable div for the given parameters.
		*/
		function rebuildDiv(dayOfWeek, title, type, destField)
		{

			var imgId = "img" + dayArray[dayOfWeek - 1] + type;
			var spanId = "spn" + dayArray[dayOfWeek - 1] + type;
			var hdnId = "hdndrag" + dayArray[dayOfWeek - 1] + type;
			var divId = "drag" + dayArray[dayOfWeek - 1] + type;

			img = Builder.node('img', {src:"/images/mybalancedlife/myactsched/strength_icon.jpg", id:imgId, height:'53', width:'53', border:'0'});
			br2 = Builder.node('br');
			span = Builder.node('span',{id:spanId}, [title]);
			hidden = Builder.node('input', {type: 'hidden', name:hdnId, id:hdnId, value:dayOfWeek});
			div = Builder.node('div', {className:'schedule_activity', id:divId}, [img, br2, span, hidden]);
			br = Builder.node('br');
			$(destField).appendChild(div);
			/*$(destField).appendChild(br);*/

		}

		/**
		* Remove all draggables for the given type so they can be recreated with new data.
		*/
		function removeDraggables(type)
		{
			for (i=0; i<Draggables.drags.length; i++)
			{
				if (Draggables.drags[i].element.id.indexOf(type) >=0)
				{
					Draggables.drags[i].destroy();
					i = i - 1;
				}
			}
		}

		function removeDraggable(draggableId)
		{
			for (i=0; i<Draggables.drags.length; i++)
			{
				if (Draggables.drags[i].element.id == draggableId)
				{
					Draggables.drags[i].destroy();
					return;
				}
			}
		}

		function findDayNum(dayText)
		{
			for (i=0; i<dayArray.length; i++)
			{
				if (dayText == dayArray[i])
					return i + 1;
			}

			return -1;
		}

		function resetZindexes(type)
		{
			document.getElementById('suncardio').style.zIndex = 0;
			document.getElementById('moncardio').style.zIndex = 0;
			document.getElementById('tuecardio').style.zIndex = 0;
			document.getElementById('wedcardio').style.zIndex = 0;
			document.getElementById('thucardio').style.zIndex = 0;
			document.getElementById('fricardio').style.zIndex = 0;
			document.getElementById('satcardio').style.zIndex = 0;
		}


