(function(exports){
	'use strict'
	
	exports.ask_hex = function(prompt, len) {
		var num=ui.ask(prompt);
		if (! num) return "Отменено";
		
		if (! num.match(/^-?[0-9A-Fa-f]+$/)) return "Неверный формат числа";
		if (num.length > len) return "Неверное число (допустимо "+len+" символов)";
		
		return parseInt(num, 16);
	};
	
	
	exports.toHex = function(num, len) {
		var s=""+(~~num).toString(16);
		while (s.length < len)
			s='0'+s;
		return s.toUpperCase();
	}
	
	
	// Распаковать файлы из zip-архива
	exports.unzip = function(zip, dir, files) {
		var args = [ '-d', dir, zip ];
		if (files) files.forEach( function(name) { args.push(name); } );
		if (system.exec( (system.os == 'windows') ? 'utils/unzip.exe' : 'unzip', args, print, print) != 0)
			throw new Error("Unzip failed");
	}
	
	
	// Удалить каталог с подкаталогами и файлами
	exports.rm_r = function(dir) {
		if (! dir.endsWith('/'))
			dir+='/';
		
		var list=fs.readdir(dir);
		list.forEach( function(fname) {
				if (fname.endsWith('/'))
					exports.rm_r(dir+fname); else
					fs.remove(dir+fname);
			} );
		fs.rmdir(dir);
	}
	
})(typeof exports === 'undefined' ? this['_utils_js']={} : exports);
