function display(e) {
	if (e) {
		$(e).style.display = ($(e).style.display == "none") ? "block":"none";

		if (currtype != undefined) {
			currtype.style.display = "none";
		}

		currtype = $(e);
	} else {
		currtype.style.display = "none";
		currtype = undefined;
	}
}

function addnewdiv() {
	var argv = addnewdiv.arguments;
	var argc = argv.length;

	var type = (argc > 0) ? argv[0]:$('addblock').value;
	elementnumber = (argc > 0) ? argv[1]:(elementnumber+1);

	if (argc == 0) {
		eval("new Ajax.Request('/admin/divelement.aspx', { method:'post', postBody:'page=" + pageid + "&layout=" + divnumber + "&type=" + type + "&elementid=" + elementnumber + "'});");
	}

// delblock:onclick=" if (confirm(\'Really delete?\')) delblock(this,\'element\',' + elementnumber + '); return false;
// blockform:onchange="display(this.value)

	$('blocks').appendChild(Builder.node('li', { id:'blocks_'+elementnumber }, [
		Builder.node('div', { className:'blockcontrol' }, [
			Builder.node('a', { href:'javascript://', className:'grab' }, 'move block'),
			Builder.node('a', { href:'javascript://', className:'delblock'}, 'delete block'),
		]), Builder.node('ul', { id:'blocks_'+elementnumber+'_holder', style:'border:1px dotted #e74f00; margin:10px 10px 0 10px; padding:0;'}),
		Builder.node('div', { style:'border:1px dotted #e74f00; border-top:0; margin:0 10px 10px 10px; padding:5px 10px;' }, [
			Builder.node('form', { id:'f_'+elementnumber }, [
				Builder.node('p', { style:'float:left;'}, 'Add element: '),
				Builder.node('select', { id:'types_blocks_'+elementnumber+'_holder', className:'blockform' }, [
					Builder.node('option', { value:'', selected:'selected' }, ''),					Builder.node('option', { value:'titlespan_' +elementnumber }, 'Title'),
					Builder.node('option', { value:'para_'+elementnumber }, 'Paragraph'),
					Builder.node('option', { value:'ulist_'+elementnumber }, 'Bulleted list'),
					Builder.node('option', { value:'olist_'+elementnumber }, 'Ordered list'),
					Builder.node('option', { value:'image_'+elementnumber }, 'Image'),
					Builder.node('option', { value:'background_'+elementnumber }, 'Background image'),
					Builder.node('option', { value:'anchor_'+elementnumber }, 'Inline anchor'),
					Builder.node('option', { value:'form_'+elementnumber }, 'Predefined form'),
					Builder.node('option', { value:'script_'+elementnumber },'Predefined script')
				])				
			])
		])
	]));

	var inject = '<form id="titlespan_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><input type="text" name="content" /></p><input type="hidden" name="type" value="h3" /><input type="submit" name="sub" value="Add title" /></form>\n';

	inject += '<form id="para_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><textarea name="content" rows="10" cols="50"></textarea></p><input type="hidden" name="type" value="p" /><input type="submit" name="sub" value="Add paragraph" /></form>\n';

	inject += '<form id="ulist_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><textarea name="content" rows="10" cols="50"></textarea></p><input type="hidden" name="type" value="ul" /><input type="submit" name="sub" value="Add list" /></form>\n';

	inject += '<form id="olist_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><textarea name="content" rows="10" cols="50"></textarea></p><input type="hidden" name="type" value="ol" /><input type="submit" name="sub" value="Add list" /></form>\n';

	inject += '<form id="image_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><input type="text" name="content" /></p><input type="hidden" name="type" value="img" /><input type="submit" name="sub" value="Add image" /></form>\n';

	inject += '<form id="background_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><input type="text" name="content" /></p><input type="hidden" name="type" value="background" /><input type="submit" name="sub" value="Add background" /></form>\n';

	inject += '<form id="anchor_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><input type="text" name="content" /></p><input type="hidden" name="type" value="a" /><input type="submit" name="sub" value="Add anchor" /></form>\n';

	inject += '<form id="form_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><select name="content"><option></option><option value="expression">Expression of interest</option><option value="contact">Contact us</option><option value="searchpublications">Publications Search</option><option value="allingoodhealth">Subscribe to All in Good Health</option><option value="searchlinks">Links Search</option><option value="searchresources">Resources Gateway Publications Search</option><option value="joinearlyyearsnetwork">Join Early Years Network</option><option value="joinsexualhealthnetwork">Join Sexual Health Network</option><option value="joinhealthimpactassessmentnetwork">Join Health Impact Assessment Network</option><option value="literaturesearch">Literature Search</option></select></p><input type="hidden" name="type" value="form" /><input type="submit" name="sub" value="Add form" /></form>\n';

	inject += '<form id="script_' + elementnumber + '" style="display:none;" onsubmit="addblock(this,\'blocks_' + elementnumber + '_holder\',' + elementnumber + '); return false;"><p><select name="content"><option></option><option value="prcLatestNews 0">Latest News</option><option value="prcLatestNews 1">Latest Media</option><option value="prcListStaffComms">Media Contacts</option><option value="prcGoldfishCam">Gold Fish Cam</option></select></p><input type="hidden" name="type" value="script" /><input type="submit" name="sub" value="Add script" /></form>\n';

	new Insertion.After('f_'+elementnumber, inject);

	Sortable.create('blocks', {
		dropOnEmpty:false,
		handle:'grab',
		onUpdate:function() {
			eval("new Ajax.Request('/admin/orderelements.aspx', { method:'post', postBody:'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementnumber + "&' + Sortable.serialize('blocks',{name:'order'})});");
		}
	});

	$('addblock').options[0].selected = true
}

function addblock(f,holder,elementid) {
	var node;
	var type = f.type.value;
	var content = f.content.value;

	if ((content != undefined) && (content != "")) {
		blocknumber++;

		new Ajax.Request('/admin/saveblock.aspx', { method:'post', postBody:'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&blockid=" + blocknumber + "&type=" + type + "&content=" + escape(encodeURIComponent(content)) + "'});
		
		var buildnode = ((type != "img") && (type != "form") && (type != "script")) ? type:'p';

		if ((type == "ul") || (type == "ol")) {
			var lines = content.split('\n');
			content = "<li>" + lines.join("</li><li>") + "</li>";
		} else if ((type == "form") || (type == "script")) {
			content = f.content.options[f.content.selectedIndex].text;
		} else {
			content = content.replace(/\n/gi, '<br />');
		}
		
		$(holder).appendChild(Builder.node('li', { id:'item_'+blocknumber }, [
			Builder.node('div', { className:'elementcontrol' }, [
				Builder.node('img', { src:'/images/icons/arrow_out.png', className:'handle' }),
				Builder.node('img', { src:'/images/icons/page_white_edit.png', id:'edititem_'+blocknumber, className:'edit' }),
				Builder.node('img', { src:'/images/icons/cut.png', className:'cut' }),
				Builder.node('img', { src:'/images/icons/page_white_copy.png', className:'copy' }),
				Builder.node('img', { src:'/images/icons/page_white_paste.png', className:'paste' }),
				Builder.node('img', { src:'/images/icons/bin.png', className:'del' })
			]), Builder.node(buildnode, { id:'content_'+blocknumber, className:type+' padded' }, content)
		]));

		Sortable.create(holder, {
			dropOnEmpty:false,
			handle:'handle',
			onUpdate:function() {
				eval("new Ajax.Request('/admin/orderblocks.aspx', { method:'post', postBody:'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&' + Sortable.serialize('" + holder + "', {name:'order'})});");
			}
		});

		Sortable.create('blocks', {
			dropOnEmpty:false,
			handle:'grab',
			onUpdate:function() {
				eval("new Ajax.Request('/admin/orderelements.aspx', { method:'post', postBody:'page=" + pageid + "&layout=" + divnumber + "&' + Sortable.serialize('blocks', {name:'order'})});");
			}
		});

		if ((type == "p") || (type == "ul") || (type == "ol")) {
			new Ajax.InPlaceEditor($('content_'+blocknumber), '/admin/saveblock.aspx', { callback: function(form, value) { return 'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&blockid=" + blocknumber + "&type=" + type + "&content=' + escape(encodeURIComponent(value)) }, clickToEditText:'', externalControl: 'edititem_'+blocknumber, cols: 50, rows: 10, okText:'Save', ajaxOptions: {method: 'post'} });
		} else if (type == "script") {
			new Ajax.InPlaceCollectionEditor($('content_'+blocknumber), '/admin/saveblock.aspx', { collection: [['prc_LatestNews','Latest news'],['prc_LatestNews','Latest events']], callback: function(form, value) { return 'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&blockid=" + blocknumber + "&type=" + type + "&content=' + escape(encodeURIComponent(value)) }, clickToEditText:'', externalControl: 'edititem_'+blocknumber, okText:'Save', ajaxOptions: {method: 'post'} });
		} else if (type == "form") {
			new Ajax.InPlaceCollectionEditor($('content_'+blocknumber), '/admin/saveblock.aspx', { collection: [['expression','Expression of interest'],['contact','Contact us']], callback: function(form, value) { return 'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&blockid=" + blocknumber + "&type=" + type + "&content=' + escape(encodeURIComponent(value)) }, clickToEditText:'', externalControl: 'edititem_'+blocknumber, okText:'Save', ajaxOptions: {method: 'post'} });
		} else {
			new Ajax.InPlaceEditor($('content_'+blocknumber), '/admin/saveblock.aspx', { callback: function(form, value) { return 'page=" + pageid + "&layout=" + divnumber + "&elementid=" + elementid + "&blockid=" + blocknumber + "&type=" + type + "&content=' + escape(encodeURIComponent(value)) }, clickToEditText:'', externalControl: 'edititem_'+blocknumber, okText:'Save', ajaxOptions: {method: 'post'} });
		}

		f.content.value = '';
		f.style.display = 'none';
		$('types_' + holder).options[0].selected = true;
		currtype = undefined;
	}

	return false;
}

function delblock(e) {
	var li = e.parentNode.parentNode.id;
	var parts = li.split('_');
	var what = parts[0];
	var id = parts[1];

	Element.remove(li);
	new Ajax.Request('/admin/ajaxdelete.aspx', { method:'post', postBody:'table=" + what + "&page=" + pageid + "&layout=" + divnumber + "&deleteid=" + elementid + "' });
}