function checkValidCell(obj)
{
   var strChar=obj.value;
   if((strChar!="0") && (strChar!="1")) {
      obj.value="";
   }
}

function DisableEnableForm(bDisabled,bDisableButton){
  var tbl=document.getElementById('frmpuzzle');
  var inpts=tbl.getElementsByTagName("input");
  for(i=0;i<inpts.length;i++) {
		inpts[i].disabled=bDisabled;
  }
  if(bDisableButton) {
  	document.getElementById("check_puzzle").disabled=true;
		setTimeout("document.getElementById('check_puzzle').disabled=false", 10000);
  }
}

function checkPuzzle()
{
   var tbl=document.getElementById('tblPuzzle');
   var inpts=tbl.getElementsByTagName("input");
   var pw=document.getElementById("width").value;
   var ph=document.getElementById("height").value;
   var solution=document.getElementById("solution").value;
   solution=Base64.decode(solution);

   var err=0;
   var cnt=0;
   for(i=0;i<inpts.length;i++) {
		val=inpts[i].value;
		if(val!="") {
		   cnt++;
		   if(val!=solution.charAt(i)) err++;
		}
	}
	if(err==0) {
	   if(cnt==(pw*ph)) {
	      document.getElementById('puzzlesolved').style.display='block';
	      document.getElementById('puzzleerrors').style.display='none';
	      document.getElementById('puzzlealmost').style.display='none';
	   }
	   else {
	      document.getElementById('puzzlesolved').style.display='none';
	      document.getElementById('puzzleerrors').style.display='none';
	      document.getElementById('puzzlealmost').style.display='block';
	   }
	}
	else {
	   document.getElementById('errornr').innerHTML=err;
	   document.getElementById('puzzlesolved').style.display='none';
	   document.getElementById('puzzleerrors').style.display='block';
	   document.getElementById('puzzlealmost').style.display='none';
	}
	
	DisableEnableForm(true,false);
}

function printPuzzle(info1,info2)
{
  var disp_setting="toolbar=no,location=no,directories=no,menubar=no,";
      disp_setting+="scrollbars=yes,width=600, height=600, left=0, top=0";
  var docprint=window.open("","",disp_setting);
  docprint.document.open();
  docprint.document.write('<html><head><title>Binaire puzzel - '+info2+' (#'+info1+')</title>\n');
  docprint.document.write('<link href="css/main.css" rel="stylesheet" type="text/css" media="print">\n');
  docprint.document.write('<link href="css/main.css" rel="stylesheet" type="text/css" media="screen">\n');
  docprint.document.write('</head><body style="background-color: #FFFFFF;" onLoad="self.print()">\n');
  var content_pr=document.getElementById("contentleftbox").innerHTML;
  docprint.document.write(content_pr + '\n');
  docprint.document.write('<br><b>Speel gratis binaire puzzels online op <u>binaire-puzzels.robinu.nl</u></b>!');

  docprint.document.write('<scr'+'ipt language="JavaScript">');
  docprint.document.write(' document.getElementById("buttons2").style.display="none";');
  docprint.document.write('</sc'+'ript>');
  docprint.document.write('</body></html>');
  docprint.document.close();
  docprint.focus();  
}

function deletePuzzle()
{
	$.cookie("binpuz_id",null);
	$.cookie("binpuz_width",null);
	$.cookie("binpuz_height",null);
	$.cookie("binpuz_level",null);
	$.cookie("binpuz_board",null);
}

function loadPuzzle()
{
	var pid=document.puzzle.id.value;
	sPid=$.cookie("binpuz_id");
	if((sPid==null) || (sPid=='')) {
		alert('Er is nog geen puzzel opgeslagen.');
		return;
	}
	sWidth=$.cookie("binpuz_width");
	sHeight=$.cookie("binpuz_height");
	sLevel=$.cookie("binpuz_level");
	if(pid!=sPid) {
		alert('Deze puzzel is niet opgeslagen.\n\nMaar wel puzzel #'+sPid+' ('+sWidth+'x'+sHeight+') '+sLevel);
		return;
	}
	
	sBrd=$.cookie("binpuz_board");
  var tbl=document.getElementById('tblPuzzle');
	var inpts=tbl.getElementsByTagName("input");
	if(sBrd.length!=inpts.length) {
		alert('Geen geldige puzzel opgeslagen.');
		return;
	}
	for(i=0;i<inpts.length;i++) {
		if(!inpts[i].readOnly) {
			sCh=sBrd.substr(i,1);
			if(sCh=='.') sCh='';
			inpts[i].value=sCh;
		}
	}
}

function savePuzzle()
{
	var pid=document.puzzle.id.value;
	var pwidth=document.puzzle.width.value;
	var pheight=document.puzzle.height.value;
	var slevel=document.getElementById('leveltxt').innerHTML;
	var tbl=document.getElementById('tblPuzzle');
	var inpts=tbl.getElementsByTagName("input");

	sBrd="";
  for(i=0;i<inpts.length;i++) {
		val=inpts[i].value;
		if(val=="") val=".";
		sBrd=sBrd+val;
	}
	$.cookie("binpuz_id", pid, { expires: 365});
	$.cookie("binpuz_width", pwidth, { expires: 365});
	$.cookie("binpuz_height", pheight, { expires: 365});
	$.cookie("binpuz_level", slevel, { expires: 365});
	$.cookie("binpuz_board", sBrd, { expires: 365});
	alert('De puzzel is opgeslagen.');
}

function generateSavePuzzles()
{
	sPid=$.cookie("binpuz_id");
	if((sPid==null) || (sPid=='')) {
		document.writeln('Geen');
		return;
	}
	sWidth=$.cookie("binpuz_width");
	sHeight=$.cookie("binpuz_height");
	sLevel=$.cookie("binpuz_level");
	document.writeln('<a href="binaire-puzzel.php?id='+sPid+'">');
	document.writeln('Binaire puzzel #'+sPid+' ('+sWidth+'x'+sHeight+') '+sLevel);
	document.writeln('</a>');
	return;
}
