YAHOO.namespace("organizee.container");
SetUpGoalEntry = function() {
	// Define various event handlers for Dialog
	var handleSubmit = function() {
		//SaveTags(YAHOO.organizee.container.goal_entry.id);
		AddGoal();
		DefaultGoalEntry();
		this.cancel();
	};
	var handleCancel = function() {
		DefaultGoalEntry();
		this.cancel();
	};
	var handleSuccess = function(o) {

	};
	var handleFailure = function(o) {
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - SetUpGoalEntry: ' + o.status); 
		}
	};
	
	var Validate = function()
	{
		return false;
	};

	// Instantiate the Dialog
	YAHOO.organizee.container.goal_entry = new YAHOO.widget.Dialog("goal_entry", 							                                                                         
	{ 
		width : "300px",
		fixedcenter : true,
		visible : false,
		constraintoviewport : true,
		modal : true,
		buttons : [
		{ 
			text:"Save", 
			handler:handleSubmit, 
			isDefault:true
		},
		{ 
			text:"Cancel", 
			handler:handleCancel 
		}]										 
	});

	// Wire up the success and failure handlers
	YAHOO.organizee.container.goal_entry.callback = 
	{ 
		success: handleSuccess,
		failure: handleFailure 
	};

	YAHOO.organizee.container.goal_entry.render();
	YAHOO.util.Dom.get('goal_entry').style.display = '';
	
	YAHOO.util.Event.addListener("add-entry", "click", 
		YAHOO.organizee.container.goal_entry.show, YAHOO.organizee.container.goal_entry, true);
};

CurrentMode = function() {
	return YAHOO.util.Dom.get('current_mode').value;
};

SetCurrentMode = function(value) {
	YAHOO.util.Dom.get('current_mode').value = value;
};

days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];

DefaultGoalEntry = function() {
	YAHOO.util.Dom.get('entry_title').value = '';
	YAHOO.util.Dom.get('goal_select_0').checked = true;
	for( var i = 0; i < 7; i++ ) {
		YAHOO.util.Dom.get(days[i]).checked = false;
	}
	

	var num_days = YAHOO.util.Dom.get('num_days');
	if( num_days != null ) {
		num_days.value = 1;
	}
	var entry_notes = YAHOO.util.Dom.get('entry_notes');
	if( entry_notes != null ) {
		entry_notes.value = '';
	}
	
	DisableDayEntry(false);
};

DisableDayEntry = function(disabled) {
	for( var i = 0; i < 7; i++ ) {
		YAHOO.util.Dom.get(days[i]).disabled = disabled;
	}
	
	if( !disabled ) {
		DisableNumEntry(true);
	}
};

DisableNumEntry = function(disabled) {
	var num_days = YAHOO.util.Dom.get('num_days');
	if( num_days != null ) {
		num_days.disabled = disabled;
	}

	if( !disabled ) {
		DisableDayEntry(true);
	}
};

ToggleMode = function(mode) {
	if( mode == 1 ) {
		SetCurrentMode(1);
		DisableDayEntry(true);
		DisableNumEntry(false);
	}
	else {
		SetCurrentMode(0);
		DisableNumEntry(true);
		DisableDayEntry(false);
	}
};

AddGoal = function() {
	var handleSuccess = function(o) {
		ViewGoalsWeek(GetOffset());
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - AddGoal: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};
	
	var form_elements = ['current_mode', 'entry_title', 'goal_select', 'num_days', 'entry_notes', 'current_mode'];
	var POST_value = '';
	for( var i = 0; i < form_elements.length; i++ ) {
		var element = YAHOO.util.Dom.get(form_elements[i]);
		if( element != null ) {
			POST_value += '&' + form_elements[i] + '=' + escape(element.value);
		}
	}
	
	for( var i = 0; i < 7; i++ ) {
		var day = YAHOO.util.Dom.get(days[i]);
		if( day.checked ) {
			POST_value += '&' + days[i] + '=1';
		}
	}

	var sUrl = "/goals/do/add/"
	var values = "title=" + YAHOO.util.Dom.get('entry_title').value;
	var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, POST_value);
};

MarkGoal = function(day, id) {
	
	var handleSuccess = function(o) { 
		ViewGoalsWeek(GetOffset());
		GetActivity();
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - MarkGoal: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};
	
	var start_date = YAHOO.util.Dom.get('start_date').value;
	var source = YAHOO.util.Dom.get(day + '_' + id);
	var checked = source.checked ? 1 : 0;

	var sUrl = "/goals/do/mark/?id=" + id + "&start_date=" + start_date.toString() + "&day=" + day + "&checked=" + checked;
	var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
};

ViewGoalsWeek = function(offset) {
	var handleSuccess = function(o) {
		var goal_list = YAHOO.util.Dom.get('goal_list');
		goal_list.innerHTML = o.responseText;
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - ViewGoalsWeek: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};
	
	if( YAHOO.util.Dom.get('goal_list') ) {
		SetSpinner('goal_list');
		var sUrl = "/goals/view/week/" + offset + "/";
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
	}
};

GetOffset = function() {
	return YAHOO.util.Dom.get('offset').value;
};

SetOffset = function(offset) {
	YAHOO.util.Dom.get('offset').value = offset;
};

GetActivity = function() {	
	var handleSuccess = function(o) {
		YAHOO.util.Dom.get('recent_activity').innerHTML = o.responseText;
	};

	var handleFailure = function(o) { 
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - GetActivity: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};

	if( YAHOO.util.Dom.get('recent_activity') ) {
		SetSpinner("recent_activity");
		var sUrl = "/goals/view/activity/";
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
	}
};

CloseGoal = function(id) {
	var handleSuccess = function(o) {
		window.location = "/goals/"
	};

	var handleFailure = function(o) {
		var debug = YAHOO.util.Dom.get('debug');
		if( debug ) {
			debug = debug.value;
		}
		if( debug ) {
			alert('failure - CloseGoal: ' + o.status); 
		}
	};

	var callback = {
		success: handleSuccess,
		failure: handleFailure
	};

	if( confirm("Are you sure you want to close this goal?") ) {
		var sUrl = "/goals/do/close/" + id + "/";
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);	
	}
};

YAHOO.util.Event.addListener(window, "load", SetUpGoalEntry);
YAHOO.util.Event.addListener(window, "load", function() { ViewGoalsWeek(0); })
YAHOO.util.Event.addListener(window, "load", GetActivity);