/* Copyright (c) 2006-2007, Apple Inc. All rights reserved. */

function prepare(inAlwaysRun) {
	//uid().setValue('groups/workgroup/wiki/welcome'); // we can auth against this
	if (window.parent && parent.addService) parent.addService('users', '/users/');
	serverui(); // force shared instance creation
	if (window.unitTestHandler && (!inAlwaysRun)) return true;
	// patch the checkSessionAuthorization to remove the path from the args
	var s = server(); // force shared instance creation
	s.beforeuserweblog_checkSessionAuthorization = s.checkSessionAuthorization;
	s.checkSessionAuthorization = function(inCallback, inOptAction, inOptPath) {
		s.beforeuserweblog_checkSessionAuthorization(inCallback, inOptAction);
	}
	// patch login method to remove the path from the args
	s.beforeuserweblog_login = s.login;
	s.login = function(inCallback, inUsername, inPassword, inOptAuthorizePath, inOptPersistent) {
		s.beforeuserweblog_login(inCallback, inUsername, inPassword, null, inOptPersistent);
	}
	// patch some UID stuff -- otherwise we set the test cookie (cookies=1) in /users/list
	uid().mBaseLocation = '/';
	// Create Your Weblog button
	var createBlogButton = Builder.node('input', {type:'button', name:'create_blog_button', id:'create_blog_button', value:Loc.weblog_createblog_dialog_header});
	$('content_extras_column').appendChild(Builder.node('form', {method:'get', action:'#'}, [createBlogButton]));
	createBlogButton.onclick = clickedCreateBlogButton;
	if (server().sessionID != 'unauthenticated') {
		$('logout_button').show();
		$('logout_button').down('a').onclick = logout;
	}
	gNotifier = new Notifier();
	gPopupManager = new PopupManager();
	if ($('paginator_choose')) paginator();
	Element.enableLinkIfAvailable($$('#groups_button a')[0]);
	Element.enableLinkIfAvailable($$('#webmail_button a')[0], 'squirrelmail');
}


function logout() {
	document.cookie = 'sessionID=unauthenticated; path=/';
	gNotifier.printAtPage('loggedOut');
	return false;
}

function clickedCreateBlogButton() {
	var authenticatedCallback = function() {
		serverui().ensureLogin([showAdminBlogDialog, function() {createBlogForUser()}], 'admin', true);
	}
	if (server().sessionID == 'unauthenticated') {
		serverui().ensureLogin(authenticatedCallback, 'read', false, true);
	}
	else {
		authenticatedCallback();
	}
}

function showAdminBlogDialog() {
	if (!$('weblog_createblog_dialog')) {
		targetedDialogManager().drawDialog('weblog_createblog_dialog', [
			{label:'weblog_createblog_username', contents:'<input type="text" id="weblog_createblog_dialog_username">'}
		], 'weblog_createblog_ok');
	}
	var dialogCallback = function() {
		createBlogForUser($F('weblog_createblog_dialog_username'));
	}
	targetedDialogManager().show('weblog_createblog_dialog', null, dialogCallback, 'create_blog_button');
}

function createBlogForUser(inOptUsername) {
	var createdBlogCallback = function(inRequestObj, inResponseObj) {
		gNotifier.printAtPage('weblog_createblog_confirm', inResponseObj);
	}
	var errorCallback = function(inRequestObj, inFaultCode, inFaultString) {
		if (inFaultCode == 19) {
			alert(Loc.weblog_createblog_error_notallowed);
		}
		else {
			alert(Loc.weblog_createblog_error_misc);
		}
	}
	var r = new XMLRPCRequest(server(), 'provisionUser', [createdBlogCallback, errorCallback], inOptUsername);
}

if (window.loaded) loaded('user_weblog_listing.js');