var checkboxCounter=0;
var ld=0;
var totamount=0.00;
var oldAmount=0.00;
var totalle=0;
var counter = 0;
var radioCounter=0;
var addOnTotAmount=0.00;

var luckyDip = "LD";
var flag = true;
var boards = new Array(8);

var numbersPerBoard = mainNumsPerBoard + specialNumsPerBoard;

function clearLine(lineNumber) {
   for(var i=0; i<numbersPerBoard; i++) {
	document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+i+"]"].value = "";
   }
   updateAll(lineNumber);
}



function setLuckyDip(lineNumber) {



// new for HOTPICKS - The following has been edited, so that it doesnt show LD in dead boxes.

   for(var i=0; i<numbersPerBoard; i++) {





   	 document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+i+"]"].value = luckyDip;



   }
    
	if (gameName=='hotPicks')
	{
	   clearExtraLuckyDips(lineNumber);
	}
   

   updateAll(lineNumber);






}

function addLuckyDip2(lineNumber) {
   var confirmMsg = false;

   for(i=0; i<numbersPerBoard; i++) {
    val = document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+i+"]"].value;
   	if(val !== "" && val != luckyDip) {
   		confirmMsg = true;
   		break;
   	}
   }

   if(confirmMsg) {
   	if(confirm(luckyDipConfirmMsg)) {
   		setLuckyDip(lineNumber);
   	} else {
   	return;
	}
   }
   else {
   	setLuckyDip(lineNumber);
   }
}

function isVLN(obj, lineNumber, slotNumber) {

	if(slotNumber == (numbersPerBoard - 1) &&  (obj.value.length>=2)){
			return;
	}

	if(isValidInput(obj, lineNumber, slotNumber)) {
		updateAll(lineNumber);
	} else {
		scroll(0,0);
	}
	return;
}


function isVLN2(obj, lineNumber, slotNumber) {
	if(slotNumber>=mainNumsPerBoard)
	{
		if(isValidInput2(obj, lineNumber, slotNumber))
		{
			updateAll(lineNumber);
		}  else {
			scroll(0,0);
		}
	} else
	{
		if(isValidInput(obj, lineNumber, slotNumber))
		{
			updateAll(lineNumber);
		} else {
			scroll(0,0);
		}
	}
	return;
}

function isSpecialSlot(slotNumber) {
	return (slotNumber >= mainNumsPerBoard);
}

function isValidInput(obj, lineNumber, slotNumber) {
	var isSpecial = isSpecialSlot(slotNumber);

   TrimTextField(obj);

   val = obj.value;
   fieldName = "\"drawGameBoards["+lineNumber+"].numbersChosen["+slotNumber+"]\"";

   timeOutFocus = "document." + gameName + "PlayslipForm.elements[" +fieldName+ "].focus()";

	if(val == luckyDip ) {
		if(callBlur) {
		obj.value = "";
   	alert(numbersOnlyMsg);
   	setTimeout(timeOutFocus,1);
   	obj.focus();
	   }
   	return false;

   }

   if(val === "" ) {
   	if( !flag) {flag = true;}
   	return true;
   }


   if(! isNumeric(val, true)) {
   	alert(numbersOnlyMsg);
   	setTimeout(timeOutFocus,1);
   	obj.value = "";
   	obj.focus();
   	return false;
   }

	var localMinValue = (isSpecial ? specialMinValue : minValue);
	var localMaxValue = (isSpecial ? specialMaxValue : maxValue);

   if(val < localMinValue || val > localMaxValue) {
   	alert(invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue);
   	setTimeout(timeOutFocus,1);
   	obj.value="";
   	obj.focus();
   	return false;
   }

	var startIdx = (isSpecial ? mainNumsPerBoard : 0);
	var endIdx   = (isSpecial ? mainNumsPerBoard + specialNumsPerBoard : mainNumsPerBoard);

   for(k=startIdx; k<endIdx; k++) {
   	 if(k != slotNumber) {
   	   if( val == document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+k+"]"].value - 0) {
   	   	 if(flag) {
   	   		alert(duplicatedNumberMsg);
   	   		setTimeout(timeOutFocus,1);
   	   		obj.value="";
   	   		obj.focus();

   	   		return;
   	   	 }
   	   	 break;

   	   }
   	 }

   }

   if(val < 10 && val.length <2 && val.length > 0) {
   	  obj.value = "0"+val;
   }

    if(k < numbersPerBoard-specialNumsPerBoard) {
    	flag = !(flag);
    	return false;
    }
    else {
  	 if( !flag) {flag = true;}
  	 return true;
    }
}


function isValidInput2(obj, lineNumber, slotNumber) {
	var isSpecial = isSpecialSlot(slotNumber);

   TrimTextField(obj);

   val = obj.value;
   fieldName = "\"drawGameBoards["+lineNumber+"].numbersChosen["+slotNumber+"]\"";

   timeOutFocus = "document." + gameName + "PlayslipForm.elements[" +fieldName+ "].focus()";

	if(val == luckyDip ) {
		if(callBlur) {
		obj.value = "";
   	alert(numbersOnlyMsg);
   	setTimeout(timeOutFocus,1);
   	obj.focus();
	   }
   	return false;

   }

   if(val === "" ) {
   	if( !flag) {flag = true;}
   	return true;
   }


   if(! isNumeric(val, true)) {
   	alert(numbersOnlyMsg);
   	setTimeout(timeOutFocus,1);
   	obj.value = "";
   	obj.focus();
   	return false;
   }

	var localMinValue = (isSpecial ? specialMinValue : minValue);
	var localMaxValue = (isSpecial ? specialMaxValue : maxValue);

   if(val < localMinValue || val > localMaxValue) {
   	alert(invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue);
   	setTimeout(timeOutFocus,1);
   	obj.value="";
   	obj.focus();
   	return false;
   }

	var startIdx = (isSpecial ? mainNumsPerBoard : 0);
	var endIdx   = (isSpecial ? mainNumsPerBoard + specialNumsPerBoard : mainNumsPerBoard);

   for(k=startIdx; k<endIdx; k++) {
   	 if(k != slotNumber) {
   	   if( val == document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+k+"]"].value - 0) {
   	   	 if(flag) {
   	   		alert(duplicatedNumberMsg);
   	   		setTimeout(timeOutFocus,1);
   	   		obj.value="";
   	   		obj.focus();

   	   		return;
   	   	 }
   	   	 break;

   	   }
   	 }

   }

   if(val < 10 && val.length <2 && val.length > 0) {
   	  obj.value = "0"+val;
   }

    if(k < numbersPerBoard) {
    	flag = !(flag);
    	return false;
    }
    else {
  	 if( !flag) {flag = true;}
  	 return true;
    }
}

function validatePlaySlip() {

	for (boardNum = 0; boardNum < noOfBoards; boardNum++) {
        var tempNum = boardNum + 1;
        if (boards[boardNum] == 2) {
            alert(tooFewNumbersMsg);
            return;
        }
    }
    var playAddOnGameRadioBox = document[gameName + "PlayslipForm"].playAddOnGame;
    
    if (noOfBoardsSelected() == 0 // main game not available or not played
            && (!playAddOnGameRadioBox // no addon game for this game
            	|| !playAddOnGameRadioBox[0] // addon game not available
				|| !playAddOnGameRadioBox[0].checked)) //addon game not played
    {
        // We must play at least one game or add-on game.
        alert(noBoardsErrorMsg);
        return;
    }

    if (!_validatePlaySlip()) {
        return;
    }

    calculateAmount();

    document[gameName + "PlayslipForm"].submit();
    return;
}


function validateLongPlaySlip(from) {
	for(boardNum=0; boardNum<noOfBoards; boardNum++) {
		var tempNum = boardNum + 1;
		if(boards[boardNum] == 2) {
			alert(tooFewNumbersMsg);
			return false;
		}
	}
	calculateAmount();
	if(from == null){
	calculateGlobalValues();
		if(noOfBoardsSelected() == 0) {
		alert(noBoardsErrorMsg);
		return false;
	}
	}else{
		if(noOfBoardsSelected() == 0) {
			document[gameName + "PlayslipForm"].action = '/player/gaming/drawgame/'+gameName+'LongPlayslipActionAddMoreLines.do?empty=yes#BuyStart';
			}
		document[gameName + "PlayslipForm"].submit();
		return;
	}
	return true;
}

function addToBasket(uri) {
  document[gameName + "PlayslipForm"].action = uri + '/gaming/drawgame/'+gameName+'LongPlayslipActionAddMoreLines.do';
  document[gameName + "PlayslipForm"].longPlayslipActionMode.value="addToBasketFirst";
  validateLongPlaySlip("addMoreLines");
}

function deleteFromBasket(uri, mode, currentPSNum) {
	var count;
	if(mode == "deletePlayslip"){
		incrementRefreshCount();
		count = document[gameName + "PlayslipForm"].longPlayslipActionModeCount.value;
	}
	window.location = uri+'/gaming/drawgame/deletePlayslipCheckPage.do?longPlayslipActionMode='+mode+'&currentPlayslipNumber='+currentPSNum+ '#BuyStart';
}

function incrementRefreshCount(){
	var count = document[gameName + "PlayslipForm"].longPlayslipActionModeCount.value;
	var countInt = parseInt(count) + 1;
	document[gameName + "PlayslipForm"].longPlayslipActionModeCount.value = countInt;
}
function addToBasketInCreate() {
	incrementRefreshCount();
	document[gameName + "PlayslipForm"].longPlayslipActionMode.value="addToBasket";
	document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipAction.do#BuyStart';
    return validateLongPlaySlip();
}

function editFromBasket(currPSNum) {
  if(noOfBoardsSelected() == 0) {
	  document[gameName + "PlayslipForm"].longPlayslipActionMode.value="editPlayslip";
	  document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do?' + currPSNum + '#BuyStart' ; 
	  document[gameName + "PlayslipForm"].submit();
  }else{
	  var ans;
	  var prevMode = document[gameName + "PlayslipForm"].prevLongPlayslipActionMode.value;
	  if(prevMode == 'editPlayslip'){
		  ans = confirm(updatePlayslipIntoBasketMsg);
	  }else{
		ans = confirm(addPlayslipIntoBasketMsg);
	  }
	  if(ans == true){
		  	document[gameName + "PlayslipForm"].longPlayslipActionMode.value="addToBasket";
			if(prevMode == 'editPlayslip'){
				var prevPSNum = document[gameName + "PlayslipForm"].previousPlayslipNumber.value;
				document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipAction.do?'+currPSNum+'&updateBeforeEdit=yes&previousPlayslipNumber='+prevPSNum + '#BuyStart';
			}else{
				document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipAction.do?'+currPSNum+'&addBeforeEdit=yes' + '#BuyStart';
			}
		    validateLongPlaySlip();
			incrementRefreshCount();
			document[gameName + "PlayslipForm"].submit();
	  }else{
		    document[gameName + "PlayslipForm"].longPlayslipActionMode.value="editPlayslip";
	 	    document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do?' + currPSNum + '#BuyStart';
  		    document[gameName + "PlayslipForm"].submit();
	  }
  }
}


function updateBasket(currPlayslip) {
  document[gameName + "PlayslipForm"].longPlayslipActionMode.value="updateEditedPlayslip";
	document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipAction.do?currentPlayslipNumber=' + currPlayslip + '#BuyStart';
  return validateLongPlaySlip();
}


function proceedToConfirm() {
	if(document[gameName + "PlayslipForm"].noOfPayslips.value == "0"){
		alert(addPlayslipInBasketMsg);
		return false;
	}else{
		if (!_validatePlaySlip()) {return false;}
		document[gameName + "PlayslipForm"].longPlayslipActionMode.value="proceedToConfirm";
		return true;
	}
}

function calculateBasketAmount() {
	var numWeeks = noOfWeeks();
	var numDays = noOfDays();
	if(numWeeks!=0 && numDays!=0 && document[gameName + "PlayslipForm"].noOfPayslips.value != "0"){
	  var prevMode = document[gameName + "PlayslipForm"].prevLongPlayslipActionMode.value;
	  if(prevMode == 'editPlayslip'){
		document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do?updateBeforeEdit=yes&mode=updateDrawDays&hash=#BuyStart';
	  }else{
	    document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do?mode=updateDrawDays#BuyStart';
	  }
	document[gameName + "PlayslipForm"].submit();
	}
}

function updateGlobalBoard(lineNumber) {
   var values = new Array(numbersPerBoard);

   var luckyDipField = document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].luckyDip"];
   if (!luckyDipField) {return;}
   luckyDipField.value = "false";

   for(var i=0; i<numbersPerBoard; i++) {
     values[i] = document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+i+"]"].value;
   }
   if(isBoardEmpty(values)) {
   	boards[lineNumber] = 0; 
   	return;
   }
   if(isBoardLD(values)) {
      	luckyDipField.value = "true"; 
   	   	boards[lineNumber] = 1;
      	return;
   }

   for(var j=0; j<numbersPerBoard; j++) {
       if(values[j] == "" || values[j] == luckyDip) { 
		   if (!document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+j+"]"].disabled) {
				boards[lineNumber] = 2;
				return;
		   }
       }
   }
   boards[lineNumber] = 1;
   return;

}

function isBoardEmpty(values) {
	for(var i=0; i<values.length; i++) {
		if(values[i] !== "") {
			return false;
		}
	}
	return true;
}

function isBoardLD(values) {
	return values[0] == luckyDip;
}

function updateAll(lineNumber) {
     updateGlobalBoard(lineNumber);
     calculateAmount();
     updateAmount();
}

var callBlur = true;

function cLD(obj, lineNumber, slotNumber) {
   callBlur=true;
   val = obj.value;
   if(val == luckyDip) {
	   callBlur=false;
	if(confirm(clearConfirmMsg)) {
	    clearLine(lineNumber);
	 }
	else {
   		document[gameName + "PlayslipForm"][postClrLDFocusElt].focus();
   		return;
   	}
   }
}


function noOfBoardsSelected() {
	var noOfBoardsCompleted = 0;
	for(var m=0; m<noOfBoards; m++) {
		if(boards[m] == 1) {noOfBoardsCompleted ++;}
	} 
	return noOfBoardsCompleted;
}


function noOfWeeks() {
	var elt = document[gameName + "PlayslipForm"].numberOfWeeks;
	if (elt) {
		if(elt.value == 1) {
			return 1;
			}
		var index = elt.selectedIndex;
		return (elt.options[index].value - 0);
	} else {
		return 1;
	}
}

function calculateAmount() {
	var numBoards = noOfBoardsSelected();
	var numWeeks = noOfWeeks();
	var numDays = noOfDays();
	totamount = (costPerBoard * numBoards * numWeeks * numDays);
	if(oldAmount != totamount) {
		oldAmount = totamount;
		updateAmount();
	}
	// code to check dreamnumber
	addOnTotAmount = (costPerBoard * numWeeks * numDays);
	updateAmount();
}


function calculateGlobalValues() {

	for(var boardnum=0; boardnum<noOfBoards; boardnum++) {
		updateGlobalBoard(boardnum);
	}
	calculateAmount();
    updateAmount();
}

function isInteger(val) {
	for (var i=0; i < val.length; i++) {
		if (!isDigit(val.charAt(i))) { return false; }
	}
	return true;
	}


function isDigit(num) {
	var string="1234567890";
	if (string.indexOf(num) != -1) {
		return true;
		}
	return false;
	}

function LTrim(str) {
	for (var i=0; str.charAt(i)==" "; i++) {/*just count*/}
	return str.substring(i,str.length);
	}
function RTrim(str) {
	for (var i=str.length-1; str.charAt(i)==" "; i--) {/*just count*/}
	return str.substring(0,i+1);
	}
function Trim(str) {
	return LTrim(RTrim(str));
	}

function TrimTextField(obj) {
        obj.value = LTrim(RTrim(obj.value));
	}

function isDropDownNotSelected(obj) {
	var index = obj.selectedIndex;	
	if(index > 0) {
		return false;
	}
	// If there is only one selection in the dropdown
	if(index == 0 && obj.length ==1) {
		return  false;
	}
	return true;
}

function currencyFormat(X) {
  var T, S=new String(Math.round(X*100));
  while (S.length<3) {
  	S='0'+S;
  }
  return S.substr(0, T=(S.length-2)) + '.' + S.substr(T, 2);
 }

function currencyFormatInt(X) {
  var S=new String(Math.round(X));
  if ( X == Math.round(X) ) {
  	return S;
  }
  return currencyFormat(X);
}

function isNumeric(string, ignoreWhiteSpace) {
	if (string.search) {
		if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) {return false;}
	}
	return true;
}

var numDays = 0, numHours = 0, numMinutes = 0, countDown = 0;
var strDrBrk = "";
var refreshrate = 5;

function formatDrBrk() {

	numDays = Math.floor(DrBrk/(60*60*24));
	numHours = Math.floor((DrBrk%(60*60*24))/(60*60));
	numMinutes = Math.floor((DrBrk%(60*60))/(60));

	if(numDays >= 1) {
		strDrBrk = (numDays+1) + "&nbsp;" + days;
	}
	else if(numHours >= 1) {
		strDrBrk = numHours + "&nbsp;" + ((numHours>1) ? hours : hour) + "&nbsp;" + numMinutes + "&nbsp;" + ((numMinutes == 1) ? minute : minutes);
	}
	else if(numMinutes >= 2) {
		strDrBrk = numMinutes + "&nbsp;" + minutes;
	}
	else {
		strDrBrk = lessthanTwoMins;
	}

}

var tabcheck = 0;
var shiftcheck = 0;

function shiftChecker(e, bd, nc){

	shiftchect = 1;

}

function chkTb(e, bd, nc){
	if(shiftcheck == 1) {
		shiftcheck = 0;
		return;
	}
	if(tabcheck == 1) {
		tabcheck = 0;
		shiftcheck = 1;
		return;
	}
	if (e.value.length>=2){
		if(nc == (numbersPerBoard - 1)){
			isVLN2(e,bd,nc);
		}

		if(nc == (numbersPerBoard - 1) && bd == (noOfBoards - 1)){
			document[gameName + "PlayslipForm"].elements['drawGameBoards['+bd+'].numbersChosen['+nc+']'].focus();
		}else{
			if(nc<(numbersPerBoard-1)){
				nc++;
			}else{
				//if next line is Lucky Dip then dont let the focus go there cause that will show another alert for clearing lucky dip
				if(document[gameName + "PlayslipForm"].elements["drawGameBoards["+(bd+1)+"].luckyDip"].value == 'true'){

				}else{
				nc=0;
				bd++;
			}
			}
			// Hotpicks adds complication here. cant just go to next cell, as might not be enabled
			// run a loop to find the next enabled cell to move focus into
			if (document[gameName + "PlayslipForm"].elements['drawGameBoards['+bd+'].numbersChosen['+nc+']'].disabled)
			{
				var boardNum=0;
				for(boardNum=bd+1; boardNum<noOfBoards; boardNum++) {
					if(document[gameName + "PlayslipForm"].elements["drawGameBoards["+boardNum+"].luckyDip"].value == 'true'){
						boardNum=999;
						break;
					}
					if (!document[gameName + "PlayslipForm"].elements['drawGameBoards['+boardNum+'].numbersChosen[0]'].disabled){

						document[gameName + "PlayslipForm"].elements['drawGameBoards['+boardNum+'].numbersChosen[0]'].focus();
						boardNum=999;
					}
				}
				if (boardNum!=1000)
				{
					document[gameName + "PlayslipForm"].elements['daysOfWeek'].focus();
				}
			} else {
	
				document[gameName + "PlayslipForm"].elements['drawGameBoards['+bd+'].numbersChosen['+nc+']'].focus();
			}
		}
	}
}

function tabChecker(e, bd, nc){

	tabcheck = 1;
	document[gameName + "PlayslipForm"].elements['drawGameBoards['+bd+'].numbersChosen['+nc+']'].focus();

}


function confirmLastNumbers(){

   	var blank = true;
    for(boardNum=0; boardNum<noOfBoards; boardNum++) {
	   	for(i=0; i<numbersPerBoard; i++) {
	    	val = document[gameName + "PlayslipForm"].elements["drawGameBoards["+boardNum+"].numbersChosen["+i+"]"].value;
	   		if(val !== "") {
	   			blank = false;
	   			break;
	   		}
	   	}
	}

   	if(blank || confirm(confirmLastNumberOverwriteMsg)) {
   	   document.getLastNumbersForm.submit();
   	}
	return;
}


function confirmLastLottoNumbers(){

	var formname = document[gameName + "PlayslipForm"];   	
   	var blank = true;
   	var result;
   	
    for(boardNum=0; boardNum<noOfBoards; boardNum++) {
	   	for(i=0; i<numbersPerBoard; i++) {
	    	val = document[gameName + "PlayslipForm"].elements["drawGameBoards["+boardNum+"].numbersChosen["+i+"]"].value;
	   		if(val !== "") {
	   			blank = false;
	   			break;
	   		}
	   	}
	}

    var playAddOnGameRadioBox = document.lottoPlayslipForm.playAddOnGame;
    var blankDN = (!playAddOnGameRadioBox[0] // addon game not available
            || !playAddOnGameRadioBox[0].checked) //addon game not played

    if (blankDN && !blank) {
		return confirm(confirmLastNumberOverwriteMsg);
	}
	else if (!blankDN && !blank){
		result = confirm(confirmLastNumberOverwriteMsg);
		if (result == true ){
			result = confirm(confirmLostDreamNumberForLongPlay);
		}
		return result;
	}
	
	else if (!blankDN && blank) {
		return confirm(confirmLostDreamNumberForLongPlay);
		
	}
	
	else if (blankDN && blank) {
		  return true;
	}
	
	return false;
	
}


function confirmSavedLottoNumbers(uri){
    var playAddOnGameRadioBox = document.lottoPlayslipForm.playAddOnGame;
    var addonGameNotPlayed = (!playAddOnGameRadioBox[0] // addon game not available
            || !playAddOnGameRadioBox[0].checked) //addon game not played
    if (addonGameNotPlayed
            || confirm(confirmLostDreamNumber) // user agreed to lose addon game
            ) {
        document.lottoPlayslipForm.action = uri;
        document.lottoPlayslipForm.submit();
    }
}
