var positions = Array();

function movePositions(_id, _direction) {
	
	var row = findPositionRow(_id);
	
	if(_direction == "up" && row < 1)
		return;
	else if(_direction == "down" && row > positions.length - 2)
		return;
		
	if(_direction == "up")
		var row2 = row - 1;
	else
		var row2 = row + 1;
		
	var request = new AjaxRequest(pathPrefix + "/Ajax/pkgMovePackage" + firstSeperator + "pkgId=" + _id + "&direction=" + _direction + sid2, true);
	request.doRequest();

	if(request.getResponseText() != "OK") {
		getById("savingError").style.display = "";
		return;
	}
		
	switchPositions(row, row2);
	
}

function switchPositions(_row1, _row2) {
	
	var table = getById("positions");

	var id = positions[_row1];
	var tr = getById("pos_" + id);
	var trCopy = tr.cloneNode(true);
	
	var id2 = positions[_row2];
	var tr2 = getById("pos_" + id2);
	var tr2Copy = tr2.cloneNode(true);
	
	// switch rows
	table.tBodies[0].replaceChild(tr2Copy, tr);
	table.tBodies[0].replaceChild(trCopy, tr2);
	
	// switch array
	positions[_row1] = id2;
	positions[_row2] = id;
	
	fixPositionArrows();
	fixClasses(table.rows);
	
}

function findPositionRow(_id) {
	
	for(var i = 0; i < positions.length; i++) {
		if(positions[i] == _id)
			return i;		
	}
	
}

function fixPositionArrows() {
	
	for(var i = 0; i < positions.length; i++) {
	
		var id = positions[i];
		var upArrow = true;
		var downArrow = true;
	
		if(i == 0)
			upArrow = false;
		else if(i == positions.length - 1)
			downArrow = false;
			
		getById("pos_" + id + "_up").style.display = (upArrow ? "" : "none");
		getById("pos_" + id + "_up_blank").style.display = (!upArrow ? "" : "none");
		getById("pos_" + id + "_down").style.display = (downArrow ? "" : "none");
		getById("pos_" + id + "_down_blank").style.display = (!downArrow ? "" : "none");
		
	}
	
}

function fixClasses(_rows) {
	
	var classNumber = 1;

	for(var i = 0; i < _rows.length; i++) {
	
		_rows[i].className = "_" + classNumber;
		classNumber = (classNumber == 1 ? 2 : 1);
		
	}
	
}
