var rules = {
	'#sidebar .menuitem': function(elt) {
		elt.onmouseover = function() {
				Element.addClassName(elt, 'menuitemhover');
			};
		elt.onmouseout = function() {
			Element.removeClassName(elt, 'menuitemhover');
			};
	},
	'form.focusonload': function(elt) {
		// Fix tab behavior
		//var index = 1;
		//for (var i = 0; i < elt.elements.length; ++i)
		//	if ((!elt.elements[i].tagName.toLowerCase() == 'input' || elt.elements[i].type != 'hidden') && elt.elements[i].name)
		//		elt.elements[i].tabIndex = index++;
		Form.focusFirstElement(elt);
	},

	'input.datepicker': function(elt) {
		new Control.DatePicker(elt, { icon: '/admin/includes/images/calendar.png' });
	},
	'input.datetimepicker': function(elt) {
		new Control.DatePicker(elt, { icon: '/admin/includes/images/calendar.png', timePicker: true, timePickerAdjacent: true });
	},
	'input.colorpicker': function(elt) {
		new Control.ColorPicker(elt, { icon: '/admin/includes/images/blank.gif' });
	},
	'input.filechooser': function(elt) {
		new Control.FileChooser(elt, listUserFiles, {
				icon: '/admin/includes/images/filechooser.png',
				parentImage: '/admin/includes/images/parent.gif',
				fileImage: '/admin/includes/images/file.gif',
				directoryImage: '/admin/includes/images/directory.gif'
			});
	},

	// Autocomplete boxes
	'.authorautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/authors/ajaxSearch.php', { paramName: 'token' });
	},
	'.userautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/users/ajaxSearch.php', { paramName: 'token' });
	},
	'.publicationautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/publications/ajaxSearch.php', { paramName: 'token' });
	},
	'.offerautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/offers/ajaxSearch.php', { paramName: 'token' });
	},
	'.productautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/products/ajaxSearch.php', { paramName: 'token' });
	},
	'.subscriptionautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/subscriptions/ajaxSearch.php', { paramName: 'token' });
	},
	'.brokerautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/brokers/ajaxSearch.php', { paramName: 'token' });
	},
	'.eventautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/events/ajaxSearch.php', { paramName: 'token' });
	},
	'.wordautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/glossary/ajaxSearch.php', { paramName: 'token' });
	},
	'.companyautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/companies/ajaxSearch.php', { paramName: 'token' });
	},
	'.feedautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/feeds/ajaxSearch.php', { paramName: 'token' });
	},
	'.pollautocomplete': function(elt) {
		var updateList = document.createElement('div');
		Element.hide(updateList);
		document.body.appendChild(updateList);
		new Ajax.Autocompleter(elt, updateList, '/admin/polls/ajaxSearch.php', { paramName: 'token' });
	},

	// Sortable lists
	'.sortable': function(elt) {
		var lastChanged = null;
		Sortable.create(elt, {
			onChange: function(item) { lastChanged = item; },
			onUpdate: function(cont) {
					newOrder = getElementOrder(cont, 'li', lastChanged);
					objDetails = getObjectDetails(lastChanged.id);
					changeOrder(objDetails[0], objDetails[1], newOrder, function() {
							highlightChildren(cont);
						});
				}
			});
	},
	'.sortable li': function(elt) {
		setSortableItemBehavior(elt);
	},
	'.prioritizable': function(elt) {
		var lastChanged = null;
		Sortable.create(elt, {
			onChange: function(item) { lastChanged = item; },
			onUpdate: function(cont) {
					newOrder = getElementOrder(cont, 'li', lastChanged, true);
					objDetails = getObjectDetails(lastChanged.id);
					changeOrder(objDetails[0], objDetails[1], newOrder, function() {
							highlightChildren(cont);
						});
				}
			});
	},
	'.prioritizable li': function(elt) {
		setSortableItemBehavior(elt, 'editbycat.php');
	},

	'.treelist': function (elt) {
		new Control.TreeList(elt, {
			topOffset: 5,
			collapseIcon: '/admin/includes/images/down_arrow_outline.gif',
			collapseIconHover: '/admin/includes/images/down_arrow_filled.gif',
			expandIcon: '/admin/includes/images/right_arrow_outline.gif',
			expandIconHover: '/admin/includes/images/right_arrow_filled.gif'
			});
	}
};
Behaviour.register(rules);

if (typeof(tinyMCE) != 'undefined') {
	var isIE = (navigator.appName == "Microsoft Internet Explorer");
	tinyMCE.init({
		mode : "textareas",
		editor_selector: "richtext",
		content_css: "/css/template.css",
		theme : "advanced",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,numlist,bullist,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,separator,forecolor,backcolor,separator,hr,image,table,separator,removeformat,cleanup,separator,code",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		auto_cleanup_word: false,
		plugins : "table,paste,save,advhr,imagebrowser,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu,fullscreen",
		plugin_insertdate_dateFormat : "%m/%d/%Y",
		plugin_insertdate_timeFormat : "%H:%M:%S",
		extended_valid_elements : "object[width|height|classid|codebase|type],param[name|value],embed[src|type|width|height|flashvars|wmode],a[name|href|target=_blank|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
		paste_auto_cleanup_on_paste : isIE,
		paste_convert_headers_to_strong : isIE
	});

	tinyMCE.init({
		mode : "textareas",
		editor_selector: "htmlrichtext",
		content_css: "/css/template.css",
		theme : "advanced",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_buttons1 : "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,numlist,bullist,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,separator,forecolor,backcolor,separator,hr,image,table,separator,removeformat,cleanup,separator,code",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		plugins : "save,advlink,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu,fullscreen",
		plugin_insertdate_dateFormat : "%m/%d/%Y",
		plugin_insertdate_timeFormat : "%H:%M:%S",
		extended_valid_elements : "object[width|height|classid|codebase|type],param[name|value],embed[src|type|width|height|flashvars|wmode],a[name|href|target=_blank|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
		paste_auto_cleanup_on_paste : true,
		paste_convert_headers_to_strong : isIE
	});

	tinyMCE.init({
		mode : "textareas",
		editor_selector: "simplerichtext",
		content_css: "/css/template.css",
		theme : "advanced",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_buttons1 : "bold,italic,underline,separator,removeformat,cleanup,separator,code",
		theme_advanced_buttons2 : "",
		theme_advanced_buttons3 : "",
		plugins : "save,advlink,,insertdatetime,preview,zoom,flash,searchreplace,print,contextmenu,fullscreen",
		plugin_insertdate_dateFormat : "%m/%d/%Y",
		plugin_insertdate_timeFormat : "%H:%M:%S",
		extended_valid_elements : "object[width|height|classid|codebase|type],param[name|value],embed[src|type|width|height|flashvars|wmode],a[name|href|target=_blank|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
		paste_auto_cleanup_on_paste : true,
		paste_convert_headers_to_strong : isIE
	});
}

function listUserFiles(directory, callback) {
	new Ajax.Request('/admin/images/ajax.php', {
			parameters: 'a=listdir&d=' + (directory || ''),
			onComplete: function(transport) {
				try {
					callback(eval('(' + transport.responseText + ')'));
				} catch(e) {
					callback({status:'error'});
				}
			}
		});
}

