// loads main page content (optional showing loading icon)
function load_content(target_div, target_page, show_loading) {
	if (target_div == null) target_div = "left_column_content";
	if (show_loading) {
		var target_div_html = '<div style="margin: 190px 0 30px 0; text-align: center;">';
		target_div_html = target_div_html +	'<img src="img/loading.gif" /></div>';
	}
	$('#' + target_div).html(target_div_html);
	$.get(target_page, function(page_data) {
		$('#' + target_div).html(page_data);
	});
}

// this is a special version of the load_form_dialog function (below) that's used for forms
// that contain a file upload field. forms using this function should be processed using the 
// iframer extension.
function show_upload_dialog(object, action, id, update_div, title_text, params) {
	var add_val = (params != "undefined") ? params : null;
	var form = object + "_form";
	var title;
	if (typeof(title_text) == 'undefined') {
		title = capitalize(action) + " " + capitalize(object);
	} else {
		title = title_text;
	}
	var target = "inc/" + object + "_form.php?action=" + action + "&id=" + id;
	if (add_val != null) {
		if (object == "document") {
			target = target + "?type=" + rtrim(add_val, '#');
		}
	}
	$('#form_dialog').dialog('option', 'title', title);
	$('#form_dialog').dialog('option', 'buttons', {
		'Save': function() {
			if ($('#' + form).validationEngine('validate')) {
				$('#' + form).submit();
			}
		},
		'Cancel': function() {
			$('#' + form).validationEngine('hideAll');
			$(this).dialog('close');
		}
	});		
	$.get(target, function(page_data) {
		$('#form_dialog').html(page_data);
		$('#form_dialog').dialog('open');
		$('#' + form).validationEngine('attach');
	});
}

function show_login_dialog() {
	$('#login_dialog').dialog('option', 'title', 'Administration Login');
	$('#login_dialog').dialog('option', 'buttons', {
		'Login': function() {
			if ($('#login_form').validationEngine('validate')) {
				$.post('inc/login_process_alt.php', $('#login_form').serialize(),
					function(page_data) {
						show_login_result(page_data, true);
					}	
				);
			}
		},
		'Cancel': function() {
			$('#login_form').validationEngine('hideAll');
			$(this).dialog('close');
		}
	});
	$.get('inc/login_form_alt.php', function(page_data) {
		$('#login_dialog').html(page_data);
		$('#login_dialog').dialog('open');
		$('#login_form').validationEngine('attach');
	});
}

function show_login_result(page_data, login_flag) {
	var success = (page_data.indexOf('ERROR') == -1) ? true : false;
	var title = (success) ? "Success" : "Failed";
	$('#info_dialog').dialog('option', 'title', title);
	$('#info_dialog').dialog('option', 'buttons', {
		'OK': function() {
			if (success == true) {
				if (login_flag) {
					$('#login_dialog').dialog('close');
				}
				load_content('menu', 'inc/menu_display.php', false);
				load_content('left_column_content', 'inc/news_display.php', true);
			}
			$(this).dialog('close');
		}
	});
	$('#info_dialog').html(page_data);
	$('#info_dialog').dialog('open');
	return false;
}

function do_logout() {
	$.get('inc/logout_process_alt.php', function(page_data) {
		show_login_result(page_data, false);
	});
}

// process admin form request and constructs the input form appropriately
// if no update div specified, default to main content div
function show_form_dialog(object, action, id, update_div, title_text, params) {
	var add_val = (params != "undefined") ? params : null;
	if (object != "register" && object != "subscription") {
		if (update_div == null) {
			update_div = "left_column_content";
		}
	}
	var form = object + "_form";
	var proc = object + "_process.php";
	var title;
	if (typeof(title_text) == 'undefined') {
		title = capitalize(action) + " " + capitalize(object);
	} else {
		title = title_text;
	}
	var target = "inc/" + object + "_form.php?action=" + action + "&id=" + id + "&add_val=" + add_val;
	// process additional parameter
	if (add_val != null) {
		if (object == "document") {
			target = target + "?type=" + rtrim(add_val, '#');
		}
	}
	if (action != "delete") {
		$('#form_dialog').dialog('option', 'title', title);
		$('#form_dialog').dialog('option', 'buttons', {
			'Save': function() {
				if ($('#' + form).validationEngine('validate')) {
					$.post('inc/' + proc, $('#' + form).serialize(),
						function(page_data) {
							show_info(page_data, object, action, id, update_div);
						}	
					);
				}
			},
			'Cancel': function() {
				$('#' + form).validationEngine('hideAll');
				$(this).dialog('close');
			}
		});		
		$.get(target, function(page_data) {
			$('#form_dialog').html(page_data);
			$('#form_dialog').dialog('open');
			$('#' + form).validationEngine('attach');
		});
	} else {
		$('#conf_dialog').dialog('option', 'title', title);
		$('#conf_dialog').dialog('option', 'buttons', {
			'Yes': function() {
				$.post('inc/' + proc, { action: action, id: id },
					function(page_data) {
						show_info(page_data, object, action, id, update_div);
					}
				);
				$(this).dialog('close');
			},
			'No': function() {
				$(this).dialog('close');
			}
		});
		$('#conf_dialog').html('<p style="text-align: center;">Are you sure?</p>');
		$('#conf_dialog').dialog('open');
	}
	return false;
}

// constructs and displays admin operation complete (or failed) dialog
// called from show_form_dialog function
function show_info(page_data, object, action, id, update_div) {
	if (update_div == null) update_div = "left_column_content";
	var success = (page_data.indexOf('ERROR') == -1) ? true : false;
	var update_page = 'inc/' + object + "_display.php";
	var title = (success) ? "Success!" : "ERROR";
	$('#info_dialog').dialog('option', 'title', title);
	$('#info_dialog').dialog('option', 'buttons', {
		'OK': function() {
			if (success == true) {
				$('#form_dialog').dialog('close');
				if (object != "register" && object != "subscription") {
					if (update_div != null) {
						load_content(update_div, update_page, true);
					}
				}
			}
			$(this).dialog('close');
		}
	});
	$('#info_dialog').html(page_data);
	$('#info_dialog').dialog('open');
	return false;
}

// returns the specified query string (key) value
function get_query_string(key) {
	key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
	var query_string = regex.exec(window.location.href);
	if(query_string == null) {
		return null;
	} else {
		return query_string[1];
	}
}

// capitalizes the first letter of the supplied string (used mainly
// to create dialog title bars)
function capitalize(in_string) {
	return in_string.charAt(0).toUpperCase() + 
		in_string.substring(1).toLowerCase();
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}
 
function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
 
function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
