// This script is Copyrighted stevnhoved.dk
// Don't re-use it without an accept from stevnhoved.dk

function chr(c){
  var h = c.toString(16);
  h = unescape('%'+h);
  return h;
}

function newgame(n){
  return confirm('Er du sikker på du vil starte et nyt spil?');
}

function letterInfo(word) {

  var information;
  var letters = '';

  var indx;

  for (indx=0; indx<word.length; indx++) {
    if (letters.length > 0 ) letters += ' - ';
    letters += word.charAt(indx);
  }

  information = 'Denne sudoku er en bogstav-sudoku!\n\n';
  information += 'Det betyder at du skal anvende bogstaver i stedet for tal.\n\n';
  information += 'Reglerne er de samme, men i stedet for tallere 1 til 9,\n';
  information += 'skal du benytte følgende bogstaver:\n\n' + letters.toUpperCase();

  alert(information);

  return false;

}
  
function checkkey(e,f){

  if (!e) e = window.event;

  var letters;

  if (document.forms['sudoku'].elements['lettermask']) {
    letters = document.forms['sudoku'].elements['lettermask'].value;
    letters = letters.toLowerCase();
  } else {
    letters = '123456789';
  }

  var key = 0;
  var keyout = 0;

  if (e.keyCode) key = e.keyCode;
  if (e.which) key  = e.which;

  if (key >= 97 && key <= 122) {
    keyout = key - 32;
  } else {
    keyout = key;
  }

  key = chr(key);
  key = key.toLowerCase();

  if (letters.indexOf(key)==-1) {
    if (keyout == 8 || keyout == 0) {
      return;
    } else {
      if (window.event) {
        e.returnValue = null;
      } else {
        e.preventDefault();
      }
    }
  } else {
    f.value = chr(keyout);
  }

}

function leadingZero(num, zeros) {

  var out = "";
  var indx;

  for(indx=0; indx<zeros; indx++) {
    out += "0";
  }

  out += num.toString();
  out = out.substring(out.length, (out.length-zeros));

  return out;

}

function checkSudoku(f) {

  var board = new Array(81);
  var cheat = new Array(81);

  var tmp;
  var indx = 0;

  for(indx=0; indx<81; indx++) {
    tmp = 'box' + leadingZero(indx+1,2);
    board[indx] = f.elements[tmp].value;
    cheat[indx] = f.elements['cheat'].value.charAt(indx);
  }

  var blanks = 0;
  var errors = 0;

  for(indx=0; indx<81; indx++) {
    if(board[indx]==''){
      blanks++;
    } else {
      if(board[indx].toLowerCase()!=cheat[indx].toLowerCase()){
        errors++;
      }
    }
  }

  if((blanks+errors)==0) {
    alert('Tillykke.\nSudokuen er løst korrekt!');
  } else if(blanks==0) {
    alert('Du har ' + errors + ' forkert(e) felt(er)!');
  } else if(errors==0) {
    alert('Du mangler ' + blanks + ' felt(er)!');
  } else {
    alert('Du har ' + errors + ' forkert(e) felt(er),\nog mangler ' + blanks + ' felt(er)!');
  }

}

function toClipboard(f) {

  if (window.clipboardData) {
    f.focus();
    f.select();
    window.clipboardData.setData('Text',f.value);
    alert('Koden er kopieret til clipboardet.');
  } else {
    alert('Din browser understøtter ikke denne funktion.\nDu må selv kopier koden.');
  }
  return true;

}


function openBlogWindow() {

  var blogwin;
  var opts;

  opts = 'width=300,';
  opts += 'height=400,';
  opts += 'resizable=yes,';
  opts += 'scrollbars=yes,';
  opts += 'toolbar=no,';
  opts += 'location=no,';
  opts += 'directories=no,';
  opts += 'status=yes,';
  opts += 'menubar=no,';
  opts += 'copyhistory=no';

  blogwin = window.open('/blog', 'sudokoblog', opts);

}
