function gt(x,y) {
    var item = ((x-1)*9 + y) - 1;
    var num = sudokuconf.substr(item,1);  
    if (num != '0')
        return '<input type="text" name="sud'+(item)+'" size="1" readonly="readonly" style="font-weight:bold;border: 0px;width:14px;font-size:11px;font-family:courier;" value="'+num+'" />';
    else
        return '<input type="text" maxlength="1" name="sud'+(item)+'" size="1" style="font-weight:normal;border: 0px;width:20px;text-align:center;font-size:11px;font-family:courier;" value="" />';    
}

document.write ('<form name="ysudoku" action="#" style="margin: 0px;"><table><tr><td><table cellspacing="0" width="250" height="200" style="text-align:center;border: 2px solid black; background-color: #FFFFFF;">');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(1,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(1,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(1,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(2,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(2,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(2,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,1)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,2)+'</td><td style="border-right: 2px solid;border-bottom: 2px solid;">'+gt(3,3)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,4)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,5)+'</td><td style="border-right: 2px solid;border-bottom: 2px solid;">'+gt(3,6)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,7)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,8)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(3,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(4,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(4,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(4,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(5,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(5,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(5,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,1)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,2)+'</td><td style="border-right: 2px solid;border-bottom: 2px solid;">'+gt(6,3)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,4)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,5)+'</td><td style="border-right: 2px solid;border-bottom: 2px solid;">'+gt(6,6)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,7)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,8)+'</td><td style="border-right: 1px solid;border-bottom: 2px solid;">'+gt(6,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(7,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(7,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(7,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(8,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(8,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(8,9)+'</td></tr>');
document.write ('<tr><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,1)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,2)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(9,3)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,4)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,5)+'</td><td style="border-right: 2px solid;border-bottom: 1px solid;">'+gt(9,6)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,7)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,8)+'</td><td style="border-right: 1px solid;border-bottom: 1px solid;">'+gt(9,9)+'</td></tr>');
document.write ('</table></td><td><input type="button" name="clear" onclick="javascript:clearSudoku();" value="Clear" /><br /><input type="button" name="solve" onclick="javascript:solveSudoku();" value="Solve" /><br /><input type="button" name="validate" onclick="javascript:validateSudoku();" value="Validate" /><br /></td></tr></table>');
document.write ('</form>');



function locate(item) {
   for(i=0;i < document.ysudoku.elements.length;i++) 
        if (document.ysudoku.elements[i].name == item)
            return i;
    return -1;    
}

function clearSudoku() {
    for (i=0; i<81; i++)
     if (sudokuconf.substr(i ,1) == '0')
        document.ysudoku.elements[ i ].value = '';
     else
        document.ysudoku.elements[ i ].value = sudokuconf.substr(i ,1);
}

function validateSudoku () {
    for (i=0; i<81; i++)
    {
       col = (i % 9 + 1);
       row = parseInt(i / 9 + 1);
       value = document.ysudoku.elements[i].value;
       if (value != '1' && value != '2' && value != '3' && value != '4' && value != '5' && value != '6' && value != '7' && value != '8' && value != '9')
       {           
           alert('Invalid Character or number at row '+row+' , column '+col+' !');
           return;
       }
       
       if (value != sudokusol.substr(i ,1))
       {           
           alert('Sorry, repeated number at row '+row+' , column '+col+' !');
           return;
       }
        
    }  
}

function solveSudoku() {
    for (i=0; i<81; i++)
        document.ysudoku.elements[ i ].value = sudokusol.substr(i ,1);    
}
