// NOTE: NOT THE SAME AS THE SYSTEMMANAGER VERSION.
var startX = 0;
var movement = 0;
var oldWidth = 0;
var divLine = null;
var anchorSize = 3;
var currentColumn = null;
var currentTarget = null;

function URLencode(sStr)
{
    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27');
}


function getPadding(el,side)
{
	var y;
	if (window.getComputedStyle)
	{
		y = window.getComputedStyle(el,null).getPropertyValue("padding-" + side.toLowerCase());
	}
	else if (el.currentStyle)
	{
		y = eval('el.currentStyle.padding' + side);
	}
	
	return parseInt(y);
}

function initColumnWidths(storeElement, top_table, bottom_table)
{
	var field = document.getElementById(storeElement);	
	var topTable = document.getElementById(top_table);
	var bottomTable = document.getElementById(bottom_table);
	var widthTop;
	var widthBottom;
		
	if (field && topTable && bottomTable)
	{
		var s = field.value.split(",");
		for (var i = 0; i < s.length; i++)
		{
			if (s[i] != "")
			{
				if (document.all)
				{
					widthTop = parseInt(s[i]);
					widthBottom = widthTop;
				}
				else
				{
					widthTop = parseInt(s[i]) - getPadding(topTable.rows[0].cells[i], "Left") - getPadding(topTable.rows[0].cells[i], "Right");
					widthBottom = parseInt(s[i]) - getPadding(bottomTable.rows[0].cells[i], "Left") - getPadding(bottomTable.rows[0].cells[i], "Right");
				}
				topTable.rows[0].cells[i].style.width = widthTop;
				bottomTable.rows[0].cells[i].style.width = widthBottom;
			}
		}
	}	
}

function getY(column)
{
	var o = column;
	var y = 0;
	
	while (o.parentNode && o.tagName.toLowerCase() != "body")
	{
		if (o.offsetTop && o.tagName.toLowerCase() != "table")
		{
			y += o.offsetTop;
		}

		o = o.parentNode;
	}
	return y;
}

function getX(column)
{
	var o = column;
	var x = 0;
	
	while (o.parentNode && o.tagName.toLowerCase() != "body")
	{
		if (o.offsetLeft)
		{
			x += o.offsetLeft;
		}
		o = o.parentNode;
	}
	return x;
}

function startResize(column, x, target)
{
	movement = 0;
	column = mayResize(column, x);
	if (column)
	{
		currentColumn = column;
		currentTarget = target;
		
		if (document.all)
		{
			column.setCapture(); // IE method
		}
		else
		{
			window.captureEvents(Event.MOUSEMOVE);	// FireFox
			window.onmousemove = resizeFeedback;
			window.captureEvents(Event.MOUSEUP);
			window.onmouseup = stopResize;
		}
		
		startX = x - getX(column);
		oldWidth = column.offsetWidth;
		
		if (document.getElementById(target))
		{
			divLine = document.createElement("div");
			divLine.style.position = "absolute";
			divLine.style.left = x;
			divLine.style.top = getY(column) + column.offsetHeight;
			divLine.style.height = document.getElementById(target).offsetHeight;
			divLine.className = "list_resizer";
			document.body.appendChild(divLine);
		}
		else
		{
			divLine = null;
		}
	}
}

function mayResize(column, x)
{	
	var columnX = getX(column);
	if (x - columnX > column.offsetWidth - anchorSize && column.cellIndex < column.parentNode.cells.length - 1)
	{
		return column;
	}
	else
	{
		if (column.cellIndex > 0 && x - columnX >= 0 && x - columnX < anchorSize)
		{
			return column.parentNode.cells[column.cellIndex - 1];
		}
		else
		{
			return null;
		}
	}
}

function resizeFeedback(e, column)
{
	var x = e.clientX;
	if (currentColumn)
	{
		// draw feedback line
		if (divLine)
		{
			divLine.style.left = x;
		}

		if (!document.all)
		{	//firefox
			e.stopPropagation();
		}
	}
	else
	{
		if (column && column.tagName.toLowerCase() == "td")
		{			
			var col = mayResize(column, x)
			if (col)
			{
				if (document.all)
				{
					column.style.cursor = "col-resize";
				}
				else
				{	// firefox doensn't know the resize pointer
					e.currentTarget.style.cursor = "move";
				}
			}
			else
			{
				column.style.cursor = "default";
			}			
		}
	}
}

function stopResize(e)
{
	var result;
	if (currentColumn)
	{
		// let go of events
		if (document.all)
		{
			currentColumn.releaseCapture(); // IE
		}
		else
		{
			window.releaseEvents(Event.MOUSEMOVE);	// FireFox
			window.releaseEvents(Event.MOUSEUP);	// FireFox
			e.stopPropagation();
		}
	
		if (divLine)
		{
			// remove feedback line
			divLine.style.display = "none";
			document.body.removeChild(divLine);
			divLine = null;
		}
			
		// calc final resize
		var endX = e.clientX - getX(currentColumn);
		movement = endX - startX;
		
		if (Math.abs(movement) < 3)
		{
			movement = 1;	// not enough movement, but we don't wan't a click action.
			result = true;
		}
		else
		{
			// resize column
			if (oldWidth + movement > 20)
			{
				if (document.all)
				{
					currentColumn.style.width = oldWidth + movement;
				}
				else
				{
					currentColumn.style.width = oldWidth + movement - getPadding(currentColumn, "Left") - getPadding(currentColumn, "Right");
				}
			}
			else
			{
				currentColumn.style.width = 20;
			}
			
			var destTable = document.getElementById(currentTarget);			
			if (destTable && destTable.rows.length > 0)
			{
				if (document.all)
				{
					destTable.rows[0].cells[currentColumn.cellIndex].style.width = currentColumn.style.width;
				}
				else
				{
					destTable.rows[0].cells[currentColumn.cellIndex].style.width = oldWidth + movement - getPadding(destTable.rows[0].cells[currentColumn.cellIndex], "Left") - getPadding(destTable.rows[0].cells[currentColumn.cellIndex], "Right");
				}
			}			
			storeColumnWidths(currentColumn, currentColumn.parentNode.parentNode.parentNode.id + "Width");
			result = false;
		}
	}
	else
	{
		movement = 0; // we weren't resizing. let onclick event do it's stuff
		result = true;
	}
	
	currentColumn = null;
	currentTarget = null;
	return result;
}

function storeColumnWidths(column, storeElement)
{
	var row = column.parentNode;
	var field = document.getElementById(storeElement);
	var val = "";
	
	for (var i = 0; i < row.cells.length; i++)
	{
		if (i > 0)
		{
			val += ",";
		}
		val += row.cells[i].offsetWidth;
	}
	field.value = val;
}

function InitListPage()
{
	if(window.onresize)
	{
		window.document.body.scroll='no';
		window.onresize();
	}
}

function AddEvents(oTable,type,doMouseOver)
{
	if (doMouseOver==1)
	{
		doMouseOver = true;
	}
	if (oTable)
	{
		for (i=0; i<oTable.rows.length; i++) 
		{
			if (type=='TD')
			{
				for (j=0; j<oTable.rows[i].cells.length; j++) 
				{
					if (doMouseOver)
					{
						oTable.rows[i].cells[j].onmouseover = mOver;
						oTable.rows[i].cells[j].onmouseout = mOut;
					}
					oTable.rows[i].cells[j].onmousedown = mDown;
					oTable.rows[i].cells[j].onmouseup = mUp;
				}
			}
			else
			{
				if (doMouseOver)
				{
					oTable.rows[i].onmouseover = mOver;
					oTable.rows[i].onmouseout = mOut;
				}
				oTable.rows[i].onmousedown = mDown;
				oTable.rows[i].onmouseup = mUp;
			}
		}
	}
}


function ChangeListClass(oObject,oldClassName,newClassName)
{
	var ext="";
	if(oObject && oObject.className)
	{
		if( oObject.className.indexOf( 'Alternate' ) > -1 )
		{
			ext="Alternate"
		}
		if ( oObject.className == oldClassName + ext || oObject.className == newClassName + ext)
		{
			oObject.className = newClassName + ext;
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

function mDown(e)
{
	var oObj;
	var class1;
	var class1a;
	var class2;
	
	if (!e) var e = window.event;
	if (e.target) oObj = e.target;
	else if (e.srcElement) oObj = e.srcElement;

	var oParent = oObj;
	
	if (oParent.className && oParent.className.toLowerCase().indexOf("alternate") != -1)
	{
		class1 = "itemalternate";
		class1a = "highlightalternate";
		class2 = "pressedalternate";
	}
	else
	{
		class1 = "item";
		class1a = "highlight"
		class2 = "pressed";
	}
	
	while (oParent && (!ChangeListClass(oParent,class1,class2) || !ChangeListClass(oParent,class1a,class2)))
	{
		oParent = oParent.parentElement;
	}
	
	var listgridid = "";
	var idObj = oObj;
	var tableObject = null;
	while (idObj)
	{
		if (idObj.tagName == 'TABLE' && idObj.id.length > 6 && idObj.id.substring(idObj.id.length - 6) == "_Table")
		{
			listgridid = idObj.id.substring(0,idObj.id.length -6);
			tableObject = idObj;
			idObj = null;
		}
		else
		{
			idObj = idObj.parentElement;
		}
	}
	
	
	listgridid += "_SelectedId";
	if (tableObject && document.getElementById(listgridid))
	{
		var selectedItemId = document.getElementById(listgridid).value;
		var selectedItem = null;
		if (selectedItemId != "" && selectedItemId != "-1" && tableObject)
		{
			selectedItem = document.getElementById(selectedItemId);
			/* changed 12-07-06 in order to work on td's when pagecolumns > 1
			var rows = tableObject.getElementsByTagName("tr");
			if (rows)
			{
				for (i = 0; i< rows.length; i++)
				{
					if (rows[i].id == selectedItemId)
					{
						selectedItem = rows[i];
					}
				}
			}*/
		}
		
		if ( selectedItem && (oParent && oParent.id != selectedItemId))
		{
			var ext = "";
			if( selectedItem.className && selectedItem.className.indexOf( "Alternate" ) > -1 )
			{
				ext = "Alternate";
			}
			selectedItem.className = 'item' + ext;
		}
		if (oParent)
		{
			document.getElementById(listgridid).value = oParent.id;
		}
	}
}

function mUp(e)
{
}

function mOver(e)
{
	var oParent;
	if (!e) var e = window.event;
	if (e.target) oParent = e.target;
	else if (e.toElement) oParent = e.toElement;

	var class1;
	var class2;
	if (oParent.className && oParent.className.toLowerCase().indexOf("alternate") != -1)
	{
		class1 = "itemalternate";
		class2 = "highlightalternate";
	}
	else
	{
		class1 = "item";
		class2 = "highlight";
	}
	
	while (oParent && !ChangeListClass(oParent, class1, class2))
	{
		oParent = (oParent.parentNode) ? oParent.parentNode : oParent.parentElement;
	}
}

function mOut(e)
{
	var oParent;
	if (!e) var e = window.event;
	if (e.target) oParent = e.target;
	else if (e.fromElement) oParent = e.fromElement;

	var class1;
	var class2;
	if (oParent.className && oParent.className.toLowerCase().indexOf("alternate") != -1)
	{
		class1 = "highlightalternate";
		class2 = "itemalternate";		
	}
	else
	{
		class1 = "highlight";
		class2 = "item";		
	}

	while (oParent && !ChangeListClass(oParent, class1, class2))
	{
		oParent = (oParent.parentNode) ? oParent.parentNode : oParent.parentElement;
	}
}

function doOnClick()
{
}

function doOnDblClick()
{
}

function PreActivateLink(Target,Url,LinkedItemId,LinkedContentId)
{
	Url += '&goback=' + URLencode(document.location.href);
	ActivateLink(Target,Url,LinkedItemId,LinkedContentId);
}

function ActivateLink(Target,Url,LinkedItemId,LinkedContentId)
{
	var linkStr = ''
	if(LinkedItemId && LinkedItemId != '-1')
	{
		if(!LinkedContentId)
		{
			LinkedContentId = '-1';
		}
		linkStr = '../../../../internalLink.aspx?ItemID='+LinkedItemId+'&ContentId='+LinkedContentId;
	}			
	else
	{
		linkStr = Url;
	}

	if (Target=='_self' || Target=='')
	{
		window.location.href = linkStr;
	}
	else if (Target=='_new')
	{
		window.open(linkStr);
	}
	else if (Target=="_top")
	{
		window.top.location.href = linkStr;
	}
	else
	{
		var frame = TargetFrame(Target);

		if (frame)
		{
			frame.location = linkStr;
		}
		else
		{
			alert('target not found:'+Target);
		}
	}
}

function TargetFrame(target)
{
	var loop = true;
	var currentWindow = window;
	while (loop)
	{
		for (var t = 0; t < currentWindow.frames.length; t++)
		{
			if (currentWindow.frames[t].name == target)
			{
				return currentWindow.frames[t];
			}
		}

		if (currentWindow.parent != currentWindow)
		{
			currentWindow = currentWindow.parent;
		}
		else
		{
			break;
		}
	}
	return null;
}

function sortOrderChange(columnNo, sortOrderId)
{
	if (movement == 0)
	{
		var oScrollOrder = document.getElementById(sortOrderId);
		if (oScrollOrder && oScrollOrder.value!="")
		{
			if (oScrollOrder.value.indexOf(columnNo)!=-1)
			{
				if (oScrollOrder.value.indexOf('DESC')!=-1)
				{
					oScrollOrder.value = columnNo+' ASC';
				}
				else
				{
					oScrollOrder.value = columnNo+' DESC';
				}
			}
			else
			{
				oScrollOrder.value = columnNo+' DESC';
			}
		}
		else
		{
			oScrollOrder.value = columnNo+' DESC';
		}
		document.forms[0].submit();
	}
}

function resizeColumns(clientId)
{
	var oObject = document.getElementById(clientId+'_col');
	if (oObject)
	{
		oObject.style.width = document.getElementById(clientId+'_list').clientWidth;
	}
}

function refreshthis(url)
{
	if (url != '')
	{
		document.location.href = url;
	}
}