// Sortable list methods
function initSortable(name, tag, dir, update, qs, redraw) {
	var props = { tag: tag, overlap: dir, constraint: dir, ghosting: false, onChange: restrictClick };
	qs = qs || "";
	if (qs != "") qs = "&" + qs;
	redraw = redraw == undefined ? true : redraw;
	if (update != undefined) {
		props.onUpdate = function() { if (redraw) redrawSortable(name, tag); new Ajax.Request("/admin/scripts/" + update + "_sort.php", { parameters: 'target=' + name + qs + '&' + Sortable.serialize(name), asynchronous: true }); };
	}
	$(name).onRedraw = function() { redrawSortable(name, tag); };
	var obj = document.getElementById(name);
	if (obj != undefined) {
		var elements = obj.getElementsByTagName("A");
		if (elements.length > 0) {
			for (var i = 0; i < elements.length; i++) {
				elements[i].onmousedown = initClick;
				elements[i].onclick = validateClick;
				elements[i].onmousedown();
			}
		}
		Sortable.create(name, props);
	}
}

function initClick() {
	this.click = true;	
	this.allow = true;
}

function validateClick() {
	return this.allow;
}


function restrictClick(element) {
	if (element != undefined) {
		var elements = element.getElementsByTagName("A");
		if (elements.length > 0) {
			for (var i = 0; i < elements.length; i++) {
				if (elements[i].click) elements[i].allow = false;
			}
		}
	}
}

function redrawSortable(name, tag) {
	var obj = document.getElementById(name);
	if (obj != undefined) {
		var elements = obj.getElementsByTagName(tag);
		if (elements.length > 0) {
			var last = 0;
			for (var i = 0; i < elements.length; i++) {
				if (elements[i].id != "" && (elements[i].className == "sortable_first" || elements[i].className == "sortable_item" || elements[i].className == "sortable_last")) {
					last++;
				}
			}
			var counter = 0;
			for (var i = 0; i < elements.length; i++) {
				if (elements[i].id != "" && (elements[i].className == "sortable_first" || elements[i].className == "sortable_item" || elements[i].className == "sortable_last")) {
					if (counter == last - 1) {
						elements[i].className = "sortable_last";
					} else if (counter == 0) {
						elements[i].className = "sortable_first";
					} else {
						elements[i].className = "sortable_item";
					}
					counter++;
				}
			}
		}
	}
}

function deleteSortable(name, type, id) {
	if (confirm("Are you sure you want to delete this item?")) {
		var item_name = type + "_" + id;
		var param = "id=" + id + "&name=" + name + "&item_name=" + item_name;
		var ajax = new Ajax.Request("/admin/scripts/" + type + "_delete.php", { method: "post", parameters: param, onComplete: deleteSortableComplete, asynchronous: true }); 		
	}
}

function deleteSortableComplete(request) {
	var response = eval('(' + request.responseText + ')');
	switch (response.type) {
		case "success":
			Element.remove(response.message.item);
			$(response.message.name).onRedraw();
			break;
		case "error":
			alert(response.message);
			break;
	}
}

function initToggle(trigger, items, on_text, off_text) {
	$(trigger).items = items;
	$(trigger).on_text = on_text;
	$(trigger).off_text = off_text;
}

function toggleSortableElement(trigger, id, option, type) {
	var param = "trigger=" + trigger + "&id=" + id + "&option=" + option;
	var ajax = new Ajax.Request("/admin/scripts/" + type + "_toggle.php", { method: "post", parameters: param, onComplete: toggleSortableElementComplete, asynchronous: true });
}

function toggleSortableElementComplete(request) {
	var response = eval('(' + request.responseText + ')');
	switch (response.type) {
		case "success":
			params = eval(response.message);
			for (var i = 0; i < $(params.trigger).items.length; i++) {
				if (params.has_option) {
					Element.show($(params.trigger).items[i]);					
				} else {
					Element.hide($(params.trigger).items[i]);					
				}
			}
			if (params.has_option) {
				$(params.trigger).innerHTML = $(params.trigger).on_text;
			} else {
				$(params.trigger).innerHTML = $(params.trigger).off_text;
			}
			break;
		case "error":
			alert(response.message);
			break;
	}
}

// MB: 03-03-2008
//This is is fopr the right hand module that calls page_pagecontnet and deals with the publish/unpublish bug
/*
function initSortableBoxes(name, page_id) {
	Sortable.create(name, { tag: 'div', overlap: 'vertical', constraint: 'vertical', ghosting: false, onUpdate: function() {  new Ajax.Request("/admin/scripts/page_pagecontent_sort.php", { parameters: 'target=' + name + '&page_id=' + page_id + '&' + Sortable.serialize(name), asynchronous: true }); }});	
}
*/


