if (!console)
    var console = {log: function(){}, trace: function(){}};


function makeAjax(evt) {
	evt = evt || window.event;

	var link;
	if (evt.target) 
		link = evt.target;
	else if (evt.srcElement) 
		var targ = evt.srcElement;

	if (!link) {
		link = document.createElement('a');
		link.href = targ;
	}
	if (link.nodeType == 3) // defeat Safari bug
		link = link.parentNode; // make it an ajax link

	new Ajax.Request(link.href, {
		asynchronous:true, 
		evalScripts:true, 
		onSuccess: function(t) { removeWidget(); },
		onFailure: function(t) { removeWidget(); alert('failure:'+t.responseText) }
	}, false); 
	return false;
}

var SiteTree = {
	area : null,
	
	init : function() {
		SiteTree.area = $('site_tree');
		if(!SiteTree.area) {
			return false;
		}
		
		
	}
}

var ContentTree = {
	
	init : function() {
		var trees = $('content_tree_root').getElementsByTagName('ul');
		
		for(var i=0, lTrees=trees.length; i<lTrees;i++) {
			var ul = $(trees[i]);

			var children = ul.getElementsByTagName('li');
			for (var j = 0, lChildren = children.length; j < lChildren; j++) {
				var li = children[j];

				li = $(li);
				if(li.getElementsByTagName('ul')[0]) {
					ContentTree.initLiAsParent(li);
				}
				
				actions = li.select('.content-tree-actions')[0];
				
				actions.hide();
				
				workingZone = li.select('.pageActions')[0];
				workingZone.actions = actions;
				
	
				workingZone.onmouseover = function() { 
					this.actions.show();
				};
				workingZone.onmouseout = function() { 
					this.actions.hide()
				};
			}

			ContentTree.sort(ul);
		}

		var noticeDiv = document.createElement('div');
		Element.extend(noticeDiv);
		noticeDiv.className = 'ajax-notice-div';
		noticeDiv.style['display'] = 'none';
		document.body.appendChild(noticeDiv);
	},
	
	sort : function(list) {
		Sortable.create(list.id, {handle:'action-move', onUpdate:ContentTree.saveOrder});
	},
	
	saveOrder : function(list) {
		new Ajax.Request('/admin/cmspages/reorder/' + list.getAttribute('page_id'),
				{onComplete: function(t) { console.log(t.responseText);},
				 parameters:Sortable.serialize(list.id),
				 asynchronous:true}
			  );
	},
	
	moveNodeUp : function(element) {
		element = $(element);
		element.select('.content-tree-actions')[0].hide();
		if(element.previous('li')) 
		element.previous('li').insert({before: element.remove()});
		ContentTree.saveOrder(element.parentNode);
	},
	
	moveNodeDown : function(element) {
		element = $(element);
		if(element.next('li')) 
		element.next('li').insert({after: element.remove()});
		ContentTree.saveOrder(element.parentNode);
	},
	
	initLiAsParent : function(li) {
		if(li.isInit) return;
		li.isInit = true;
		
		li.addClassName('parent');
		
		li.caret = document.createElement('span');
		
		li.insertBefore(li.caret, li.firstChild);
		li.caret = $(li.caret);

		if(li.getAttribute('loadsOpen')) {
			li.isExpanded = true;
			li.caret.className = 'tree-caret tree-open';
		} else {
			li.isExpanded = false;
			$(li.getElementsByTagName('ul')[0]).hide();
			li.caret.className = 'tree-caret tree-closed';
		}

		li.caret.onclick = function() { ContentTree.toggleLiParent(li) };
	},
	
	toggleLiParent : function(li) {
		if(li.isExpanded) {
			li.getElementsByTagName('ul')[0].hide();
			li.caret.className = 'tree-caret tree-closed';
			li.isExpanded = false;
		} else {
			li.caret.className = 'tree-caret tree-open';
			li.getElementsByTagName('ul')[0].show();
			li.isExpanded = true;
		}
	}
	
};


/* to be run once the page is loaded */
function DOMready()
{
	if(explanations = $$('.inline-help')) {
		explanations.each(function(item) {
			var helpIcon = document.createElement('img');
			helpIcon.src="/img/icons/help.png";
			helpIcon.title=item.innerHTML;
			item.parentNode.insertBefore(helpIcon, item);
			item.hide();
		});
	}
	
	if($('content_tree_root')) {
		ContentTree.init();
	}
		
	if($('edit_areas') && tabset) {
		var tabs = new tabset('edit_areas');
		if($('tab_content') && $F('CmspageTitle')) {
			tabs.autoActivate($('tab_content')); // name of tab to auto-select if none exists in the url
		} else {
			tabs.autoActivate($$('.tab')[0]); 
		}
	}
	
	
};

Event.observe(window, 'load', DOMready);

function mouseIsWithin(obj, e) {
	var start = findPos(obj);
	var end = { x : start.x + obj.offsetWidth, y : start.y + obj.offsetHeight };
	var mouse = mousePos(e);

	return (mouse.x > start.x && mouse.x < end.x && mouse.y > start.y && mouse.y < end.y);
};

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {x: curleft, y: curtop};
};

function mousePos(e) {
	var mouse = { x : 0, y : 0};
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		mouse.x = e.pageX;
		mouse.y = e.pageY;
	} else if (e.clientX || e.clientY) {
		mouse.x = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
		mouse.y = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
	}
	return mouse;
}


