var playgame = 1;
 function setLevel(){

    for(var j = document.forms[0].levelSelect.options.length; j >=0; j--){
        document.forms[0].levelSelect.options[j]= null;
    }

	var optionCount = 0;
	var selectedIdx = 0; 
 	for(var i=0;i<typeLevelArr.length;i++){			 
		var tl  = typeLevelArr[i].split("::");			 
		if(tl[0] == document.forms[0].selectedType.value){			 
			 document.forms[0].levelSelect.options[optionCount] = new Option(tl[2],tl[1]);
			 if(tl[1] == document.forms[0].selectedLevel.value){
				 selectedIdx = optionCount;
			 }
			 optionCount++;
		}
	}
	document.forms[0].levelSelect.selectedIndex = selectedIdx;
    document.forms[0].selectedLevel.value =  document.forms[0].levelSelect.options[selectedIdx].value

 }

 function setLevelOnChange(selectedValue){
	 document.forms[0].selectedType.value = selectedValue;
	 genertePuzNumMsg(selectedValue);
	 setLevel();
 }
 
 function genertePuzNumMsg(selectedValue){
	 if(document.getElementById('puznumMsg')){
	 if(selectedValue == '1'){
			document.getElementById('puznumMsg').innerHTML = "Enter # 1 - 1000";
	 }else if(selectedValue == '2'){
			document.getElementById('puznumMsg').innerHTML = "Enter # 1 - 50000000";
	 }else if(selectedValue =='3' || selectedValue == '4' || selectedValue == '5'){
			document.getElementById('puznumMsg').innerHTML = "Enter # 1 - 20 Billion!!";
	 } 

	 }
 }


 function changeLevel(selectedValue){
      document.forms[0].selectedLevel.value = selectedValue;
	  
 }
 
 function setInitialState(inputStr){
	eval("document.getElementById('td" +inputStr + "').style.backgroundColor  = '#ECF1EF';"); 	
 }

function changeFormat(selectedValue){	 
	document.forms[0].selectedFormat.value = selectedValue;
}
                
function getSolution(){
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
        for(var i=0; i< inputArray.length -1; i++){
			setInitialState(inputArray[i]);
			eval("document.forms[0].i" + inputArray[i] + ".value = document.forms[0].h" + inputArray[i] + ".value;");           
			eval("document.forms[0].r" + inputArray[i] + ".value = '';");  
			
        }  	 
}

function clearAll(){
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
        for(var i=0; i< inputArray.length -1; i++){
                eval("document.forms[0].i" + inputArray[i] + ".value = '';");  
				eval("document.forms[0].r" + inputArray[i] + ".value = '';"); 
				setInitialState(inputArray[i]);

		}                        
}


function clearAll_children(){
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
        for(var i=0; i< inputArray.length -1; i++){
				document.getElementById("td" + inputArray[i] ).innerHTML ="<img src='./content/images/empty.png' width='100px'/>";               
				eval("document.forms[0].r" + inputArray[i] + ".value = '';"); 
				 

		}                        
}



function getSolution_children(){
		var imgLoc = '';
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
	
        for(var i=0; i< inputArray.length -1; i++){
		
			var selectedNum =  document.getElementById('h' +inputArray[i]).value;			 
			if(selectedNum){				 	
					if( selectedNum == 1){
						imgLoc = '<img src="./content/images/' + dymImgLoc +'/1.png" width="100px"/>';						
						document.getElementById('td' +inputArray[i]).innerHTML = imgLoc;
					}else if(selectedNum == 2){
							imgLoc = '<img src="./content/images/' + dymImgLoc +'/2.png" width="100px"/>';
						document.getElementById('td' +inputArray[i]).innerHTML = imgLoc;
					}else if(selectedNum == 3){
						imgLoc = '<img src="./content/images/' + dymImgLoc +'/3.png" width="100px"/>';
						document.getElementById('td' +inputArray[i]).innerHTML = imgLoc;
					}else if(selectedNum == 4){
						imgLoc = '<img src="./content/images/' + dymImgLoc +'/4.png" width="100px"/>';
						document.getElementById('td' +inputArray[i]).innerHTML = imgLoc;
					} 
			}		                             
			
        }  	 
}


function checkSolution(){
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
	
		var finished = 'true';
 
        for(var i=0; i< inputArray.length -1; i++){
			var sol =  document.getElementById('h' +inputArray[i]).value;			 
			var entered =  document.getElementById('r' +inputArray[i]).value;			 
			 if(sol != entered){
				 finished = 'false';
			 }
			 
        }  

		if(finished == 'true'){
			alert('You Won!!');
			document.getElementById("playerror").innerHTML ="You Won!!";
		}
}

function checkSolution_competition(){
	 
		document.getElementById("playerror").innerHTML ="";
        var inputArray = missingPos.split(",");
	
		var finished = '1';

        for(var i=0; i< inputArray.length -1; i++){			
			var sol =  document.getElementById('h' +inputArray[i]).value.toUpperCase();				 
			var entered =  document.getElementById('i' +inputArray[i]).value.toUpperCase();	
		 
			 if(sol != entered){
				 finished = '0';
			 }
			 
        }  
		 
 
		if(finished == '1'){			 
			for(var j=0; j< inputArray.length -1; j++){					 
				eval("document.forms[0].i" + inputArray[j] + ".disabled = true;"); 
			} 
			ss();
			document.forms[0].unsolve.disabled = true;
			document.forms[0].PausePlay.disabled = true;	
			document.getElementById("playerror").innerHTML ="You Won!!";
			var conf = confirm('Congratulations, You Won!! \n Would you like to register this score? If so Please press OK. \n You can check out Top 10 players page');

			if(conf){
				document.forms[0].action = 'RegisterTimeAction.action';
				document.forms[0].method="POST";
				document.forms[0].submit();
			}

		 
		} 
}

function howiam(){
		document.getElementById("playerror").innerHTML ="";
		var errorCount = 0;
        var inputArray = missingPos.split(",");
        for(var i=0; i< inputArray.length -1; i++){	
				setInitialState(inputArray[i]);			
				eval("if(document.forms[0].i"+  inputArray[i] + ".value != '' && document.forms[0].i"+  inputArray[i] + ".value != document.forms[0].h" + inputArray[i] + ".value ) { errorCount++; document.getElementById('td"+ inputArray[i]  +"').style.backgroundColor  = '#EE3B3B';   }");
		}      
		if(errorCount > 0){
			document.getElementById("playerror").innerHTML = "<font color='#EE3B3B'>Error in " + errorCount +" Coloumns! :(</font>";
		}else{
			document.getElementById("playerror").innerHTML = "<font color='green'>Everything is fine :) </font>";
		}
}

 
 function generateNewSudoku(){	 
	if(!validateUserSelection()){		
		return false;
	}
	document.forms[0].action = 'SudokuGameAction.action?actionType=USERSELECTION';
	document.forms[0].method="POST";
	document.forms[0].submit();
 }

 function generateRandomSudoku(){	 
	document.forms[0].action = 'SudokuGameAction.action';
	document.forms[0].method="POST";
	document.forms[0].submit();
 }


function switchChildMode(){
	document.forms[0].action = 'SudokuGameAction.action?actionType=CHILDREN';
	document.forms[0].method="POST";
	document.forms[0].submit();
}

function switchCompetitionMode(){
	document.forms[0].action = 'SudokuGameCompetitionAction.action?actionType=COMPETITION';
	document.forms[0].method="POST";
	document.forms[0].submit();
}


function switchAdultMode(){
	document.forms[0].action = 'SudokuGameAction.action';
	document.forms[0].method="POST";
	document.forms[0].submit();	
}

     var t=[0, 0, 0, 0, 0, 0, 0, 1];

    function ss()
    {	
    t[t[2]]=(new Date()).valueOf();
    t[2]=1-t[2];
    if (0==t[2])
    {
        clearInterval(t[4]);
        t[3]+=t[1]-t[0];
        t[4]=t[1]=t[0]=0;
        disp();
    }
    else
    {
        t[4]=setInterval(disp, 43);
    }
    }

    function r()
    {
    if (t[2]) ss();
    t[4]=t[3]=t[2]=t[1]=t[0]=0;
    disp();
    t[7]=1;
    }

    function disp()
    {
    if (t[2]) t[1]=(new Date()).valueOf();
    t[6].value=format(t[3]+t[1]-t[0]);
    }

    function format(ms)
    {
    var d=new Date(ms+t[5]).toString()
        .replace(/.*([0-9][0-9]:[0-9][0-9]:[0-9][0-9]).*/, '$1');
    var x=String(ms%1000);
    while (x.length<3) x='0'+x;
//    d+=;
    return d;
    }

    function load()
    {
		 
    t[5]=new Date(1970, 1, 1, 0, 0, 0, 0).valueOf();
    t[6]=document.getElementById('disp');
    disp();
    }

	function pauseplay(){
		document.getElementById("startmessage").innerHTML ="";
		if(playgame == '0'){
			restoreValues();
			playgame = 1;
			document.forms[0].showSolution.disabled=false;
			document.forms[0].unsolve.disabled=false;
			document.forms[0].howiambutton.disabled=false; 
			document.forms[0].PausePlay.value = 'Pause';
		}else{			
			putX();
			playgame = 0;
			document.forms[0].showSolution.disabled=true;
			document.forms[0].unsolve.disabled=true;
			document.forms[0].howiambutton.disabled=true; 
			document.forms[0].PausePlay.value = 'Play';
		}
		ss();
	}


	function pauseplay_competition(){
		document.getElementById("startmessage").innerHTML ="";
		if(playgame == '0'){
			restoreValues();
			playgame = 1;			 
			document.forms[0].unsolve.disabled=false;			 
			document.forms[0].PausePlay.value = 'Pause';
		}else{			
			putX();
			playgame = 0;			 
			document.forms[0].unsolve.disabled=true;			 
			document.forms[0].PausePlay.value = 'Play';
		}
		ss();
	}

    function displayValue(){
        alert(document.forms[0].disp.value);
    }

	function backup(inputid){	
		eval("document.forms[0].i" + inputid + ".value=document.forms[0].i" +inputid + ".value.toUpperCase();");		 
		eval("document.forms[0].r" + inputid + ".value=document.forms[0].i" +inputid + ".value;");		 
	}



var selectedCell  = '';
var selectedhdn = '';
var selectedPos = '';

function showLayer(element,layer,pos) {
	 
    var cF=document.getElementById(layer);

    var dB=document.body;
    var eL=0;
    var eT=0;
    var cal=document.getElementById(element);
    if(cal){

       eL = findPosX(cal) ;
       eT = findPosY(cal) ;      
    }
		
    cF.style.left=eL;
    cF.style.top=eT;    
    cF.style.backgroundColor="white";

	selectedhdn = document.getElementById("r4"+pos);
	selectedPos = pos;
	selectedCell = document.getElementById("td4"+pos);


	if(selectedhdn){
		if(selectedhdn.value != 0 ){				 
			document.getElementById("numPick_"+selectedhdn.value).style.backgroundColor = "#877d69";
		}
	}
	
cF.style.visibility = "visible";
    cF.style.display="block";
	
}


function hideLayer(selectedNum){
	document.getElementById("numPick_1").style.backgroundColor = "white";
	document.getElementById("numPick_2").style.backgroundColor = "white";
	document.getElementById("numPick_3").style.backgroundColor = "white";
	document.getElementById("numPick_4").style.backgroundColor = "white";
 


	if (selectedNum) {

	if(selectedNum != 0 && selectedNum != document.getElementById("h4" + selectedPos ).value ){
		selectedCell.innerHTML =  '<img src="./content/images/empty.png" width="100px"/>';
		alert('Wrong!!');
		return false;
	}

		if( selectedNum == 1){
			selectedCell.innerHTML = '<img src="./content/images/'+ dymImgLoc +'/1.png" width="100px"/>';
		}else if(selectedNum == 2){
			selectedCell.innerHTML = '<img src="./content/images/'+ dymImgLoc +'/2.png" width="100px"/>';
		}else if(selectedNum == 3){
			selectedCell.innerHTML = '<img src="./content/images/'+ dymImgLoc +'/3.png" width="100px"/>';
		}else if(selectedNum == 4){
			selectedCell.innerHTML = '<img src="./content/images/'+ dymImgLoc +'/4.png" width="100px"/>';
		}else if(selectedNum == 0){
			selectedCell.innerHTML =  '<img src="./content/images/empty.png" width="100px"/>';

		}
	
	}
	 
	 if(selectedhdn){	 
		selectedhdn.value = selectedNum;
	 }
	

    var cF= document.getElementById('morediv');

	
    cF.style.display="none";
	cF.style.visibility = "hidden";
    checkSolution();
}

function findPosX(obj)
  {
    var curleft = 0;
    if(obj.offsetParent)
        while(1)
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
  }

  function findPosY(obj)
  {
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
  }


function validateUserSelection(){
	var puzzleNumber = document.forms[0].puzzleNumber.value;
	if(!IsNumeric(puzzleNumber)){
		alert('Please Enter a valid Number');
		return false;
	}else{
        var selectedValue =document.forms[0].selectedType.value;
		var puzno =  document.forms[0].puzzleNumber.value;
		 if(selectedValue == '1' && puzno > 4000){
				alert('Please Enter # between 1 and 4000');
				return false;
		 }else if(selectedValue == '2' && puzno > 50000000){
				alert('Please Enter # between 1 and 50000000');
				return false;
		 }else if( (selectedValue =='3' || selectedValue == '4' || selectedValue == '5') && puzno > 20000000000){
				alert('Please Enter # between 1 and 20 Billion');
				return false;
		 } 
	}
	return true;
} 

function IsNumeric(sText)

{
   var ValidChars = "0123456789";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }



function getTopTen(){
	document.forms[0].action = 'GetTopTenAction.action';
	document.forms[0].method="POST";
	document.forms[0].submit();		
}

function enableSelectPuzzle(element){	 
	if(element.checked){
			document.forms[0].puzzleNumber.disabled = false;
			document.getElementById("generatesPuzzle").disabled = false;
			 
	}else{
			document.forms[0].puzzleNumber.disabled = true;
			document.getElementById("generatesPuzzle").disabled = true;
			 
	}
	
}


function recoverPassword(){
	document.forms[0].action = 'PasswordRecoverAction.action?actionType=GET_RECOVER_PASS';
	document.forms[0].method="GET";
	document.forms[0].submit();		
}

