var dcTime=250;												// doubleclick time
var dcDelay=100;											// no clicks after doubleclick
var dcAt=0;													// time of doubleclick
var savEvent=null;											// save Event for handling doClick().
var savEvtTime=0;											// save time of click event.
var savTO=null;												// handle of click setTimeOut
var savBallObj = null;										// save the Mark Six Ball Object.
var totalBankerBall = 5;									// total Banker Ball.
var totalLegBallInEachLine = 6;								// total Leg Ball in each line.
var totalMarkSixBall = 49;	// total Ball in this page.

function hadDoubleClick() {
	var d = new Date();
	var now = d.getTime();
	   
	if ((now - dcAt) < dcDelay) {
		return true;
	}
	return false;
}

function markSixBallClick(ballObj, which)
{
	switch (which) {
		case "click": 
			// If we've just had a doubleclick then ignore it
			if (hadDoubleClick()) return false;
				 
			// Otherwise set timer to act.  It may be preempted by a doubleclick.
			savEvent = which;
			savBallObj = ballObj;
			d = new Date();
			savEvtTime = d.getTime();
			savTO = setTimeout("doClick(savBallObj, savEvent)", dcTime);
			break;
		case "dblclick":
			doDoubleClick(ballObj, which);
			break;
		default:
	}
}
 
function doClick(ballObj) {
	// preempt if DC occurred after original click.
	if (savEvtTime - dcAt <= 0) {
		return false;
	}
	
	if (((ballObj.src.indexOf("gray") <= 0) && (ballObj.src.indexOf("banker") <= 0)) || (ballObj.src.indexOf("banker") > 0))
	{
		addLegBallEvent(ballObj);
		return ;
	}
	
	if (ballObj.src.indexOf("gray") > 0)
	{
		DeleteBankerBall(ballObj.value, "leg");
		if (!doDoubleClick(ballObj))
		{
			addLegBallEvent(ballObj);
		}
		
		return ;
	}
}
 
function addLegBallEvent(ballObj)
{
	if (AddLegBallLine(ballObj))
	{
		divBankerBallPanel.innerHTML = GenBankBallPanelLayout(document.getElementById("bankerBallLine").value, document.getElementById("legBallLine").value);
		SelectedLegBall(ballObj.value);
		//alert("Value : " + document.getElementById("legBallLine").value);
	}
}
 
function doDoubleClick(ballObj) {
	var d = new Date();
	dcAt = d.getTime();
	if (savTO != null) {
		clearTimeout( savTO );          // Clear pending Click  
		savTO = null;
	}
	
	if (AddBankerBallLine(ballObj))
	{
		divBankerBallPanel.innerHTML = GenBankBallPanelLayout(document.getElementById("bankerBallLine").value, document.getElementById("legBallLine").value);
		SelectedBankerBall(ballObj.value);
		//alert("Double Click Value : " + document.getElementById("bankerBallLine").value);
		
		return true;
	}
	else
	{
		return false;
	}
}

function AddBankerBallLine(ballObj)
{
	var strBankerBallLine = document.getElementById("bankerBallLine").value;
	
	isRandGen = 0;
	
	if (ballObj.value != "full")
	{
		if ((strBankerBallLine.split('+').length < totalBankerBall) && (ballObj.src.indexOf("banker") <= 0) && (ballObj.src.indexOf("gray") <= 0))
		{
			if (strBankerBallLine == "")
			{
				strBankerBallLine = ballObj.value;
			}
			else
			{
				strBankerBallLine += "+" + ballObj.value;
			}
		
			document.getElementById("bankerBallLine").value = strBankerBallLine;
			
			return true;
		}
		else
		{
			if ((ballObj.src.indexOf("banker") >= 0) || (ballObj.src.indexOf("gray") >= 0))
			{
				DeleteBankerBall(ballObj.value, "banker");
			}
			else
			{
				alert(mostFiveBankerError);
			}
		}
	}
	else
	{
		return AddLegBallLine(ballObj);
	}
	
	return false;
}

function AddLegBallLine(ballObj)
{
	if ((ballObj.src.indexOf("gray") <= 0) && (ballObj.src.indexOf("banker") <= 0))
	{

		var strLegBallLine = document.getElementById("legBallLine").value;
		
		if (ballObj.value == "full")
		{
			var strAryLegBallLine = strLegBallLine.split('+');
			
			for (addAllBallCounter = 1; addAllBallCounter <= totalMarkSixBall; addAllBallCounter++)
			{
				if (eval("document.getElementById(\"n" + addAllBallCounter + "\").src.indexOf(\"banker\")") <= 0 && eval("document.getElementById(\"n" + addAllBallCounter + "\").src.indexOf(\"gray\")") <= 0)
				{
					if (strLegBallLine == "")
					{
						strLegBallLine = addAllBallCounter;
					}
					else
					{
						strLegBallLine += "+" + addAllBallCounter;
					}
					
					SelectedLegBall(addAllBallCounter);
				}
			}
		}
		else
		{
			if (strLegBallLine == "")
			{
				strLegBallLine = ballObj.value;
			}
			else
			{
				strLegBallLine += "+" + ballObj.value;
			}
		}
			
		document.getElementById("legBallLine").value = strLegBallLine;
		
		isRandGen = 0;
		
		return true;
	}
	else
	{
		if (ballObj.value != "full")
		{
			if (ballObj.src.indexOf("gray") >= 0)
			{
				DeleteBankerBall(ballObj.value, "leg");
			}
			else
			{
				DeleteBankerBall(ballObj.value, "banker");
			}
		}
	}
	
	return false;
}

function GenBankBallPanelLayout(bankerBallLine, legBallLine)
{
	var strHtml = "";
	var strLegImage = "";
	
	strHtml = "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	
	if (bankerBallLine != "")
	{
		var aryStrBankerBallLine = bankerBallLine.split('+');
		var strSortBankerBallLine = "";
		
		aryStrBankerBallLine = SortArrayASC(aryStrBankerBallLine);
		
		strHtml += "<tr>";
		strHtml += "<td class=\"content\" style=\"padding:0px 0px 0px 0px;\">";
		strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		strHtml += "<tr>";
		strHtml += "<td style=\"padding:0px 2px 0px 0px;\"><img src=\"/marksix/info/images/" + pageLang + "/icon_main.gif\" title=\"" + bankerTitleDesc + "\"></td>";
		strHtml += "<td>";
		strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		strHtml += "<tr>";
		for (genCounter = 0; genCounter<=totalBankerBall; genCounter++)
		{
			if (genCounter < aryStrBankerBallLine.length)
			{
				if (aryStrBankerBallLine[genCounter] < 10)
				{
					strHtml += "<td align=\"center\" style=\"padding:0px 2px 0px 2px;\" onclick=\"DeleteBankerBall(" + aryStrBankerBallLine[genCounter] + ", 'banker');\"><a href=\"javascript:void(0)\"><img src=\"/marksix/info/images/icon/banker/no_0" + aryStrBankerBallLine[genCounter] + "_s.gif\" border=\"0\" title=\"" + selectBallTitleDesc + "\"></a></td>";
				}
				else
				{
					strHtml += "<td align=\"center\" style=\"padding:0px 2px 0px 2px;\" onclick=\"DeleteBankerBall(" + aryStrBankerBallLine[genCounter] + ", 'banker');\"><a href=\"javascript:void(0)\"><img src=\"/marksix/info/images/icon/banker/no_" + aryStrBankerBallLine[genCounter] + "_s.gif\" border=\"0\" title=\"" + selectBallTitleDesc + "\"></a></td>";
				}
				
				if (strSortBankerBallLine == "")
				{
					strSortBankerBallLine = aryStrBankerBallLine[genCounter];
				}
				else
				{
					strSortBankerBallLine += "+" + aryStrBankerBallLine[genCounter];
				}
			}
			else
			{
				strHtml += "<td align=\"center\" style=\"padding:0px 2px 0px 2px;\"><img src=\"/info/include/images/spacer.gif\" width=\"25\" height=\"25\"></td>";
			}
		}
		strHtml += "</tr>";
		strHtml += "</table>";
		strHtml += "</td>";
		strHtml += "</tr>";
		strHtml += "</table>";
		strHtml += "</td>";
		strHtml += "</tr>";
		strHtml += "<tr>";
		strHtml += "<td style=\"background:url(/marksix/info/images/dash.gif) repeat-x center;\"><img src=\"/info/include/images/spacer.gif\" width=\"1\" height=\"20\"></td>";
		strHtml += "</tr>";
		
		document.getElementById("bankerBallLine").value = strSortBankerBallLine;
		strLegImage = "<td style=\"padding:0px 2px 0px 0px;\"><img src=\"/marksix/info/images/" + pageLang + "/icon_sub.gif\" title=\"" + legTitleDesc + "\"></td>";
		//alert(strSortBankerBallLine);
	}
	
	if (legBallLine != "")
	{
		var aryStrLegBallLine = legBallLine.split('+');
		var strSortLegBallLine = "";
	
		aryStrLegBallLine = SortArrayASC(aryStrLegBallLine);
	
		strHtml += "<tr>";
		strHtml += "<td class=\"content\" style=\"padding:0px 0px 0px 0px;\">";
		strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		strHtml += "<tr>";
		strHtml += strLegImage;
		strHtml += "<td>";
		strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
		for (genCounter = 0; genCounter < aryStrLegBallLine.length/totalLegBallInEachLine; genCounter++)
		{
			strHtml += "<tr>";
			for (j = genCounter * totalLegBallInEachLine; j< (genCounter + 1) * totalLegBallInEachLine; j++)
			{
				if (j<aryStrLegBallLine.length)
				{
					if (aryStrLegBallLine[j] < 10)
					{
						strHtml += "<td align=\"center\" style=\"padding:0px 3px 3px 3px;\" onclick=\"DeleteBankerBall(" + aryStrLegBallLine[j] + ", 'leg');\"><a href=\"javascript:void(0)\"><img src=\"/marksix/info/images/icon/no_0" + aryStrLegBallLine[j] + "_s.gif\" border=\"0\" title=\"" + selectBallTitleDesc + "\"></a></td>";
					}
					else
					{
						strHtml += "<td align=\"center\" style=\"padding:0px 3px 3px 3px;\" onclick=\"DeleteBankerBall(" + aryStrLegBallLine[j] + ", 'leg');\"><a href=\"javascript:void(0)\"><img src=\"/marksix/info/images/icon/no_" + aryStrLegBallLine[j] + "_s.gif\" border=\"0\" title=\"" + selectBallTitleDesc + "\"></a></td>";
					}
					
					if (strSortLegBallLine == "")
					{
						strSortLegBallLine = aryStrLegBallLine[j];
					}
					else
					{
						strSortLegBallLine += "+" + aryStrLegBallLine[j];
					}
				}
				else
				{
					strHtml += "<td align=\"center\" style=\"padding:0px 3px 3px 3px;\"><img src=\"/info/include/images/spacer.gif\" width=\"25\" height=\"25\"></td>";
				}
			}
			strHtml += "</tr>";
		}
		strHtml += "</table>";
		strHtml += "</td>";
		strHtml += "</tr>";
		strHtml += "</table>";
		strHtml += "</td>";
		strHtml += "</tr>";
		
		document.getElementById("legBallLine").value = strSortLegBallLine;
		//alert(strSortLegBallLine);
	}
	
	if (bankerBallLine == "" && legBallLine == "")
	{
		strHtml += "<tr>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "<td align=\"center\" style=\"padding:0px 3px 0px 3px;\">&nbsp;</td>";
		strHtml += "</tr>";
	}
	
	strHtml += "</table>";
	
	UpdateBankerMarkSixPanelFooter();
	
	return strHtml;
}

function SelectedBankerBall(selectBallValue)
{
	if (selectBallValue < 10)
	{
		eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/banker/no_0" + selectBallValue + "_s.gif\"");
	}
	else
	{
		if (selectBallValue == "full")
		{
			eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/gray/no_" + selectBallValue + ".gif\"");
		}
		else
		{
			eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/banker/no_" + selectBallValue + "_s.gif\"");
		}
	}
	
	IsAllBallSelect();
}

function SelectedLegBall(selectBallValue)
{
	if (selectBallValue < 10)
	{
		eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/gray/no_0" + selectBallValue + "_s.gif\"");
	}
	else
	{
		if (selectBallValue == "full")
		{
			eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/gray/no_" + selectBallValue + ".gif\"");
		}
		else
		{
			eval("document.getElementById(\"n" + selectBallValue + "\").src = \"/marksix/info/images/icon/gray/no_" + selectBallValue + "_s.gif\"");
		}
	}
	
	IsAllBallSelect();
}

function GetTotalSelectBankerBall()
{
	var totalBankerBall = 0;
	var aryBallLine = document.getElementById("bankerBallLine").value.split('+');
	
	if (aryBallLine[0] != "")
	{
		totalBankerBall = aryBallLine.length;
	}
	
	return totalBankerBall;
}

function GetTotalSelectLegBall()
{
	var totalLegBall = 0;
	var aryBallLine = document.getElementById("legBallLine").value.split('+');
	
	if (aryBallLine[0] != "")
	{
		totalLegBall = aryBallLine.length;
	}
	
	return totalLegBall;
}

function IsAllBallSelect()
{
	var totalBallCounter = 0;
	
	totalBallCounter = GetTotalSelectBankerBall() + GetTotalSelectLegBall();
	
	if (totalBallCounter == totalMarkSixBall)
	{
		document.getElementById("nfull").src = "/marksix/info/images/icon/gray/" + markSixFullBallImageName;
		return true;
	}
	else
	{
		return false;
	}
}

function SortArrayASC(needSortArrayList)
{
	var tempValue = 0;
	
	for (sortCounter1 = 0; sortCounter1< needSortArrayList.length; sortCounter1++)
	{
		for (sortCounter2 = sortCounter1+1; sortCounter2 < needSortArrayList.length; sortCounter2++)
		{
			if (parseInt(needSortArrayList[sortCounter1], 10) > parseInt(needSortArrayList[sortCounter2], 10))
			{
				tempValue = needSortArrayList[sortCounter1];
				needSortArrayList[sortCounter1] = needSortArrayList[sortCounter2];
				needSortArrayList[sortCounter2] = tempValue;
			}
		}
	}
	
	return needSortArrayList;
}

function RandomLegBall()
{
	xsell_event(8);
	var totalBallCounter = 0;
	var totalGenBallCounter = 0;
	var strBallLine = "";
	var aryBallLine = document.getElementById("bankerBallLine").value.split('+');
	var origialRandomGenFlag = isRandGen;
	
	if (aryBallLine[0] != "")
	{
		totalBallCounter = aryBallLine.length;
		strBallLine = document.getElementById("bankerBallLine").value;
	}
	
	aryBallLine = document.getElementById("legBallLine").value.split('+');
	
	if (aryBallLine[0] != "")
	{
		totalBallCounter += aryBallLine.length;
		strBallLine += "+" + document.getElementById("legBallLine").value;
	}
	
	if (totalBallCounter >0 && totalBallCounter < 7)
	{
		totalBallCounter--;
	}
	
	if (totalBallCounter < 49)
	{
		totalGenBallCounter = 6 - totalBallCounter;
		
		if (totalGenBallCounter <= 0)
		{
			totalGenBallCounter = 1;
		}
	}
	else
	{
		totalGenBallCounter = 0;
		
		isRandGen = origialRandomGenFlag;
		
		alert(betlineIsFullError);
	}
	
	if (totalGenBallCounter == 6)
	{
		isRandGen = 1;
	}
	
	for (randomLegCounter=0; randomLegCounter<totalGenBallCounter; randomLegCounter++)
	{
		aryBallLine = strBallLine.split('+');
		var isDuplicate = false;
		var randomWhileLoopCounter = 0;
		do{
			isDuplicate = false;
			randomNumber=Math.floor(Math.random()*49) + 1;
			for(var randomCounter=0; randomCounter<aryBallLine.length; randomCounter++)
			{
				if (aryBallLine[randomCounter] != "")
				{
					if (randomNumber == aryBallLine[randomCounter])
					{
						isDuplicate = true;
					}
				}
			}
			randomWhileLoopCounter++;
		} while (isDuplicate && randomWhileLoopCounter < 5000)	//randomWhileLoopCounter is use for prevent the not end loop
		
		if (document.getElementById("legBallLine").value == "")
		{
			document.getElementById("legBallLine").value = randomNumber;
		}
		else
		{
			document.getElementById("legBallLine").value += "+" + randomNumber;
		}
		
		if (strBallLine == "")
		{
			strBallLine = "" + randomNumber;
		}
		else
		{
			strBallLine += "+" + randomNumber;
		}
		
		SelectedLegBall(randomNumber);
	}
	
	IsAllBallSelect();
	
	divBankerBallPanel.innerHTML = GenBankBallPanelLayout(document.getElementById("bankerBallLine").value, document.getElementById("legBallLine").value);
}

function ResetBankerBallPanel()
{
	document.getElementById("bankerBallLine").value = "";
	document.getElementById("legBallLine").value = "";
	
	for (resetBankerBallCounter = 1; resetBankerBallCounter <= totalMarkSixBall; resetBankerBallCounter++)
	{
		if (eval("document.getElementById('n" + resetBankerBallCounter + "').src.indexOf('gray') > 0") || eval("document.getElementById('n" + resetBankerBallCounter + "').src.indexOf('banker') > 0"))
		{
			if (resetBankerBallCounter < 10)
			{
				eval("document.getElementById(\"n" + resetBankerBallCounter + "\").src = \"/marksix/info/images/icon/no_0" + resetBankerBallCounter + "_s.gif\"");
			}
			else
			{
				eval("document.getElementById(\"n" + resetBankerBallCounter + "\").src = \"/marksix/info/images/icon/no_" + resetBankerBallCounter + "_s.gif\"");
			}
		}
	}
	if (eval("document.getElementById('nfull').src.indexOf('gray') > 0"))
	{
		document.getElementById("nfull").src = "/marksix/info/images/icon/" + markSixFullBallImageName;
	}
	if (document.getElementById("checkboxAddToFav"))
	{
		document.getElementById("checkboxAddToFav").checked = false;
	}
	divBankerBallPanel.innerHTML = GenBankBallPanelLayout(document.getElementById("bankerBallLine").value, document.getElementById("legBallLine").value);
	
	isRandGen = 0;
}

function DeleteBankerBall(deleteBallValue, deleteBallType)
{
	var deleteBallLine = "";
	var strAryDeleteBallLine = "";
	var ballLineObj;
	
	if (deleteBallType == "banker")
	{
		ballLineObj = document.getElementById("bankerBallLine");
	}
	else
	{
		ballLineObj = document.getElementById("legBallLine");
	}
	
	strAryDeleteBallLine = ballLineObj.value.split('+');
	
	for (deleteBankerBallCounter = 0; deleteBankerBallCounter < strAryDeleteBallLine.length; deleteBankerBallCounter++)
	{
		if (strAryDeleteBallLine[deleteBankerBallCounter] != deleteBallValue)
		{
			if (deleteBallLine == "")
			{
				deleteBallLine = strAryDeleteBallLine[deleteBankerBallCounter];
			}
			else
			{
				deleteBallLine += '+' + strAryDeleteBallLine[deleteBankerBallCounter];
			}
		}
		else
		{
			document.getElementById("nfull").src = "/marksix/info/images/icon/" + markSixFullBallImageName;
			if (deleteBallValue < 10)
			{
				eval("document.getElementById(\"n" + deleteBallValue + "\").src = \"/marksix/info/images/icon/no_0" + deleteBallValue + "_s.gif\"");
			}
			else
			{
				eval("document.getElementById(\"n" + deleteBallValue + "\").src = \"/marksix/info/images/icon/no_" + deleteBallValue + "_s.gif\"");
			}
		}
	}
	
	ballLineObj.value = deleteBallLine;
	
	divBankerBallPanel.innerHTML = GenBankBallPanelLayout(document.getElementById("bankerBallLine").value, document.getElementById("legBallLine").value);
	
	isRandGen = 0;
	//if (document.getElementById("bankerBallLine").value == "" && document.getElementById("legBallLine").value == "")
	//{
	//	isRandGen = 0;
	//}
}

function UpdateBankerMarkSixPanelFooter()
{
	var totalBet = 0;
	
	if ((GetTotalSelectLegBall() + GetTotalSelectBankerBall()) >= 6)
	{
		totalBet = Math.round(nCr(GetTotalSelectLegBall(), (6 - GetTotalSelectBankerBall())));
	}

	divTotalbetInFooter.innerText = numberFormat(totalBet);
	
	if (document.getElementById("divTotalBetMoneyInFooter"))
	{
		divTotalBetMoneyInFooter.innerText = "$" + numberFormat(totalBet * 5);
	}
}

function f(n){
	if (n<=1) return 1;
	var ans = 1;
	for ( var i=2; i<=n; i++){
		ans *= i;
	}
	return ans;
}// End f()

function nCr(n, r){
	if (n==0 || r==0) return 0;
	// nCr = n!/[(n-r)!*r!]
	return (f(n)/(f(n-r)*f(r)));
}// End nCr()

function IsValidMarkSixBetLine()
{
	var isValid = false;
	var totalBankerBallNo = GetTotalSelectBankerBall();
	var totalLegBallNo = GetTotalSelectLegBall();

	if (totalBankerBallNo > 0 && totalLegBallNo > 0)
	{
		if ((totalBankerBallNo + totalLegBallNo) >= 7)
		{
			isValid = true;
		}
	}
	
	return isValid;
}

function IsValidNormalMarkSixBetLine()
{
	var isValid = false;
	var totalBankerBallNo = GetTotalSelectBankerBall();
	var totalLegBallNo = GetTotalSelectLegBall();

	if (totalBankerBallNo > 0 || totalLegBallNo > 0)
	{
		if (totalBankerBallNo > 0 && totalLegBallNo > 0)
		{
			if ((totalBankerBallNo + totalLegBallNo) >= 7)
			{
				isValid = true;
			}
		}
		else
		{
			if ((totalBankerBallNo + totalLegBallNo) >= 6)
			{
				isValid = true;
			}
		}
	}
	
	return isValid;
}

