// JScript source code

//contains calls to silverlight.js, example below loads Page.xaml
function createSilverlight()
{
	Silverlight.createObjectEx({
		source: "Page.xaml",
		parentElement: document.getElementById("SilverlightControlHost"),
		id: "SilverlightControl",
		properties: {
			width: "100%",
			height: "100%",
			version: "1.1",
			enableHtmlAccess: "true",
			isWindowless : "false"
		},
		events: {
		    onLoad: OnLoaded
		}
	});
	   
	// Give the keyboard focus to the Silverlight control by default
    document.body.onload = function() {
      var silverlightControl = document.getElementById('SilverlightControl');
      if (silverlightControl)
      silverlightControl.focus();
    }

}

// GILBERT S
function OnLoaded(sender, args)
{
    if (sender.Content.HFKeyHelper)
    {
        sender.Content.HFKeyHelper.GetCursorPosition = onGetCursorPosition;
        sender.Content.HFKeyHelper.SetCursorPosition = onSetCursorPosition;
    }
}

function onGetCursorPosition(sender, args)
{
    // Silverlight Object
    var control = document.getElementById('SilverlightControl');
    if (!control)
        return;   
    
    // ¿ÀºêÁ§Æ® ¾ÆÀÌµð ¾ò±â
    var ObjectID = control.Content.HFKeyHelper.GetControlID();   
    if (!ObjectID)
        return;
        
    var oField = document.getElementById(ObjectID);
    
    if (oField != null)
    {
        // Initialize
        var iCaretPos = 0;

        // IE Support
        if (document.selection)
        {
            // Set focus on the element
            oField.focus ();

            // To get cursor position, get empty selection range
            var oSel = document.selection.createRange();

            // Move selection start to 0 position
            oSel.moveEnd('textedit', 1);

            // The caret position is selection length
			var nFindS = oSel.htmlText.indexOf("<TEXTAREA", 0);
			var nFindE = oSel.htmlText.lastIndexOf("</TEXTAREA>");
			var strTemp = oSel.htmlText.substring(nFindS + 91, nFindE);
			
			// Replace <,>,&
			strTemp = strTemp.replace(/&gt;/g, ">");
			strTemp = strTemp.replace(/&lt;/g, "<");
			strTemp = strTemp.replace(/&amp;/g, "&");
			
            iCaretPos = oField.value.length - (strTemp.length);
        }
        // Firefox support
        else if (oField.selectionStart || oField.selectionStart == '0')
        {
            iCaretPos = oField.selectionStart;
        }
        
        
        control.Content.HFKeyHelper.PushCursorPosition(iCaretPos);
    }
}

function onSetCursorPosition(sender, args)
{
    // Silverlight Object
    var control = document.getElementById('SilverlightControl');
    if (!control)
        return;   
    
    // ¿ÀºêÁ§Æ® ¾ÆÀÌµð ¾ò±â
    var ObjectID = control.Content.HFKeyHelper.GetControlID();   
    if (!ObjectID)
        return;

    var nStart = control.Content.HFKeyHelper.GetSelectStart();
    var nEnd = control.Content.HFKeyHelper.GetSelectEnd();

    var oField = document.getElementById(ObjectID);  
    SelectText(oField,Math.min(nStart,nEnd),Math.max(nStart,nEnd));
}

function SelectText(ctrl, posS, posE)
{
	if(ctrl.setSelectionRange)
	{
		ctrl.focus();
		ctrl.setSelectionRange(posS,posE);
	}
	else if (ctrl.createTextRange) {
		var range = ctrl.createTextRange();
		range.collapse(true);
		range.moveEnd('character', posE);
		range.moveStart('character', posS);
		range.select();
		
	}
}

// GILBERT E

function GetKeyCode()
{
   var keycode;
   if (window.event) // ÆÄÀÌ¾îÆø½º
   {
       keycode = window.event.keyCode;
   }
   else if (e) // ÀÎÅÍ³Ý ÀÍ½ºÇÃ·Î·¯
   {
       keycode = e.which;
   }

   return keycode;
}

function FilterKeyDown()
{
	var KeyCode = GetKeyCode();
	switch(KeyCode)
	{
    
    case 33: // ¹æÇâÅ°
	case 34: // ¹æÇâÅ°
	case 35: // ¹æÇâÅ°
	case 36: // ¹æÇâÅ°
	
	case 37: // ¹æÇâÅ°
	case 38: // ¹æÇâÅ°
	case 39: // ¹æÇâÅ°
	case 40: // ¹æÇâÅ°
		return false;
	}

    return true;
}
