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 processFieldOnChange(ticket, lineNumber, set, slotNumber, field, special, form) {
	var error = checkField(ticket, lineNumber, set, slotNumber, field, special, form);
	var e = document.getElementById("p"+ticket+"l"+lineNumber);
	if(error != ""){		
		$(e).addClass('error');
		fldID = field.id;		
		setErrorMessage("<strong>" + error + "</strong>");	
		setTimeout("document.getElementById(fldID).focus();",1);
		setTimeout("document.getElementById(fldID).select();",1);
	} 
}

function processFieldOnBlur(ticket, lineNumber, set, slotNumber, field, special, form) {
	var error = checkField(ticket, lineNumber, set, slotNumber, field, special, form);
	var stillHasError = checkAllNumbers(ticket, lineNumber, set, special, form);
	var e = document.getElementById("p"+ticket+"l"+lineNumber);	
	if(error != "" || stillHasError != ""){		
		$(e).addClass('error');
		if (error != "") {
			setErrorMessage("<strong>" + error + "</strong>");			
		} else if (stillHasError != "") {
			setErrorMessage("<strong>" + stillHasError + "</strong>");		
		}			
	} else if (stillHasError == "") {
		$(e).removeClass('error');
		clearErrorMessage();	
	}
}

function processFieldOnFocus(ticket, lineNumber, set, slotNumber, field, special, form) {
	var stillHasError = checkAllNumbers(ticket, lineNumber, set, special, form);
	var e = document.getElementById("p"+ticket+"l"+lineNumber);	
	if(stillHasError != ""){		
		$(e).addClass('error');		
		setErrorMessage("<strong>" + stillHasError + "</strong>");	
	} 
}

function checkField(ticket, lineNumber, set, slotNumber, field, special, form)
{
	var hasError = false;
	var errorMessage;
	var val = $(field).val();
	var localMinValue = (special ? specialMinValue : minValue);
	var localMaxValue = (special ? specialMaxValue : maxValue);

	if(val && val.length !=0 && !isNumeric(val, true)) {
		hasError = true;
		errorMessage = numbersOnlyMsg;
	} else {
		errorMessage = invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue;		
		if(val.length == 1) {
			if(val == 0) {
				hasError = true;		
			} else {
				$(field).val("0" + val);
			}
		}		
		if($(field).val().length == 2) {			
			if(val < localMinValue || val > localMaxValue){
				hasError = true;			
			}
		}
	} 	
	//get the value again 
	var val = $(field).val();
	var startIdx = 0;
	var endIdx   = special ? specialNumsPerBoard : mainNumsPerBoard;
	if (hasError == false) {
	   for(k=startIdx; k<endIdx; k++) {
	   	if(k != slotNumber) {
			var field2 = special ? document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix2["+k+"]")[0] : document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix1["+k+"]")[0];
	   		var i = field2.value;
	  		if( val != 0 && val == i) {
		   	   if(flag) {
		   	   	errorMessage = duplicatedNumberMsg;
		   	   	hasError = true;
		   	   }
	   	   	   break;
	   	   	}
	   	 }
	   }
   	}
	
	if (hasError) {
		return errorMessage;
	} else {
		return "";
	}
}

function checkAllNumbers(ticket, lineNumber, set, special, form)
{
	//now check for duplicates
	var startIdx = 0;
	var endIdx   = special ? specialNumsPerBoard : mainNumsPerBoard;
	var errorMessage = "";	
	var localMinValue = (special ? specialMinValue : minValue);
	var localMaxValue = (special ? specialMaxValue : maxValue);
	
	for (j = startIdx; j < endIdx; j++) {
		var field1 = special ? document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix2["+j+"]")[0] : document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix1["+j+"]")[0];
		var val = field1.value;					
		if (val) {
			if (val == 0 || val < localMinValue || val > localMaxValue){
				errorMessage = invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue;
				break;
			}
			if(val.length !=0 && !isNumeric(val, true)) {
			   	 		errorMessage = numbersOnlyMsg;
			   	 		break;
			} 
			for (k=startIdx; k<endIdx; k++) {
		   		if(k != j) {
					var field2 = special ? document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix2["+k+"]")[0] : document.getElementsByName("ticket["+ticket+"].line["+lineNumber+"].matrix1["+k+"]")[0];
			   		var i = field2.value;
			   	 	if( val != 0 && val == i) {
				   	   if(flag) {
				   	   	errorMessage = duplicatedNumberMsg;
				   	   }
			   	   	   break;
			   	   	}
		   	 	}
		    }   
	    }
    }
    return errorMessage;	
}


function isVLN(obj, lineNumber, slotNumber) {
	if (checkLDChange(obj, lineNumber, slotNumber) && val != luckyDip) {
		if(slotNumber == (numbersPerBoard - 1) &&  (obj.value.length>=2)){
				return;
		}
	
		if(isValidInput(obj, lineNumber, slotNumber)) {
			updateAll(lineNumber);
		} else {
			scroll(0,0);
		}
		return;
	}
	else {
		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 = "";
   	displayError(numbersOnlyMsg, lineNumber, slotNumber);
   	setTimeout(timeOutFocus,1);
   	obj.focus();
	   }
   	return false;

   }

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


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

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

   if(val < localMinValue || val > localMaxValue) {
   	var errorMessage = invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue;
   	displayError(errorMessage, lineNumber, slotNumber);
   	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) {
   	   		displayError(duplicatedNumberMsg, lineNumber, slotNumber); 	   		
   	   		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;}  	 
  	 removeAllBoardErrors();  	 
  	 return true;
    }
    
}

function displayError(message, lineNumber, slotNumber){

	if(lineNumber != null){
		var lineNoId = "#pl"+lineNumber;
		$(lineNoId).addClass('error');
		if(slotNumber != null){
   			var inputNoId = "input#"+inputGameName+lineNumber+slotNumber;
   			$(inputNoId).addClass('error');
   		}
   	}
   	setErrorMessage("<strong>" + message + "</strong>");

}

function displayErrorWithButton(errorMessage, buttonMessage, buttonUrl, onclick){
	
	var error = "<a href='"+buttonUrl+"' class='primary'><span>"+buttonMessage+"</span></a>";
	if (!(onclick=="")){
	  error = "<a class='primary' onclick='"+onclick+"'><span>"+buttonMessage+"</span></a>";
	}
	setErrorMessage("<strong>" + errorMessage + "</strong>"+ error); 

}

function displayErrorWithConfirm(errorMessage, buttonMessage1, buttonMessage2, onclick1, onclick2){
	
	var error1 = "<a class='primary' onclick='"+onclick1+"'><span>"+buttonMessage1+"</span></a>";
	var error2 = "<a class='primary' onclick='"+onclick2+"'><span>"+buttonMessage2+"</span></a>";
	var error = error1+error2;
	setErrorMessage("<strong>" + errorMessage + "</strong>"+ error); 
}

function displayErrorWithContinueAndCancel(errorMessage, uri){
	
	var error1 = "<a class='primary' href='"+uri+"'><span>Continue</span></a>";
	var error2 = "<a class='primary' onclick='removeAllBoardErrors()'><span>Cancel</span></a>";
	var error = error1+error2;
	setErrorMessage("<strong>" + errorMessage + "</strong>"+ error); 
}

function displayDropDownError(message){

	$('.step1').addClass('noplay');
   	setErrorMessage("<strong>" + message + "</strong>");

}

function removeAllBoardErrors(){

	clearErrorMessage();
	for(x=0; x<noOfBoards; x++) {	
		var lineNoId = "#pl" + x;
		$(lineNoId).removeClass('error');
		for(y=0; y<7; y++) {
		   	var inputNoId = "input#"+inputGameName+x+y;	
			$(inputNoId).removeClass('error');
		}	
		
	}


}

function removeDropDownError(){

	$('.step1').removeClass('noplay');
   	clearErrorMessage();

}


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 = "";
   	displayError(numbersOnlyMsg, lineNumber, slotNumber);
   	setTimeout(timeOutFocus,1);
   	obj.focus();
	   }
   	return false;

   }

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


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

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

   if(val < localMinValue || val > localMaxValue) {
   	var errorMessage = invalidNumberMsg+" "+localMinValue+" "+andMsg+" "+localMaxValue;
   	displayError(errorMessage, lineNumber, slotNumber);
   	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) {
   	   		 		
   			displayError(duplicatedNumberMsg, lineNumber, slotNumber);
   	   		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;}
  	 removeAllBoardErrors();  
  	 return true;
    }
}

function validatePlaySlip() {

    for (boardNum = 0; boardNum < noOfBoards; boardNum++) {
        var tempNum = boardNum + 1;
        if (boards[boardNum] == 2) {
            displayError(tooFewNumbersMsg, boardNum , null);
            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.
        displayError(noBoardsErrorMsg, null , null);
        _validatePlaySlip();
        return;
    }

    if (!_validatePlaySlip()) {
        return;
    }

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

function validateCP() {
var weeks = noOfWeeks();

if(weeks == -1) {
displayError(CPNotForLongPlay);
return false;
}
return true;
}

function validateCPandDN() {
	var weeks = noOfWeeks();
		if(weeks == -1) {
			displayError(CPNotForLongPlay);
			return false;
		}
		if(document.lottoPlayslipForm.playAddOnGame[0].checked){		
			displayErrorWithContinueAndCancel(confirmLostDreamNumber, "javascript:goToLongPlay()");
			return false;			
		}
	return true;
}


function goToLongPlay(){
	document.lottoPlayslipForm.action = document.lottoPlayslipForm.action + "?addToBasketFirst.x=addToBasketFirst";
	document.lottoPlayslipForm.submit();
}

function validateLongPlaySlip(from) {


	for(boardNum=0; boardNum<noOfBoards; boardNum++) {
		var tempNum = boardNum + 1;
		if(boards[boardNum] == 2) {
			displayError(tooFewNumbersMsg);
			return false;
		}
	}
	if (from = "editFromBasket") {
		return;
	}	
	calculateAmount();
	if(from == null){
		calculateGlobalValues();
		if(noOfBoardsSelected() == 0) {
		displayError(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?jsvalidated=true&currentPlayslipNumber=' + currPSNum + '#BuyStart' ;
	  document[gameName + "PlayslipForm"].submit();
  }else{
	  var ans;
	  var prevMode = document[gameName + "PlayslipForm"].prevLongPlayslipActionMode.value;
	  if(prevMode == 'editPlayslip'){
		 displayErrorWithConfirm(updatePlayslipIntoBasketMsg, "Yes", "No", "editFromBasketYes(\"editPlayslip\", "+currPSNum+")", "editFromBasketNo("+currPSNum+")");
	  }else{
		displayErrorWithConfirm(addPlayslipIntoBasketMsg, "Yes", "No", "editFromBasketYes("+prevMode+","+currPSNum+")", "editFromBasketNo("+currPSNum+")");
	  }	
  }
}

function editFromBasketYes (prevMode, currPSNum) {
	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?currentPlayslipNumber='+currPSNum+'&updateBeforeEdit=yes&previousPlayslipNumber='+prevPSNum + '#BuyStart';
	}else{
		document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipAction.do?currentPlayslipNumber='+currPSNum+'&addBeforeEdit=yes' + '#BuyStart';
	}
    validateLongPlaySlip("editFromBasket");
	incrementRefreshCount();
	document[gameName + "PlayslipForm"].submit();
}

function editFromBasketNo(currPSNum) {
	document[gameName + "PlayslipForm"].longPlayslipActionMode.value="editPlayslip";
    document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do?jsvalidated=true&currentPlayslipNumber=' + 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"){
		displayError(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&hash=#BuyStart';
	  }else{
	    document[gameName + "PlayslipForm"].action = contextURI+'/gaming/drawgame/'+gameName+'LongPlayslipActionConfirm.do#BuyStart';
	  }
		 document[gameName + "PlayslipForm"].longPlayslipActionMode.value="updateDrawDays";
		 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 validateEmptyOrLD(lineNumber) {   
   var temp;
   for(var i=0; i<numbersPerBoard; i++) {
      temp = document[gameName + "PlayslipForm"].elements["drawGameBoards["+lineNumber+"].numbersChosen["+i+"]"].value;    
	  if(temp!=null && temp !='')      {
	  	if (temp!="LD") {
	  		return false;
	  	}
	  }   
   }
   return true;
}

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;

var currentValue ="";
function cLD(obj, lineNumber, slotNumber) {
   currentValue = obj.value; 
}

function checkLDChange(obj, lineNumber, slotNumber){
   val = obj.value;
   if(currentValue == luckyDip && val != luckyDip) {
	   callBlur=false;		
	   displayError(clearConfirmMsg, lineNumber , slotNumber);
	   obj.value = "";
	   return false;
   }
   else if (val == luckyDip) {
    	clearErrorMessage()
    	var lineNoId = "#pl"+lineNumber;
		$(lineNoId).removeClass('error');
	   	return true;
   }
}


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 = (costPerBoardDn * 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;
	}
	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){
   		displayErrorWithContinueAndCancel(confirmLastNumberOverwriteMsg, "javascript:document.getLastNumbersForm.submit();");
   		return false;
   	}else{
   		document.getLastNumbersForm.submit();
   	}
	
}


function confirmLastLottoNumbers(){

	var formname = document[gameName + "PlayslipForm"];   	
   	var blankLotto = 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 !== "") {
	   			blankLotto = false;
	   			break;
	   		}
	   	}
	}

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

    if (blankDN && !blankLotto) {
		displayErrorWithContinueAndCancel(confirmLastNumberOverwriteMsg, "javascript:document.getLastNumbersForm.submit();");
   		return false;
	}
	else if (!blankDN && !blankLotto){
		displayErrorWithContinueAndCancel(confirmLastNumberOverwriteMsg, "javascript:document.getLastNumbersForm.submit();");
		displayErrorWithContinueAndCancel(confirmLostDreamNumberForLongPlay, "javascript:document.getLastNumbersForm.submit();");
   		return false;
	}
	
	else if (!blankDN && blankLotto) {
		displayErrorWithContinueAndCancel(confirmLostDreamNumberForLongPlay, "javascript:document.getLastNumbersForm.submit();");
	}
	
	else if (blankDN && blankLotto) {
		  return true;
	}
	
	return false;
	
}


function confirmLastDreamNumbers(){

	var blank = true;
   	var formname = gameName + "PlayslipForm";

   	val = document[gameName + "PlayslipForm"].elements["addOnGameNumbers"].value;
	if(val !== "") {
		blank = false;
	}

	if(blank) {
	   	return true;
   	}else{
   		var uri = "javascript:updateLastDreamnumber();";
   		displayErrorWithContinueAndCancel(confirmLastDreamNumberOverwriteMsg, uri);
   		return false;
   	}
}

function updateLastDreamnumber() {
	var formname = gameName + "PlayslipForm";
	var action = document[formname].elements["playLastDnAction"].value;
	document[formname].action = action;
	document[formname].submit();
}

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) {
        displayErrorWithContinueAndCancel(confirmLostDreamNumber, uri);
       }else{
        document.lottoPlayslipForm.action = uri;
        document.lottoPlayslipForm.submit(); 
    }
}

function countdownNumWeeksChange() {
	// called when the number of weeks is changed
	if(inAdvancePlayCountdown && previousNumberOfWeeks != 0) {
		document[gameName + "PlayslipForm"].daysOfWeek.options[0].selected = true;
		previousDaysOfWeek = "_______";
	}
	previousNumberOfWeeks = document[gameName + "PlayslipForm"].numberOfWeeks.value;

	return true;
}

function countdownDOWChange() {
	// called when the days of week is changed
	if(inAdvancePlayCountdown && previousDaysOfWeek != "_______") {
		document[gameName + "PlayslipForm"].numberOfWeeks.options[0].selected = true;
		previousNumberOfWeeks = 0;
	}
	previousDaysOfWeek = document[gameName + "PlayslipForm"].daysOfWeek.value;

	return true;
}

function setDates(fromDateDay, fromDateMonthYear, toDateDay, toDateMonthYear) {
	var e = document.getElementById("fromDateDay");
	e.value = fromDateDay;
	e = document.getElementById("fromDateMonthYear");
	e.value = fromDateMonthYear;
	e = document.getElementById("toDateDay");
	e.value = toDateDay;
	e = document.getElementById("toDateMonthYear");
	e.value = toDateMonthYear;
}