if (!window.Keyboard)
	window.Keyboard = {};

Keyboard.Page = function() 
{
}

var txtBlock = "";
Keyboard.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control = control;
		rootElement.addEventListener("KeyUp", Silverlight.createDelegate(this, this.onKeyUp));
		rootElement.addEventListener("KeyDown", Silverlight.createDelegate(this, this.onKeyDown));
		
		//this.Input = control.content.findName("Input1");
		//this.Text = this.Input.children.getItem(1);
		//this.Input.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleMouseUp));

		for (i=1; i < 4; i++)
		{
			this.Input = control.content.findName("Input"+i);
			this.Text = this.Input.children.getItem(i);
			this.Input.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.handleMouseUp));
		}
		
		this.btn1 = control.content.findName("btn1");
		this.btn1Text = control.content.findName("btn1");
		this.btn1.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.ButtonClick));
		this.btn1Text.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.ButtonClick));

		this.btn2 = control.content.findName("btn2");
		this.btn2Text = control.content.findName("btn2Text");

		this.btn2.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.ResetClick));
		this.btn2Text.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.ResetClick));
		
		this.txtDownload = control.content.findName("txtDownload");
		this.txtDownload.addEventListener("MouseLeftButtonUp", Silverlight.createDelegate(this, this.DownloadZip));

		
	},
	DownloadZip: function(sender, eventArgs)
	{
		window.location = "keyboard.zip";
	},

	ButtonClick: function(sender, eventArgs)
	{
		var myText = "";
		for (i=1; i < 4; i++)
		{
			myText  += sender.findName("txtText"+i).Text + "\n";
		}
		alert(myText);
	},

	ResetClick: function(sender, eventArgs)
	{
		for (i=1; i < 4; i++)
		{
			sender.findName("txtText"+i).Text = "";
		}
	},
 
	handleMouseUp: function(sender, eventArgs) 
	{
		txtBlock = sender.children.getItem(1);
	},

	onKeyUp: function(sender, keyEventArgs) 
	{
	    //var txt = sender.children.getItem(1);
	    if (txtBlock != "")
	    {
	        var keyVal = returnKey(keyEventArgs.key);
	        if ((keyVal == "a" || keyVal == "b" || keyVal == "c" || keyVal == "d" || keyVal == "e" || keyVal == "f" || keyVal == "g" || keyVal == "h" || keyVal == "i" || keyVal == "j" || keyVal == "k" || keyVal == "l" || keyVal == "m" || keyVal == "n" || keyVal == "o" || keyVal == "p" || keyVal == "q" || keyVal == "r" || keyVal == "s" || keyVal == "t" || keyVal == "u" || keyVal == "v" || keyVal == "w" || keyVal == "x" || keyVal == "y" || keyVal == "z") && (keyEventArgs.Shift == true))
            {keyVal = keyVal.toUpperCase();}
            if ((keyVal == "0") && (keyEventArgs.Shift == true))
            {keyVal = ")";}
            if ((keyVal == "1") && (keyEventArgs.Shift == true))
            {keyVal = "!";}
            if ((keyVal == "2") && (keyEventArgs.Shift == true))
            {keyVal = "@";}
            if ((keyVal == "3") && (keyEventArgs.Shift == true))
            {keyVal = "#";}
            if ((keyVal == "4") && (keyEventArgs.Shift == true))
            {keyVal = "$";}
            if ((keyVal == "5") && (keyEventArgs.Shift == true))
            {keyVal = "%";}
            if ((keyVal == "6") && (keyEventArgs.Shift == true))
            {keyVal = "^";}
            if ((keyVal == "7") && (keyEventArgs.Shift == true))
            {keyVal = "&";}
            if ((keyVal == "8") && (keyEventArgs.Shift == true))
            {keyVal = "*";}
            if ((keyVal == "9") && (keyEventArgs.Shift == true))
            {keyVal = "(";}
            
            if (keyVal == "BACKSPACE")
            {
                var bspace = txtBlock["Text"].length;
                txtBlock["Text"] = txtBlock["Text"].substring(0, bspace - 1);
            }
            else
            {
                txtBlock["Text"] += String(keyVal); 
            }
        }
	},
	onKeyDown: function(sender, keyEventArgs) 
	{}

}
function returnKey(key)
{
    var val;
    switch(key)
    {
        case 0:
          //val = "";
          break;    
        case 1:
          val = "BACKSPACE";
          break;
        case 2:
          val = "  "; //tab
          break;
        case 3:
          val = ""; //ENTER
          break; 
        case 4:
          val = ""; //SHIFT
          break;  
        case 5:
          val = ""; //CTRL
          break;      
        case 6:
          val = ""; //ALT
          break;
        case 7:
          val = ""; //CAPSLOCK
          break;  
        case 8:
          val = ""; //ESCAPE
          break;  
        case 9:
          val = " "; //SPACE
          break; 
        case 10:
          val = ""; //PAGEUP
          break;
        case 11:
          val = ""; //PAGEDOWN
          break;
        case 12:
          val = ""; //END
          break;
        case 13:
          val = ""; //HOME
          break;
        case 14:
          val = ""; //LEFT
          break; 
        case 15:
          val = ""; //UP
          break;  
        case 16:
          val = ""; //RIGHT
          break; 
        case 17:
          val = ""; //DOWN
          break;   
        case 18:
          val = ""; //INSERT
          break;  
        case 19:
          val = ""; //DELETE
          break; 
        case 20:
          val = "0"; //0
          break;
        case 21:
          val = "1"; //1
          break;                                                                                         
        case 22:
          val = "2"; //2
          break;
        case 23:
          val = "3"; //3
          break;
        case 24:
          val = "4"; //4
          break; 
        case 25:
          val = "5"; //5
          break;
        case 26:
          val = "6"; //6
          break;
        case 27:
          val = "7"; //7
          break; 
        case 28:
          val = "8"; //8
          break;
        case 29:
          val = "9"; //9
          break; 
        case 30:
          val = "a"; //A
          break;
        case 31:
          val = "b"; //B
          break;
        case 32:
          val = "c"; //C
          break;
        case 33:
          val = "d"; //D
          break;                                                                            
        case 34:
          val = "e"; //E
          break;     
        case 35:
          val = "f"; //F
          break;        
        case 36:
          val = "g"; //G
          break;         
        case 37:
          val = "h"; //H
          break;       
        case 38:
          val = "i"; //I
          break;       
        case 39:
          val = "j"; //J
          break; 
        case 40:
          val = "k"; //K
          break;            
        case 41:
          val = "l"; //L
          break;              
        case 42:
          val = "m"; //M
          break; 
        case 43:
          val = "n"; //N
          break;          
        case 44:
          val = "o"; //O
          break;              
        case 45:
          val = "p"; //P
          break;
        case 46:
          val = "q"; //Q
          break;            
        case 47:
          val = "r"; //R
          break;      
        case 48:
          val = "s"; //S
          break;      
        case 49:
          val = "t"; //T
          break;      
        case 50:
          val = "u"; //U
          break; 
        case 51:
          val = "v"; //V
          break;        
        case 52:
          val = "w"; //W
          break;        
        case 53:
          val = "x"; //X
          break;
        case 54:
          val = "y"; //Y
          break;        
        case 55:
          val = "z"; //Z
          break; 
          
        case 81:
          val = "."; //Z
          break;       
        default:
          val = " ";
          break;
    } 
    return val;
}