function stopEvent(e)
{
	if (e.stopPropagation) e.stopPropagation();
	else e.cancelBubble=true;
	if (e.preventDefault) e.preventDefault();
	else e.returnValue=false;
	return false;
}
function addEvent(e,cb)
{
	if (document.addEventListener)
		document.addEventListener(e,cb,true);
	else
		document.attachEvent('on'+e,cb);
}
function removeEvent(e,cb)
{
	if (document.removeEventListener)
		document.removeEventListener(e,cb,true);
	else
		document.detachEvent('on'+e,cb);
}
function addEventObj(o,e,cb)
{
	if (o.addEventListener)
		o.addEventListener(e,cb,true);
	else
		o.attachEvent('on'+e,cb);
}
function removeEventObj(o,e,cb)
{
	if (o.removeEventListener)
		o.removeEventListener(e,cb,true);
	else
		o.detachEvent('on'+e,cb);
}
function dragGetPosition(o)
{
	var x=y=0;
	while (o.offsetParent)
	{
		x+=o.offsetLeft;
		y+=o.offsetTop;
		o=o.offsetParent;
	}
	return [x,y]
}
function dragGetSize(o)
{
	return [o.offsetWidth,o.offsetHeight];
}
var dragMoved;
var curColumn;
var curDrag;
var surrogate,surrogateHeight,surrogateIdx;
function startDrag(e,column)
{
	dragMoved=false;
	curColumn=column;
	curDrag=e.parentNode.parentNode;
	addEvent('mousemove',dragMove);
	addEvent('mouseup',dragEnd);
	var pos=dragGetPosition(curDrag);
	var siz=dragGetSize(curDrag);
	curDrag.style.position="absolute";
	curDrag.style.left=pos[0]+'px';
	curDrag.style.top=pos[1]+'px';
	curDrag.style.width=siz[0]+'px';
	curDrag.style.height=siz[1]+'px';
	curDrag.style.zIndex=1000;
	curDrag.oldX=e.clientX;
	curDrag.oldY=e.clientY;
	surrogate=curDrag.parentNode.insertBefore(document.createElement('div'),curDrag);
	surrogate.style.width=siz[0]+'px';
	surrogateHeight=siz[1];
	surrogate.style.height=siz[1]+'px';
	surrogate.style.backgroundColor="#aaa";
	surrogate.style.border="3px dashed #888";
	for (var i=0;i<curDrag.parentNode.childNodes.length;i++)
	{
		if (curDrag.parentNode.childNodes[i]==surrogate)
			surrogateIdx=i;
	}
	return false;
}
function dragMove(e)
{
	dragMoved=true;
	if (!e) e=window.event;
	var x=parseInt(curDrag.style.left);
	var y=parseInt(curDrag.style.top);
	if (curDrag.oldX==undefined) curDrag.oldX=e.clientX;
	if (curDrag.oldY==undefined) curDrag.oldY=e.clientY;
	x+=e.clientX-curDrag.oldX;
	y+=e.clientY-curDrag.oldY;
	curDrag.style.left=x+'px';
	curDrag.style.top=y+'px';
	curDrag.oldX=e.clientX;
	curDrag.oldY=e.clientY;

	var p=dragGetPosition(surrogate);
	var parent=curDrag.parentNode;
	if (y<p[1]-50 && surrogateIdx!=0)
	{
		parent.insertBefore(surrogate,parent.childNodes[surrogateIdx-1]);
		surrogateIdx--;
	}
	else if (y>p[1]+surrogateHeight && surrogateIdx!=parent.childNodes.length-1)
	{
		surrogateIdx++;
		if (surrogateIdx==parent.childNodes.length-1)
			parent.appendChild(surrogate);
		else
			parent.insertBefore(surrogate,parent.childNodes[surrogateIdx]);
	}
	return false;
}
function dragEnd()
{
	removeEvent('mousemove',dragMove);
	removeEvent('mouseup',dragEnd);
	var parent=curDrag.parentNode;
	parent.insertBefore(curDrag,surrogate);
	parent.removeChild(surrogate);
	curDrag.style.position="";
	curDrag.style.top="";
	curDrag.style.left="";
	curDrag.style.width="";
	curDrag.style.height="";
	curDrag.style.zIndex=0;

	if (!dragMoved)
		toggleShade(curDrag);
	else
	{
		var order='';
		for (var i=0;i<parent.childNodes.length;i++)
		{
			if (parent.childNodes[i].id)
			{
				if (order!='') order+=',';
				order+=parent.childNodes[i].id;
			}
		}
		var d=new Date();
		d.setDate(d.getDate()+365);
		document.cookie="order"+curColumn+"="+escape(order)+";domain=.tucsoncitizen.com;path=/;expires="+d.toGMTString();
	}
	return false;
}
function toggleShade(el)
{
	doToggleShade(el);
	var parent=el.parentNode;
	var offs='';
	for (var i=0;i<parent.childNodes.length;i++)
	{
		if (parent.childNodes[i].onoff=='off')
		{
			if (offs!='') offs+=',';
			offs+=parent.childNodes[i].id;
		}
	}
	var d=new Date();
	d.setDate(d.getDate()+365);
	document.cookie="shade"+curColumn+"="+escape(offs)+";domain=.tucsoncitizen.com;path=/;expires="+d.toGMTString();
}
function Reorder(parent,column)
{
	var cookies=document.cookie.split('; ');
	for (var i=0;i<cookies.length;i++)
	{
		var parts=cookies[i].split('=',2);
		if (parts[0]=="order"+column)
			ReorderHelper(parent,parts[1]);
		if (parts[0]=="shade"+column)
			ShadeHelper(parent,parts[1]);
	}
}
function ReorderHelper(parent,order)
{
	order=unescape(order).split(',');
	var p=$(parent);
	for (var i=0;i<order.length;i++)
		p.appendChild($(order[i]));
}
function ShadeHelper(parent,offs)
{
	offs=unescape(offs).split(',');
	for (var i=0;i<offs.length;i++)
		doToggleShade($(offs[i]));
}
function doToggleShade(el)
{
	el.onoff='off';
	for (var i=0;i<el.childNodes.length;i++)
	{
		if (el.childNodes[i].nodeType==1 && el.childNodes[i].tagName!='H3')
		{
			if (el.childNodes[i].style.display=="none")
			{
				el.childNodes[i].style.display="";
				el.onoff='on';
			}
			else
				el.childNodes[i].style.display="none";
		}
	}
}
