/* When the page loads, activate key-mapping for all urdu textboxes */
    $(document).ready(function(event){
        var urduInput = ".urdutext_edit";
        $(urduInput).live('blur',function(event){
            keyboardDisplay(false);
        });
        $(urduInput).live('focus',function(event){
            keyboardDisplay(true, this);
        });
        $(urduInput).live('mouseover',function(event){
            keyboardDisplayTemporary(true)
        });
        $(urduInput).live('mouseout',function(event){
            keyboardDisplayTemporary(false)
        });
    });
    
/* Keep the keyboard on the top half of the screen */
function initializeVisualKeyboard(keyboardPlaceholderID) {  
  $(keyboardPlaceholderID).load('/keyboard.htm', function(){ // load keyboard into this page's keyboard placeholder
    var keyboardHolder = $('#keybdholder'); 
    var top = keyboardHolder.offset().top - parseFloat(keyboardHolder.css('marginTop').replace(/auto/, 0));
    $(window).scroll(function (event) {
      // what the y position of the scroll is
      var y = $(this).scrollTop();
  
      // whether that's below the form
      if (y >= top) {
        // if so, ad the fixed class
        keyboardHolder.addClass('fixed');
      } else {
        // otherwise remove it
        keyboardHolder.removeClass('fixed');
      }
    });
  });
}

/* Mechanism for showing/hiding keyboard layouts */

var keybdShow = false;
var hasFocus  = false;
var currentTextBoxControl = null;
var isKeyboardOrdered = true;

// show ordered keys instead of keyboard layout
function setKeyboardOrdered(keyboardOrdered){
	isKeyboardOrdered = keyboardOrdered;
	keybds = document.getElementById("keyboardshifted");
	keybdu = document.getElementById("keyboardunshifted");
	keybdo = document.getElementById("keyboardordered");
	keybds.style.display = 'none';
	keybdu.style.display = isKeyboardOrdered ? 'none' : '';
	keybdo.style.display = isKeyboardOrdered ? '' : 'none';
}

// show ordered keys instead of keyboard layout
function getKeyboardOrdered(){
	return isKeyboardOrdered;
}

// virtual keyboard typing
function keyboardType(key){
	if (currentTextBoxControl != null){
		keyCode = key.charCodeAt(0);
		keyboardFromKeyCode(currentTextBoxControl, keyCode);
		currentTextBoxControl.focus();
	}
}

function keyboardDisplay(show, textBoxControl){
	if (show){
		if (textBoxControl !== undefined){
			currentTextBoxControl = textBoxControl;
		}
		hasFocus = true;
		setVisib();
	}else{
		hasFocus = false;
		setTimeout('setVisib()',300);
	} // endif
} // end keyboardDisplay()

function keyboardDisplayTemporary(show){
	if (show){
		keybdShow = true;
		setVisib();
	}else{
		keybdShow = false;
		setTimeout('setVisib()',300);
	} // endif
} // end keyboardDisplay()

function setVisib(){
	keybd = document.getElementById("keyboard");
	keybd.style.display = (keybdShow || hasFocus) ? '' : 'none';
	if (hasFocus){
		keybd.className = "keyboard";
	}else{
		keybd.className = "keyboardtemporary";
	}
} // end setVisib

function selectkeybd1(e){
	keybds = document.getElementById("keyboardshifted");
	keybdu = document.getElementById("keyboardunshifted");
	keybdo = document.getElementById("keyboardordered");
	var key = e ? e.which : event.keyCode;
	if (isKeyboardOrdered){
		keybds.style.display = 'none';
		keybdu.style.display = 'none';
		keybdo.style.display = '';
	}
	else if ( key == 16 ){ // if key is SHIFT
		keybds.style.display = '';
		keybdu.style.display = 'none';
		keybdo.style.display = 'none';
	} // endif
}

function selectkeybd2(e){
	var key = e ? e.which : event.keyCode;
	// if key is SHIFT
	if ( key == 16 && !isKeyboardOrdered ){
		keybds.style.display = 'none';
		keybdu.style.display = '';
		keybdo.style.display = 'none';
	} // endif
}

document.onkeydown = selectkeybd1;
document.onkeyup   = selectkeybd2;
