YackTrack.Query = new YAHOO.widget.Dialog("ytQuery", { 
		effect: {effect: YAHOO.widget.ContainerEffect.FADE, duration: 0.25},
		postmethod: "async", 
		hideaftersubmit: false, 
		fixedcenter: true,
		modal: true,
		close: false,
		visible: false,
		draggable: false }
	);
YackTrack.Query.queryData = {};
YackTrack.Query.setId = function(id) {
	YackTrack.Query.queryId = id;
}
YackTrack.Query.setHeader("Edit Query");
YackTrack.Query.formId = 'ytQueryForm';
YackTrack.Query.handleSubmit = function() {
	YackTrack.Util.removeAllErrors(['notificationTiming', 'queryType', 'searchTerm']);
	YackTrack.Util.removeFormError(YackTrack.Query.formId);
	this.submit();
};
YackTrack.Query.handleCancel = function() {
	this.cancel();
};
YackTrack.Query.validate = function() {
	var valid = true;
	var data = this.getData();
	if (!validations["required"](data.notificationTiming)) {
		YackTrack.Util.addError('notificationTiming', 'You must select a notification timing.');
		valid = false;
	}
	if (!validations["required"](data.queryType)) {
		YackTrack.Util.addError('queryType', 'You must select a query type.');
		valid = false;
	}
	if (!validations["required"](data.searchTerm)) {
		YackTrack.Util.addError('searchTerm', 'You must enter something to monitor.');
		valid = false;
	}
	return valid;
};
YackTrack.Query.callback.success = function(o) {
	var ok = false;
	var msg = "";
	try {
		var resp = YAHOO.lang.JSON.parse(o.responseText);
		ok = resp.success;
		msg = resp.message;
	} catch (e) { 
		YackTrack.Util.addFormError(YackTrack.Query.formId, e);
	}
	if (ok) {
		YackTrack.Query.destroy();
		// TODO: redirect to the queryList page?
		// window.location.reload();
		window.location.href = 'queryList';
	} else {
		YackTrack.Util.addFormError(YackTrack.Query.formId, msg);
	}
};
YackTrack.Query.callback.failure = function(o) {
	YackTrack.Util.addFormError(YackTrack.Query.formId, o.responseText);
};
YackTrack.Query.cfg.queueProperty("buttons", [ 
			{ text: "Save", handler: YackTrack.Query.handleSubmit, isDefault: true },
			{ text: "Cancel", handler: YackTrack.Query.handleCancel } 
		]);
YackTrack.Query.cfg.queueProperty("keylisteners", [
		new YAHOO.util.KeyListener(document, { keys:27 },  							
			{ fn: YackTrack.Query.handleCancel,
			scope: YackTrack.Query,
			correctScope: true } ),
		new YAHOO.util.KeyListener(document, { keys:13 },  							
			{ fn: YackTrack.Query.handleSubmit,
			scope: YackTrack.Query,
			correctScope: true } )
	]);
YackTrack.Query.handleSuccess = function(o) {
	var resp = YAHOO.lang.JSON.parse(o.responseText);
	if (resp.success) {
		YackTrack.Query.queryData = resp.queryData;
	} else {
		YackTrack.Util.addFormError(YackTrack.Query.formId, resp.message);
	}
	YackTrack.dataReady.fire(); 
	YackTrack.dataReady.unsubscribeAll();
};
YackTrack.Query.handleFailure = function(o) {
	YackTrack.Util.addFormError(YackTrack.Query.formId, o.responseText);
}
YackTrack.Query.getDialogData = function() {
	if (YackTrack.Query.queryId == 0) {
		YackTrack.Query.queryData = {};
		YackTrack.Query.queryData.id = 0;
		YackTrack.Query.queryData.queryName = "";
		YackTrack.Query.queryData.nextUpdateDate = "";
		YackTrack.Query.queryData.queryType = "chatter";
		YackTrack.Query.queryData.searchTerm = "";
		YackTrack.Query.queryData.notificationTiming = "NONE";
		YackTrack.dataReady.fire(); 
		YackTrack.dataReady.unsubscribeAll();
	} else {
		var callback = { 
			success: YackTrack.Query.handleSuccess, 
			failure: YackTrack.Query.handleFailure, 
			scope: YackTrack.Query
		}; 
		var url = "ajaxPanel?panel=edit&mode=data&id=" + YackTrack.Query.queryId;
		YAHOO.util.Connect.asyncRequest('GET', url, callback, null);
	}
};
YackTrack.Query.getForm = function() {
	var html = "<form id='" + YackTrack.Query.formId + "' name='" + YackTrack.Query.formId + "' action='ajaxPanel' method='post'>\n" +
		"<input id='id' name='id' value='" + YackTrack.Query.queryData.id + "' type='hidden' />\n" +
		"<input id='nextUpdateDate' name='nextUpdateDate' value='" + YackTrack.Query.queryData.nextUpdateDate + "' type='hidden' />\n" +
		"<label for='queryType' class='ytLabel'>Query Type*</label>\n" +
		"<br />\n" +
		"<select id='queryType' name='queryType' class='required'>\n";
	if (YackTrack.Query.queryData.queryType == 'home') {
		html += "<option selected='selected' value='home'>\nHome\n</option>\n" +
			"<option value='chatter'>\nChatter\n</option>\n";
	} else {
		html += "<option value='home'>\nHome\n</option>\n" +
			"<option selected='selected' value='chatter'>\nChatter\n</option>\n";
	}
	html += "\n</select>\n" +
		"<br /><br />\n" +
		"<label for='searchTerm' class='ytLabel'>Search Term*</label>\n" +
		"<br />\n" +
		"<input id='searchTerm' name='searchTerm' value='" + YackTrack.Query.queryData.searchTerm + "' class='txt required' type='text' size='30' />\n" +
		"<br /><br />\n" +
		"<label for='queryName' class='ytLabel'>Search Name</label>\n" +
		"<br />\n" +
		"<input id='queryName' name='queryName' value='" + YackTrack.Query.queryData.queryName + "' class='txt' type='text' size='30' />\n" +
		"<br /><br />\n" +
		"<label for='notificationTiming' class='ytLabel'>Notification Timing*</label>\n" +
		"<br />\n" +
		"<select id='notificationTiming' name='notificationTiming' class='required'>\n";
	if (YackTrack.Query.queryData.notificationTiming == 'NONE') {
		html += "<option selected='selected' value='NONE'>\nNONE\n</option>\n";
	} else {
		html += "<option value='NONE'>\nNONE\n</option>\n";
	}
	if (YackTrack.Query.queryData.notificationTiming == 'DAILY') {
		html += "<option selected='selected' value='DAILY'>\nDAILY\n</option>\n";
	} else {
		html += "<option value='DAILY'>\nDAILY\n</option>\n";
	}
	if (YackTrack.Query.queryData.notificationTiming == 'INSTANT') {
		html += "<option selected='selected' value='INSTANT'>\nINSTANT\n</option>\n";
	} else {
		html += "<option value='INSTANT'>\nINSTANT\n</option>\n";
	}
	html += "\n</select>\n" +
		"<br /><br />\n" +
		"<input id='mode' name='mode' value='exec' type='hidden' />\n" +
		"<input id='fromUrl' name='fromUrl' value='queryList' type='hidden' />\n" +
		"<input id='panel' name='panel' value='edit' type='hidden' />\n" +
		"</form>\n";
	return html;
}

