/*
	FILE : ajax_sort.js
	DATE : 12.19.2005
	AUTH : David A Striegel
	COPY : 2005 Copyright Mindframe, Inc.
*/

var downRow = null;             	// GLOBAL VARIABLE THAT TRACKS ON WHICH SORTABLE ROW THE USER PRESSES DOWN THE MOUSE
var upRow = null;               	// GLOBAL VARIABLE THAT TRACKS ON WHICH SORTABLE ROW THE USER RELEASES THE MOUSE
var waitingForResponse = false; 	// GLOBAL VARIABLE THAT TELLS IF A REMOTE PROCEDURE CALL (RPC) IS IN PROGRESS
var postPageURL = null;         	// GLOBAL VARIABLE THAT SAVES THE POST PAGE URL
var sortHighlightColor = '#99ccff'; // GLOBAL VARIABLE THAT SAVES HIGHLIGHT COLOR
var originalColor = 'white';		// GLOBAL VARIABLE TO HOLD THE ORIGINAL COLOR OF THE ROW YOU ARE OVER

function sortOver(elm)
{
	// KEEP TEXT IN SORT TABLE FROM HIGHLIGHTING DURING DRAG
	elm.parentNode.onselectstart = function() { return false; }; // IE
	elm.parentNode.style.MozUserSelect = 'none';                 // MOZILLA/FIREFOX

	elm.style.cursor = 'move';
	if (elm.getAttribute('bgcolor'))
		originalColor = elm.getAttribute('bgcolor');
	else
		originalColor = 'white';

	// IF THIS IS A LEGITIMATE PLACE TO DRAG THE ROW, HIGHLIGHT THE TR
	if (downRow && downRow != elm && downRow.parentNode == elm.parentNode) 
	{		
		elm.style.background = sortHighlightColor;
	}
}

function sortOut(elm)
{
	elm.style.cursor = 'default';
	elm.style.background = originalColor;
}

function sortDown(elm)
{
	downRow = elm;
	var allTDs = elm.getElementsByTagName('td');
	for (var i = 0; i < allTDs.length; i++)
		allTDs[i].style.color = sortHighlightColor;
}

function sortUp(elm,postPageURL,reloadElm)
{
	upRow = elm;
	
	// RETURN IF NOT A VALID DROP ZONE
	if (!downRow || !upRow || downRow == upRow || downRow.parentNode != upRow.parentNode) return;

	// SEND THE POST REQUEST AND REFRESH THE SORT ORDER CODE
	if (!postPageURL) // EXTRA CHECK FOR DAYS DEVELOPERS ARE NOT-SO-LUCID ;)
	{
		alert('You didn\'t set a URL');
		return;
	}
	var url = postPageURL;
	url += (url.indexOf('?') == -1) ? '?' : '&';
	url += 'CURRENT_ROW=' + downRow.id + '&TARGET_ROW=' + upRow.id;	
	loadModule(url,reloadElm);
}

function sortDocumentUp()
{
	if (!waitingForResponse)
	{
		if (downRow)
		{
			var allTDs = downRow.getElementsByTagName('td');
			for (var i = 0; i < allTDs.length; i++)
				allTDs[i].style.color = 'black';
		}
		downRow = null;
		upRow = null;
	}
}

// RUN sortDocumentUp FUNCTION WHEN MOUSEUP EVENT COMPLETES BUBBLE PHASE AT THE DOCUMENT LEVEL
if (typeof(window.event) != 'undefined') document.attachEvent('onmouseup', sortDocumentUp);
else document.addEventListener('mouseup', sortDocumentUp, false);	
