var _status=null,_activeGoalsEle=null,_pastGoalsEle=null;Attach(window,"onload",Initialize);function Initialize(){Attach(window,"onload",Dispose);_status=new StatusElement;_status.Initialize(document.body);_activeGoalsEle=new ActiveGoals(GID("activeGoals"));_activeGoalsEle.Initialize();_pastGoalsEle=new PastGoals(GID("pastGoals"));_pastGoalsEle.Initialize();Render()}function Dispose(){_status.Dispose();_activeGoalsEle.Dispose();_pastGoalsEle.Dispose();UnregisterEvents();_status=_activeGoalsEle=_goalTypes=_pastGoalsEle=null}function Render(){_activeGoalsEle.RenderGoals(Goals);_pastGoalsEle.RenderGoals(Goals)}function CreateNewGoal(goalTypeId){_activeGoalsEle.AddGoal(GoalTypes[goalTypeId])}function ActiveGoals(ele){var _this=this,_parentEle=ele,_tbodyEle=ele.tBodies[0],_goals=null,_isEditMode=false;this.Initialize=function(){RenderHeader()};this.Dispose=function(){_parentEle=_tbodyEle=_goals=_isEditMode=null};function RenderHeader(){var tr,ed,gl,ac,pc,del;tr=CrEl("tr");ed=CrEl("th");gl=CrEl("th");ac=CrEl("th");pc=CrEl("th");del=CrEl("th");ApCh(_tbodyEle,tr);ApCh(tr,ed);ApCh(tr,gl);ApCh(tr,ac);ApCh(tr,pc);ApCh(tr,del);ed.innerHTML="Edit";gl.innerHTML="Goal";ac.innerHTML="Actual";pc.innerHTML="Status";del.innerHTML="Delete"}this.AddGoal=function(goalType){if(!_isEditMode){var tr=CrEl("tr");ApCh(_tbodyEle,tr);tr.setAttribute("goalType",goalType.Id);tr.setAttribute("value","0");EditGoal(tr,null,goalType)}};function EditGoal(tr,goalValues,goalType){if(!_isEditMode){ClearColumns(tr);var s=FormatGoal(goalType,goalValues),td=CrEl("td");ApCh(tr,td);td.colSpan=6;td.innerHTML=s;UpdateSelectedValues(td);AttachEvents(td);_isEditMode=true}}function AttachEvents(td){var inputs=td.getElementsByTagName("input"),cancel=inputs[inputs.length-1],commit=inputs[inputs.length-2];Attach(cancel,"onclick",CancelClick);Attach(commit,"onclick",CommitClick)}var tr;function CommitClick(){var ele=GetTarget();tr=GetParent(ele,"TR");var goalId=parseInt(tr.getAttribute("value")),goalTypeId=-1,goal=GetFromId(_goals,goalId);if(!goal)goalTypeId=parseInt(tr.getAttribute("goalType"));var dataValues=GetDataValues(tr);RunLog.WebServices.GoalService.CommitGoal(goalId,dataValues,goalTypeId,OnCommitClickReturn,null,OnWebMethodError);_isEditMode=false}function OnCommitClickReturn(goal){var index=SetGoals(goal);tr.setAttribute("value",goal.Id);RenderGoal(tr,goal,goal.Id);_isEditMode=false}function SetGoals(goal){for(var i=0;i<_goals.length;i++)if(_goals[i].Id==goal.Id){_goals[i]=goal;return i}_goals.push(goal);return _goals.length-1}function GetDataValues(tr){var arr=[],elements=tr.childNodes[0].childNodes;for(var i=0;i<elements.length;i++){var ele=elements[i];if(ele.tagName=="SELECT")arr.push(ele.options[ele.selectedIndex].text);else if(ele.tagName=="INPUT"&&ele.type=="text")arr.push(ele.value)}return arr}function CancelClick(){var ele=GetTarget(),tr=GetParent(ele,"TR"),id=parseInt(tr.getAttribute("value")),goal=GetFromId(_goals,id);if(goal)RenderGoal(tr,goal,id);else _tbodyEle.removeChild(tr);_isEditMode=false}function UpdateSelectedValues(td){var selects=td.getElementsByTagName("select");for(var i=0;i<selects.length;i++){var sel=selects[i],val=sel.getAttribute("selectedValue");for(var j=0;j<sel.length;j++)if(sel[j].text==val){sel.selectedIndex=j;break}}}function ClearColumns(tr){while(tr.firstChild)tr.removeChild(tr.firstChild)}function FormatGoal(goalType,values){if(!values)values=new Array("","","","","","","");return goalType.Value.format2(values)}this.RenderGoals=function(goals){_goals=goals;if(goals)for(var i=0;i<goals.length;i++)if(!goals[i].IsPast){var tr=CrEl("tr");ApCh(_tbodyEle,tr);tr.setAttribute("value",goals[i].Id);RenderGoal(tr,goals[i])}};function RenderGoal(tr,goal){ClearColumns(tr);var ed,gl,ac,pc,del,eda,dela;ed=CrEl("td");gl=CrEl("td");ac=CrEl("td");pc=CrEl("td");del=CrEl("td");eda=CrEl("a");dela=CrEl("a");ApCh(tr,ed);ApCh(tr,gl);ApCh(tr,ac);ApCh(tr,pc);ApCh(tr,del);ApCh(ed,eda);ApCh(del,dela);eda.innerHTML="Edit";eda.href="#";Attach(eda,"onclick",EditClick);dela.innerHTML="Delete";Attach(dela,"onclick",DeleteClick);dela.href="#";gl.innerHTML=goal.Name;ac.innerHTML=goal.Actual;pc.innerHTML=goal.PercentComplete}function DeleteClick(){if(!confirm("Are you sure you wish to remove this goal?"))return;if(_isEditMode){alert("You cannot delete an item while editing another.");return}var ele=GetTarget(),tr=GetParent(ele,"TR"),id=parseInt(tr.getAttribute("value")),goal=GetFromId(_goals,id);RunLog.WebServices.GoalService.DeleteGoal(goal.Id,null,null,OnWebMethodError);_tbodyEle.removeChild(tr)}function EditClick(){if(!_isEditMode){var ele=GetTarget(),tr=GetParent(ele,"TR"),id=parseInt(tr.getAttribute("value")),goal=GetFromId(_goals,id);EditGoal(tr,goal.DataValues,GoalTypes[goal.TypeId]);_isEditMode=true}}function GetParent(ele,tag){while(ele.tagName!=tag)ele=ele.parentNode;return ele}}function PastGoals(ele){var _this=this,_parentEle=ele,_tbodyEle=ele.tBodies[0],_goals=null;this.Initialize=function(){RenderHeader()};this.Dispose=function(){_parentEle=_tbodyEle=_goals=null};function RenderHeader(){var tr,ed,gl,ac,pc,del;tr=CrEl("tr");gl=CrEl("th");ac=CrEl("th");pc=CrEl("th");del=CrEl("th");ApCh(_tbodyEle,tr);ApCh(tr,gl);ApCh(tr,ac);ApCh(tr,pc);ApCh(tr,del);gl.innerHTML="Goal";ac.innerHTML="Actual";pc.innerHTML="Achieved";del.innerHTML="Delete"}function ClearColumns(tr){while(tr.firstChild)tr.removeChild(tr.firstChild)}this.RenderGoals=function(goals){_goals=goals;if(goals)for(var i=0;i<goals.length;i++)if(goals[i].IsPast){var tr=CrEl("tr");ApCh(_tbodyEle,tr);tr.setAttribute("value",goals[i].Id);RenderGoal(tr,goals[i])}};function RenderGoal(tr,goal){ClearColumns(tr);var gl,ac,pc,del,dela;gl=CrEl("td");ac=CrEl("td");pc=CrEl("td");del=CrEl("td");dela=CrEl("a");ApCh(tr,gl);ApCh(tr,ac);ApCh(tr,pc);ApCh(tr,del);ApCh(del,dela);dela.innerHTML="Delete";Attach(dela,"onclick",DeleteClick);dela.href="#";var isAchieved=goal.PercentComplete=="Achieved";gl.innerHTML=goal.Name;ac.innerHTML=goal.Actual;pc.innerHTML=isAchieved?"Achieved":"Failed";AttachClass(tr,isAchieved?"achieved":"failed")}function DeleteClick(){if(!confirm("Are you sure you wish to remove this goal?"))return;var ele=GetTarget(),tr=GetParent(ele,"TR"),id=parseInt(tr.getAttribute("value")),goal=GetFromId(_goals,id);RunLog.WebServices.GoalService.DeleteGoal(goal.Id,null,null,OnWebMethodError);_tbodyEle.removeChild(tr)}function GetParent(ele,tag){while(ele.tagName!=tag)ele=ele.parentNode;return ele}}function GetFromId(goals,id){if(goals)for(var i=0;i<goals.length;i++)if(goals[i].Id==id)return goals[i];return null}
