window.addEvent('domready', function() {
	
	var outslide = new Fx.Slide('outfilediv', {duration: 'normal'}).hide();
	
	var adddiv = $('adding'),
	    editdiv = $('editing');
	editdiv.setStyle('display', 'none');
	
	fillext = function() {
		value = $('ext').get('value').trim();
		if( value == '' )
			value = '';
		else
			value = '.' + value;
		$$('.extspan').each(function(el){ el.set('text', value); });
	}
	$('ext').addEvent('keyup', function(e){
		fillext();
	});
	
	editme = function(ele) {
		editedlis = ele.getElement('ul').getElements('li')
		$('editt').set('value', editedlis[0].get('text'));
		$('editf').set('value', editedlis[1].getElement('code').get('text'));
		adddiv.setStyle('display', 'none');
		editdiv.setStyle('display', '').highlight();
	}
	$('editform').addEvent('submit', function(e){
		var title = $('editt').get('value');
		var file = $('editf').get('value');
		if (!title) { $('editt').highlight('#f00').focus(); return false; }
		if (!file) { $('editf').highlight('#f00').focus(); return false; }
		editedlis[0].set('text', title);
		editedlis[1].getElement('code').set('text', file);
		editdiv.setStyle('display', 'none');
		adddiv.setStyle('display', '');
		return false;
	});
	$('editcancel').addEvent('click', function(e){
		editdiv.setStyle('display', 'none');
		adddiv.setStyle('display', '');
	});
	
	var sort = new Sortables('.sortable', {
		handle: '.dhand',
		constrain: true,
		clone: true
	});
	
	var i = 1;
	addpart = function() {
		var title = $('addt').get('value');
		var file = $('addf').get('value');
		if (!title) { $('addt').highlight('#f00').focus(); return; }
		if (!file) { $('addf').highlight('#f00').focus(); return; }
		
		var contentul = new Element('ul', {'class':'licont'});
		
		new Element('li', {text: title}).injectInside(contentul);
		var fileli = new Element('li');
		new Element('code', {text: file}).injectInside(fileli);
		fileli.injectInside(contentul);
		
		var li = new Element('li', {id: 'item-'+i});
		contentul.injectInside(li);
		
		var deleter = new Element('div', {id:'del-'+i, 'class':'deleter'});
		deleter.inject(li, 'top');
		deleter.addEvent('click', function(e) {
			li.destroy();
		});
		var editor = new Element('div', {id:'edit-'+i, 'class':'editor'});
		editor.inject(li, 'top');
		editor.addEvent('click', function(e) {
			editme(li);
		});
		var handle = new Element('div', {id:'dhand-'+i, 'class':'dhand'});
		handle.inject(li, 'top');
		$('addf').set('value', '');
		$('addt').set('value', '').focus();
		$('sortable').adopt(li);
		li.highlight();
		sort.addItems(li);
		i++;
	}
	
	$('addform').addEvent('submit', function(e){
		addpart();
		return false;
	});
	
	var slider = $('progress');
	new Slider(slider, slider.getElement('.handle'), {
		steps: 20,
		range: [0, 100],
		snap: true,
		onChange: function(value){
			$('proglabel').set('text', value + ' %');
		}
	}).set(0);
	
	fillext();
	
	/* =========== GENERATION =========== */
	clean = function(str){
		return str.trim().replace(/(['\\])/ig,"\\$1");
	}
	$('validate').addEvent('click', function(e){
		ext = $('ext').get('value').trim();
		if( ext != '' ){ ext = '.' + ext; }
		buffer = '{\n' +
		"'title': '" + clean($('title').get('value')) + "',\n" +
		"'size': 'mini',\n" +
		"'progress': '" + clean($('proglabel').get('text').replace(' %', '')) + "',\n" +
		"'intro': '" + clean($('intro').get('value')) + ext + "',\n" +
		"'conclu': '" + clean($('concl').get('value')) + ext + "',\n" +
		"'subparts': [\n";
		
		
		$$('#sortable > li').each(function(group){
			childlis = group.getElement('ul').getElements('li');
			buffer += '    {\n' +
			"        'title': '" + clean(childlis[0].get('text')) + ext + "',\n" +
			"        'text': '" + clean(childlis[1].getElement('code').get('text')) + ext + "'\n" +
			'    },\n';
		});
		
		buffer += "],\n'postproc': '" + clean($('postproc').get('value'))+  "',\n" +
		"'output': '" + clean($('output').get('value')) + "',\n" +
		'}\n';
		
		$('outfile').set('value', buffer);
		outslide.slideIn('vertical');
		return false;
	});
});
