
function mi_show(obj) {
	var thisObj = document.getElementById(obj);
	if (thisObj) {
		thisObj.style.display = "block";
	}
}

function mi_hide(obj) {
	var thisObj = document.getElementById(obj);
	if (thisObj) {
		thisObj.style.display = "none";
	}
}





 function showAsEditable(obj, clear){

     var newClassName = '';
     var a = obj.className.split(' ');
     for (var i = 0; i < a.length; i++) {
       if (a[i] != 'editable') {
         if (i > 0)
           newClassName += ' ';
         newClassName += a[i];
       }
     }
    obj.className = newClassName;
     if (!clear){
          obj.className += ' editable';
     }

 }
 
var ESCAPE = 27
var ENTER = 13
var TAB = 9

var lastEditor = null;

var coordinates = ToolMan.coordinates()
var dragsort = ToolMan.dragsort()




function mi_hideLastEditor() {

	if (lastEditor == null) {

	} else {

		var view = lastEditor.currentView
		var editor = lastEditor.editor

		editor.abandonChanges = false
		editor.style['visibility'] = 'hidden'
		editor.parentNode.style['display'] = 'none';

		editor.value = '' // fixes firefox 1.0 bug
		view.style['visibility'] = 'visible';
		view.style['display'] = view.thisDisplay;
		view.editButton.style['display'] = 'block';
		editor.parentNode.style['display'] = 'none';
		editor.currentView = null;
		lastEditor = null;
	}

}

function join(name, isDoubleClick) {
	var view = document.getElementById(name + "View")
	view.editor = document.getElementById(name + "Edit")
	view.saveButton = document.getElementById(name+"Save")
	view.cancelButton = document.getElementById(name+"Cancel")
	view.editButton = document.getElementById(name+"Click")
	view.container = document.getElementById(name+"Container")


	view.saveButton.editor = view.editor;
	view.cancelButton.editor = view.editor;
	view.editButton.editor = view.editor;
	view.editButton.view = view;
	// view.oldInnerHTML = view.innerHTML;


	var showEditor = function(event) {
		event = fixEvent(event)

		var button = this;
		var view = this.view;
		var editor = view.editor

		mi_hideLastEditor();

		lastEditor = this;

		if (!editor) return true

		if (editor.currentView != null) {
			editor.blur()
		}
		
		
		
		editor.currentView = view
		view.saveButton.currentView = view;
		view.cancelButton.currentView = view;
		view.editButton.currentView = view;


		var topLeft = coordinates.topLeftOffset(view)
		topLeft.reposition(editor)
		if (editor.nodeName == 'TEXTAREA') {
			editor.style['width'] = view.offsetWidth + "px"
			// editor.style['height'] = view.offsetHeight + "px"
		}

		editor.value = view.innerHTML

		button.style['display'] = 'none';


		editor.parentNode.style['display'] = 'block';
		editor.parentNode.style['visibility'] = 'visible';

		editor.style['visibility'] = 'visible'

		view.style['visibility'] = 'hidden'

		view.thisDisplay = view.style['display'];
		view.style['display'] = 'none'
		editor.focus()
		return false
	}

	if (isDoubleClick) {
		view.ondblclick = showEditor
	} else {
		view.editButton.onclick = showEditor
	}

	view.cancelButton.onclick = function(event) {
		event = fixEvent(event)
		var view = this.currentView
		var editor = this.editor

		editor.abandonChanges = false
		editor.style['visibility'] = 'hidden'
		editor.parentNode.style['display'] = 'none';


		editor.value = '' // fixes firefox 1.0 bug

		view.style['visibility'] = 'visible';
		view.style['display'] = view.thisDisplay;

		view.editButton.style['display'] = 'block';

		editor.parentNode.style['display'] = 'none';

		editor.currentView = null;

	}

	view.saveButton.onclick = function(event) {

		event = fixEvent(event)
		var view = this.currentView
		var editor = this.editor

		var foo =
		view.innerHTML = editor.value;

		var editorForm = editor.parentNode;
		editorForm.xajax();

		editor.abandonChanges = false
		editor.style['visibility'] = 'hidden'
		editor.value = '' // fixes firefox 1.0 bug
		editor.parentNode.style['display'] = 'none';

		view.style['visibility'] = 'visible';
		view.style['display'] = view.thisDisplay;

		view.editButton.style['display'] = 'block';

		editor.currentView = null

	}

	view.container.onmouseover = function (event) {
		if (this.timeoutID) {
			clearTimeout(this.timeoutID);
			this.timeoutID = null;
		}
		event = fixEvent(event)
		view.editButton.style['display'] = 'block';
		showAsEditable(this, false);
	}


	view.container.onmouseout = function (event) {
		if (this.timeoutID) {
			clearTimeout(this.timeoutID);
		}
		this.timeoutID = setTimeout ( "showAsEditable(document.getElementById('"+this.id+"'), true); document.getElementById('"+view.editButton.id+"').style['display'] = 'none';", 500 );
//		alertTimerId =
//		event = fixEvent(event)
//		view.editButton.style['display'] = 'none';
//		showAsEditable(this, true);
	}



	/*
	view.editor.onblur = function(event) {
		event = fixEvent(event)

		var editor = event.target
		var view = editor.currentView

		if (!editor.abandonChanges) {
			view.innerHTML = editor.value;

			// var editorForm = editor.parentNode;
			// editorForm.xajax();

		}
		editor.abandonChanges = false
		editor.style['visibility'] = 'hidden'
		editor.value = '' // fixes firefox 1.0 bug
		view.style['visibility'] = 'visible'
		editor.currentView = null

		return true
	}
	*/

	view.editor.onkeydown = function(event) {
		event = fixEvent(event)

		var editor = event.target
		if (event.keyCode == TAB) {
			editor.blur()
			return false
		}
	}

	view.editor.onkeyup = function(event) {
		event = fixEvent(event)

		var editor = event.target
		if (event.keyCode == ESCAPE) {
			editor.abandonChanges = true
			editor.blur()
			return false
		} else if (event.keyCode == TAB) {
			return false
		} else {
			return true
		}
	}

	// TODO: this method is duplicated elsewhere
	function fixEvent(event) {
		if (!event) event = window.event
		if (event.target) {
			if (event.target.nodeType == 3) event.target = event.target.parentNode
		} else if (event.srcElement) {
			event.target = event.srcElement
		}

		return event
	}
}




// -------------------------------------------------
// ASSET FUNCTIONS
// -------------------------------------------------


function isinView(element) {
    var oparent = element.offsetParent;
    var osleft = oID_1.offsetLeft;
    var cleft = oparent.clientWidth;
    if (osleft > cleft) {
    	return false;
    }
    return true;
}

clickedAsset = null;


function rolloverAssetImage(evt) {
	if (clickedAsset) {
		if (clickedAsset.id != this.id) {
			mi_hide(clickedAsset.id+"option");
		}
	}
	mi_show(this.id+"option");
	clickedAsset = this;
}

var lastAsset = null;
var clickedAsset = null;


function hideAssetExpanders(evt) {
	if (clickedAsset) {
		mi_hide(clickedAsset+"option");
	}

}

function rolloffAssetImage(evt) {
	
}

function clickAssetExpander(evt) {
	var showit = 0;


	if (clickedAsset == null) {
		showit = 1;
	} else {
		// hide any other open options
		if (this.asset == clickedAsset) {
			// hide the options
			hide(this.asset+"_box");
			// this.className="assetexpand";
			document.getElementById(clickedAsset+"_expandlink").className="assetcollapse";
			clickedAsset = null;
		} else {
			// hide the options
			hide(clickedAsset+"_box");
			hide(clickedAsset+"_expander");

			document.getElementById(clickedAsset).style.border="1px solid #fff";
			document.getElementById(clickedAsset).style.background = "#fff";

			document.getElementById(clickedAsset+"_expandlink").className="assetexpand";
			showit = 1;
			clickedAsset = this.asset;
		}

	}
	if (showit == 1) {
		mi_show(this.asset+"_box");
		clickedAsset = this.asset;
		document.getElementById(this.asset+"_expandlink").className="assetcollapse";
	} else {
		document.getElementById(this.asset+"_expandlink").className="assetexpand";
	}
}

/*

asset div:
- mouseover event, if not clicked expander link, do nothing, show expander link
- mouseout event, if clicked expander link, do nothing


expander div
- mouseover: nothing
- mousout: nothing
- onclick: if options not shown, show options div, else hide options div


options div
- mouseover: nothing
- mouseout: nothing
- onclick: nothing

*/
function setAssetRollovers() {

	// images...
	if (document.getElementById("boxes")) {
	var x = 0;
	var found = 1;
	while(found == 1) {
		obj = document.getElementById("assetImage"+x);
		if (obj) {
			// asset
			obj.onmouseover=rolloverAssetImage;
			obj.onmouseout=rolloffAssetImage;
			
		} else {
			found = 0;
		}
		x++;
	}
	junkdrawer.restoreListOrder("boxes");
	dragsort.makeListSortable(document.getElementById("boxes"),mi_saveOrder);
	}

	// videos...
	if (document.getElementById("boxes_videos")) {
		var x = 0;
		var found = 1;
		while(found == 1) {
			obj = document.getElementById("assetVideo"+x);
			if (obj) {
				// asset
				obj.onmouseover=rolloverAssetImage;
				obj.onmouseout=rolloffAssetImage;

			} else {
				found = 0;
			}
			x++;
		}
		junkdrawer.restoreListOrder("boxes_videos");
		dragsort.makeListSortable(document.getElementById("boxes_videos"),mi_saveOrder);
	}
	
	// documents...
	if (document.getElementById("boxes_files")) {
		var x = 0;
		var found = 1;
		while(found == 1) {
			obj = document.getElementById("assetFile"+x);
			if (obj) {
				// asset
				obj.onmouseover=rolloverAssetImage;
				obj.onmouseout=rolloffAssetImage;

			} else {
				found = 0;
			}
			x++;
		}
		junkdrawer.restoreListOrder("boxes_files");
		dragsort.makeListSortable(document.getElementById("boxes_files"),mi_saveOrder);
	}

}

var dragsort = ToolMan.dragsort();
var junkdrawer = ToolMan.junkdrawer();

var dragndropped = 0; // did we drag and drop sort?



function mi_saveOrder(item) {
	var group = item.toolManDragGroup
	var list = group.element.parentNode
	var id = list.getAttribute("id")
	if (id == null) return
	group.register('dragend', function() {
		ToolMan.cookies().set("list-" + id, 
				junkdrawer.serializeList(list), 365)
				
		mi_saveAssetOrder(id);
	})
}


function mi_saveAssetOrder(item) {
	if (item == "boxes") {
		//photos
		xajax_miContentSortAsset(xajax.getFormValues("imageSectionForm"));
		
	}

/*
	if (item == "boxes_videos") {
		//photos
		xajax_miContentSortAsset(xajax.getFormValues("videoSectionForm"));
		
	}

	if (item == "boxes_files") {
		//photos
		xajax_miContentSortAsset(xajax.getFormValues("fileSectionForm"));
		
	}
*/
}


// SWFUploader object...
var upload;