var refreshAchievementsLifeAreaID = 1; // quick hack to pass a parameter to an AJAX onComplete handler

/*  ***** on Load event placeholder ***

function goal_addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

goal_addLoadEvent(function() {
  //alert('onload: calendar');
  calLoadFader = new fx.Opacity('calLoading',{duration: 300});
  calLoadFader.set(0);
  
});
*/
function goalHideLoader()
{
	// placeholder
}

function goalError()
{
	alert('Goal ajax error');
}

function goalSelect(goalID, lifeAreaID)
{
	var d = new Date();
	var url = 'goals.asp';
	var params = 'btnAction=SelectGoal&goalID='+goalID+'&lifeAreaID='+lifeAreaID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: 'goalsCombined'},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}
function goalAddForm(lifeAreaID)
{
	var d = new Date();
	var url = 'goals.asp';
	
	var params = 'btnAction=GoalAddForm&lifeAreaID='+lifeAreaID+'&ms='+d.getTime();

	var ajax = new Ajax.Updater(
		{success: 'goalBox'},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}
function goalAdd(lifeAreaID)
{
// validate form
	var d = new Date();
	goal = $F('GoalAddLifeArea');
	title = $F('GoalAddTitle');
	date = $F('GoalAddDatePlanned');
	lifeAreaID = $F('GoalAddLifeArea');
	
	valid = new Validation("GoalAdd",{});
	HACKCustomClass = 'floatL';
	Validation.add('validate-title', 'Goals must be between 1 and 80 characters long', {
				minLength : 1,
				maxLength : 100
				}
			);
	
	if(valid.validate() && checkDate(date))
	{
		var url = 'goals.asp';
		
		var params = 'btnAction=GoalAdd&lifeAreaID=' + lifeAreaID + '&title=' + title + '&date=' + date+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
	HACKCustomClass = '';
}


function goalAchieveForm(goalID,elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	var params = 'btnAction=GoalAchieveForm&goalID='+goalID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}

function goalAchieved(goalID, lifeAreaID, inputID, elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	var date = $F(inputID);
	
	refreshAchievementsLifeAreaID = lifeAreaID;
	refreshActionsGoalID = goalID;
	
	var params = 'btnAction=GoalAchieved&goalID='+goalID+'&date='+date+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: refreshAchievements});
}

function goalUnAchieve(goalID)
{
	var d = new Date();
	var result= confirm("Do you really want to undo this achieved Goal?");
	
	if(result)
	{
		var url = 'goals.asp';
		
		var params = 'btnAction=GoalUnAchieve&goalID='+goalID+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
}

function goalDelete(goalID)
{
	var d = new Date();
	var result= confirm("Do you really want to delete this Goal and all associated Actions?");
	
	if(result)
	{
		var url = 'goals.asp';
		
		var params = 'btnAction=GoalDelete&goalID='+goalID+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
}

function goalEditForm( goalID, elementID )
{
	var d = new Date();
	var url = 'goals.asp';
	
	var params = 'btnAction=GoalEditForm&goalID='+goalID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}
function checkDate(date)
{
	
	var bDateOK = false;
	
	var test = new Date(date);
	if((test != null) || (test.length > 0))
	{
		if(!isNaN(test))
			bDateOK = true;

	}
	if(!bDateOK)
		alert('Please enter a valid date');
		
	return bDateOK;
}
function goalEdit(goalID, inputLifeArea, inputDate, inputTitle, elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	var lifeAreaID = $F(inputLifeArea);
	var date = $F(inputDate);
	var title = $F(inputTitle);
	
	HACKCustomClass = 'floatL';

	valid = new Validation("formGoalEdit"+goalID,{});
	Validation.add('validate-title', 'Goals must be between 1 and 80 characters long', {
				minLength : 1,
				maxLength : 100
				}
			);
	
	if(valid.validate() && checkDate(date))
	{
		var params = 'btnAction=GoalEdit&lifeAreaID='+lifeAreaID+'&goalID='+goalID+'&date='+date+'&title='+title+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
	
		
	HACKCustomClass = '';
}
function goalIdle(goalID, elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	
	var params = 'btnAction=GoalIdle&goalID='+goalID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}


function actionAchieveForm(actionID,elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	var params = 'btnAction=ActionAchieveForm&actionID='+actionID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}

function actionAchieved(goalID, lifeAreaID, actionID, inputID, elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	var date = $F(inputID);
	
	refreshAchievementsLifeAreaID = lifeAreaID;
	var params = 'btnAction=ActionAchieved&actionID='+actionID+'&date='+date+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: refreshAchievements});
}

function actionUnAchieve(actionID)
{
	var d = new Date();
	var result= confirm("Do you really want to undo this achieved Action?");
	
	if(result)
	{
		var url = 'goals.asp';
		
		var params = 'btnAction=ActionUnAchieve&actionID='+actionID+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
}
function actionIdle(actionID, elementID)
{
	var d = new Date();
	var url = 'goals.asp';
	
	var params = 'btnAction=ActionIdle&actionID='+actionID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}

function actionDelete(actionID)
{
	var d = new Date();
	var result= confirm("Do you really want to delete this action?");
	
	if(result)
	{
		var url = 'goals.asp';
		
		var params = 'btnAction=ActionDelete&actionID='+actionID+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
	
}

function actionAddForm(goalID)
{
	var d = new Date();
	var url = 'goals.asp';
	
	var params = 'btnAction=ActionAddForm&goalID='+goalID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: 'actionBox'},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}

function actionAdd()
{
// validate form
	
	goalID = $F('ActionAddGoal');
	title = $F('ActionAddTitle');
	date = $F('ActionAddDatePlanned');
	
	HACKCustomClass = 'floatL';

	valid = new Validation("ActionAdd",{});
	Validation.add('validate-title', 'Actions must be between 1 and 80 characters long', {
				minLength : 1,
				maxLength : 100
				}
			);
	
	if(valid.validate() && checkDate(date))
	{
		var d = new Date();
		var url = 'goals.asp';
		
		var params = 'btnAction=ActionAdd&goalID=' + goalID + '&title=' + title + '&date=' + date+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
		HACKCustomClass = '';
}

function actionEditForm( actionID, elementID )
{
	var url = 'goals.asp';
	var d = new Date();
	var params = 'btnAction=ActionEditForm&actionID='+actionID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: elementID},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
}

function actionEdit(goalID, actionID, inputGoal, inputDate, inputTitle, elementID)
{
	var url = 'goals.asp';
	var goalID = $F(inputGoal);
	var date = $F(inputDate);
	var title = $F(inputTitle);
	
	HACKCustomClass = 'floatL';

	valid = new Validation("formActionEdit"+actionID,{});
	Validation.add('validate-title', 'Actions must be between 1 and 80 characters long', {
				minLength : 1,
				maxLength : 100
				}
			);
	
	if(valid.validate() && checkDate(date))
	{
		var d = new Date();
		var params = 'btnAction=ActionEdit&actionID='+actionID+'&goalID='+goalID+'&date='+date+'&title='+title+'&ms='+d.getTime();
		var ajax = new Ajax.Updater(
			{success: 'goalsCombined'},
			url,
			{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	}
	HACKCustomClass = '';
}


function refreshAchievements()
{
	var url = 'goals.asp';
	var d = new Date();
	var params = 'btnAction=AchievementsRefresh&lifeAreaID='+refreshAchievementsLifeAreaID+'&ms='+d.getTime();
	
	if(refreshActionsGoalID > 0)
		followOn = refreshActions;
	else
		followOn = goalHideLoader;
	
	var ajax = new Ajax.Updater(
		{success: 'achievementsBox'},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: followOn});

}

function refreshActions()
{
	var url = 'goals.asp';
	var d = new Date();
	var params = 'btnAction=ActionsRefresh&goalID='+refreshActionsGoalID+'&ms='+d.getTime();
	var ajax = new Ajax.Updater(
		{success: 'actionBox'},
		url,
		{method: 'get', parameters: params, onFailure: goalError, onComplete: goalHideLoader});
	
	refreshActionsGoalID = -1;
}	


