/*\
title: $:/core/modules/startup/password.js
type: application/javascript
module-type: startup

Password handling

\*/
(function(){

/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";

// Export name and synchronous status
exports.name = "password";
exports.platforms = ["browser"];
exports.after = ["startup"];
exports.synchronous = true;

exports.startup = function() {
	$tw.rootWidget.addEventListener("tm-set-password",function(event) {
		$tw.passwordPrompt.createPrompt({
			serviceName: $tw.language.getString("Encryption/PromptSetPassword"),
			noUserName: true,
			submitText: $tw.language.getString("Encryption/SetPassword"),
			canCancel: true,
			repeatPassword: true,
			callback: function(data) {
				if(data) {
					$tw.crypto.setPassword(data.password);
				}
				return true; // Get rid of the password prompt
			}
		});
	});
	$tw.rootWidget.addEventListener("tm-clear-password",function(event) {
		if($tw.browser) {
			if(!confirm($tw.language.getString("Encryption/ConfirmClearPassword"))) {
				return;
			}
		}
		$tw.crypto.setPassword(null);
	});
	// Ensure that $:/isEncrypted is maintained properly
	$tw.wiki.addEventListener("change",function(changes) {
		if($tw.utils.hop(changes,"$:/isEncrypted")) {
			$tw.crypto.updateCryptoStateTiddler();
		}
	});
};

})();
