window.onload = initQuiz;

var correctCount = 0;
var initHTML;

function initQuiz()
{
	initHTML = xGetElementById("container").innerHTML;

	for (var i = 0; i < 5; i++)
	{
		var elem;
		
		// Set up drag capability
		elem = xGetElementById("drag_" + ( i + 1));
		xEnableDrag("drag_" + (i + 1), fnDragStart, fnDrag, fnDragEnd);
		elem.initX = xLeft(elem);
		elem.initY = xTop(elem);

		// Set up drag capability for false items
		elem = xGetElementById("drag_f_" + ( i + 1));
		xEnableDrag("drag_f_" + (i + 1), fnDragStart, fnDrag, fnDragEnd);
		elem.initX = xLeft(elem);
		elem.initY = xTop(elem);
	}
}

function fnDragStart(ele, mdx, mdy)
{
	ele.offL = 0;
	ele.offR = 0;
	ele.offT = 0;
	ele.offB = 0;
	ele.style.clear = "left";
	ele.style.zIndex = 10;
}

function fnDrag(ele, mdx, mdy)
{
	var moveX = 0;
	var moveY = 0;

	//xGetElementById("debug").innerHTML = (xLeft(ele) + mdx) + " : " + (xLeft(xGetElementById("container")));
	var lBound = (xOffsetLeft(ele) + mdx) >= xOffsetLeft(xGetElementById("container"));
	var rBound = (xOffsetLeft(ele) + mdx) <= (xOffsetLeft(xGetElementById("container")) + xWidth(xGetElementById("container")) - xWidth(ele));
	var tBound = (xOffsetTop(ele) + mdy) >= (xOffsetTop(xGetElementById("container")) + 70);
	var bBound = (xOffsetTop(ele) + mdy) <= (xOffsetTop(xGetElementById("container")) + xHeight(xGetElementById("container")) + 50);

	if (lBound && (ele.offL <= 0))
	{
		moveX = mdx;

		if (rBound && (ele.offR <= 0))
			moveX = mdx;
		else
		{
			ele.offR += mdx;
			moveX = 0;
		}
	}
	else
	{
		ele.offL -= mdx;
		moveX = 0;
	}

	if (tBound && (ele.offT <= 0))
	{
		moveY = mdy;

		if (bBound && (ele.offB <= 0))
			moveY = mdy;
		else
		{
			ele.offB += mdy;
			moveY = 0;
		}
	}
	else
	{
		ele.offT -= mdy;
		moveY = 0;
	}

	xMoveTo(ele, xLeft(ele) + moveX, xTop(ele) + moveY);
}

function fnDragEnd(ele, mx, my)
{
	var ret;
	var sep;
	var num;
	
	ret = fnValidTarget(ele.id, mx, my);

	if (ret == null)
	{
		ele.className = "quiz_drag";
		xSlideTo(ele, ele.initX, ele.initY, 250);
	}
	else
	{
		sep = ret.id.indexOf("_");
		num = ret.id.substring(sep + 1);

		ret.innerHTML = ele.innerHTML;
		ret.className = "quiz_drop_correct";
		xDisableDrag(ele);
		xGetElementById("ans_" + num).style.visibility = "hidden";
		correctCount++;
	}
}

function fnValidTarget(id, mx, my)
{
	var elem;
	var ret = null;
	var sep = id.indexOf("_");
	var num = id.substring(sep + 1);
	
	for (var i = 0; i < 5; i++)
	{
		elem = xGetElementById("drop_" + ( i + 1));
		if (mx >= xPageX(elem) && mx <= (xPageX(elem) + xWidth(elem)))
		{
			if (my >= xPageY(elem) && my <= (xPageY(elem) + xHeight(elem)))
			{
				sep = elem.id.indexOf("_");
				if (elem.id.substring(sep + 1) == num)
				{
					ret = elem;
				}
			}
		}
	}
	return ret;
}

function fnResetQuestion()
{
	xGetElementById("container").innerHTML = initHTML;
	correctCount = 0;
	initQuiz();
}
