iD.ui.intro.startEditing = function(context, reveal) { var event = d3.dispatch('done', 'startEditing'), modal, timeouts = []; var step = { title: 'intro.startediting.title' }; function timeout(f, t) { timeouts.push(window.setTimeout(f, t)); } step.enter = function() { reveal('.map-control.help-control', t('intro.startediting.help')); timeout(function() { reveal('#bar button.save', t('intro.startediting.save')); }, 3500); timeout(function() { reveal('#surface'); }, 7000); timeout(function() { modal = iD.ui.modal(context.container()); modal.select('.modal') .attr('class', 'modal-splash modal col6'); modal.selectAll('.close').remove(); var startbutton = modal.select('.content') .attr('class', 'fillL') .append('button') .attr('class', 'modal-section huge-modal-button') .on('click', function() { modal.remove(); }); startbutton.append('div') .attr('class','illustration'); startbutton.append('h2') .text(t('intro.startediting.start')); event.startEditing(); }, 7500); }; step.exit = function() { if (modal) modal.remove(); timeouts.forEach(window.clearTimeout); }; return d3.rebind(step, event, 'on'); };