/***************************************************************************************************
							  created by Nikhil on date 23-07-2008           
					   Script file to generate and shuffle virtual keyboard     
****************************************************************************************************/


var strstart="<table border=\"0\" cellpadding=\"0\" cellspacing=\"5\" style=\"border:#1f99f0 1px solid;\" align=\"center\">";
var strend="</table>";
var code1 = "<tr>";
var code2 = "</tr>";

var row1 = new Array("~","!","@","#","$","%","^","&","*","(",")","-");
var row2 = new Array("+","|","_","=","\\",".","/","?","'","&ldquo;","Back");
var row3 = new Array("}","{","[","]",":",";","`",",","<","Shuffle");
var row4 = new Array("q","w","e","r","t","y","u","i",">","7","8","9");
var row5 = new Array("a","s","d","f","g","h","j","k","l","4","5","6");
var row6 = new Array("z","x","c","v","b","n","m","o","p","1","2","3");
var row7 = new Array("Space","Capslock","0","Clear");

//This function generate the keyboad dynamically when page initialize
function generatehtml(){
	var count = 0;
	var row1str = "";
	var row2str = "";
	var row3str = "";
	var row4str = "";
	var row5str = "";
	var row6str = "";
	var row7str = "";
	var boolcapval = getcurrentcapval();
	//first row generation
	row1str = row1str + code1;
	for(i=0;i<row1.length;i++){	
		row1str = row1str + "<td><input type=\"button\" value=\""+row1[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
		count++;
	}
	row1str = row1str + code2
	
	//second row generation
	row2str = row2str + code1;
	var backstr = "";
	for(i=0;i<row2.length;i++){
		if(row2[i].search("Back")!=-1){
			backstr = "<td colspan=\"2\"><input type=\"button\" value=\""+row2[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBig keyBigF\" onclick=\"onbackbutton('button"+count+"')\"></td>";
			count++;
		}else{
			row2str = row2str + "<td><input type=\"button\" value=\""+row2[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
			count++;
		}
	}
	row2str = row2str + backstr + code2;
	
	//third row generation
	row3str = row3str + code1;
	var shuff = "";
	for(i=0;i<row3.length;i++){
		if(row3[i].search("Shuffle")!=-1){
			shuff = "<td colspan=\"3\" align=\"center\"><input type=\"button\" value=\""+row3[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBig72 keyBigF1\" onclick=\"shufflevk()\"></td>";
			count++;
		}else{
			row3str = row3str + "<td><input type=\"button\" value=\""+row3[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
			count++;
		}
	}
	row3str = row3str + shuff + code2;
	
	//fourth row generation
	row4str = row4str + code1;
	for(i=0;i<row4.length;i++){
		var r4 = "";
		if(boolcapval){
			r4 = row4[i].toUpperCase();
		}else{
			r4 = row4[i];
		}
		row4str = row4str + "<td><input type=\"button\" value=\""+r4+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
		count++;
	}
	row4str = row4str + code2;

	//fifth row generation
	row5str = row5str + code1;
	for(i=0;i<row5.length;i++){
		var r5 = "";
		if(boolcapval){
			r5 = row5[i].toUpperCase();
		}else{
			r5 = row5[i];
		}
		row5str = row5str + "<td><input type=\"button\" value=\""+r5+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
		count++;
	}
	row5str = row5str + code2;
	
	//sixth row generation
	row6str = row6str + code1;
	for(i=0;i<row6.length;i++){
		var r6 = "";
		if(boolcapval){
			r6 = row6[i].toUpperCase();
		}else{
			r6 = row6[i];
		}
		row6str = row6str + "<td><input type=\"button\" value=\""+r6+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
		count++;
	}
	row6str = row6str + code2;

	//seventh row generation
	var spacestr = "";
	var capslockstr = "";
	var clearstr = "";
	for(i=0;i<row7.length;i++){
		if(row7[i].search("Space")!=-1){
			spacestr = "<td colspan=\"6\"><input type=\"button\" value=\""+row7[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBig120F keyBig120\" onclick=\"getpassword('button"+count+"')\"></td>";
			count++;
		}else if(row7[i].search("Capslock")!=-1){
			capslockstr = "<td colspan=\"3\" align=\"center\"><input type=\"button\" value=\""+row7[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBig72 keyBigF1\" onclick=\"onoffcapslock('button"+count+"')\"></td>";
			count++;
		}else if(row7[i].search("Clear")!=-1){
			row7str = row7str + "<td colspan=\"2\"><input type=\"button\" value=\""+row7[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBig keyBigF\" onclick=\"clearall('button"+count+"')\"></td>";
			count++;
		}else{
			row7str = row7str + "<td><input type=\"button\" value=\""+row7[i]+"\" name=\"button"+count+"\" id=\"button"+count+"\" class=\"keyBG keyButton\" onclick=\"getpassword('button"+count+"')\"></td>";
			count++;
		}
	}

	row7str = code1 + spacestr + capslockstr + row7str + code2;
	var midelstr = row1str + row2str + row3str + row4str + row5str + row6str + row7str ;

	var keyboardobj = document.getElementById("vkkeyboard");
	keyboardobj.innerHTML = strstart + midelstr + strend;
}

/******************************************************/
(function () {                                                                  
    var swapper =                                                               
        function (arr,size,elem) {                                                      
            var rand = Math.floor(Math.random()*size);                                
            var x = arr[elem];                                                       
            arr[elem] = arr[rand];                                                        
            arr[rand] = x;                                                           
        };                                                                      
    Array.prototype.shuffle =                                                   
        function () {    
            var i,size;                                                            
            i = size = this.length;                                                
            while (i--) swapper(this,size,i);                                      
        };                                                                      
})();

function shufflevk(){
	//alert("Inside shuffle");
	row1.shuffle();	
	row2.shuffle();
	row3.shuffle();
	row4.shuffle();
	row5.shuffle();
	row6.shuffle();
	row7.shuffle();

	generatehtml();
}