
var immediatePaste = "";
var debugWindowStatusInterval;
var cutHTML;
var trace;
function IELoad()
{
	//alert("IELoad :: "+SlideRocket);
	trace = document.getElementById('JSTrace');
	IEEditor.innerHTML = 'a';

	if (typeof(IEEditor) == "object")
	{
		slideRocketObj = SlideRocket;
		window.onmousewheel=document.onmousewheel=IEWheel;
		IEReturnFocusToApp();
	}
	return false;
}


// in all of the following, if both ctrl and alt are pressed, then act as if neither were pressed
// this helps with AltGr processing: keys with AltGr come thru in IE with both ctrl and alt set. If we turn this off, then 
// they act correctly

function IEOnKeyPress()
{
	//alert("IEOnKeyPress");
	var theEvent = window.event;
	var keyCode = theEvent.keyCode;
	//alert("slideRocketObj :: "+slideRocketObj.onKeyDownMZ);
	if (keyCode > 31 || keyCode == 13)
		slideRocketObj.onKeyDownMZ(keyCode, theEvent.ctrlKey && !theEvent.altKey, theEvent.altKey && !theEvent.ctrlKey, theEvent.shiftKey);
	if (IEEditor.innerHTML.length > 10)
		IEEditor.innerHTML = 'a';
}

function IEOnKeyDown()
{
	//alert("IEOnKeyDown");
	var theEvent = window.event;
	var keyCode = theEvent.keyCode;
	doTrace("keyCode : "+keyCode + " theEvent.ctrlKey : "+theEvent.ctrlKey);
	if (theEvent.ctrlKey || theEvent.altKey || (keyCode <= 46 && keyCode != 13) || keyCode == 113 /* F2 */ )
		slideRocketObj.onKeyDownMZ(keyCode, theEvent.ctrlKey && !theEvent.altKey, theEvent.altKey && !theEvent.ctrlKey, theEvent.shiftKey);
	doTrace("calling IEPreventDefault ...");
	if (IEPreventDefault(keyCode))
	{
		event.keyCode = 0;
		doTrace("preventing default...");
		theEvent.returnValue = false;
	}
	else if (keyCode == 8 /* backspace */ || keyCode == 46 /* del */)
		setTimeout('IEAfterKeyDown()', 0);
}

function IEOnKeyUp()
{
	//alert("IEOnKeyUp");
	var theEvent = window.event;
	//slideRocketObj.onKeyUpIE(theEvent.keyCode, theEvent.ctrlKey, theEvent.altKey, theEvent.shiftKey);
}

function IEPreventDefault(keyCode)
{
	var theEvent = window.event;
	var ctrlKey = theEvent.ctrlKey && !theEvent.altKey;
	if (!ctrlKey && keyCode == 9)	// tab
		return true;
	if (!ctrlKey)
		return false;
	if (keyCode == 67 || keyCode == 86 || keyCode == 88)	// ctrl-c, ctrl-v, ctrl-x
		return false;
	if (keyCode == 84)										// ctrl-t
		return false;
	if (keyCode >= 65 && keyCode <= 90)
		return true;
	if (keyCode >= 37 && keyCode <= 40) // arrow keys
		return true;
	
	return false;
	
}

function IEAfterKeyDown()
{
	//alert('IEAfterKeyDown');
	if (IEEditor.innerHTML == '')
		IEEditor.innerHTML = 'a';
}

function IEOnCopy(tryCount)
{
	//alert('IEOnCopy');
	/*
	try {
		IEEditor.innerHTML = slideRocketObj.onBrowserCopy();
		IESelect();
		setTimeout("IEOnAfterCopy();", 0);
	} catch (err) {
		if (tryCount != 1)
		{
			// give it one more try -- historical reasons?
			//alert("OnCopy error. Trying one more time.");
			setTimeout("IEOnCopy(1)", 0);
		}
		else
		{
			// give up
			setTimeout("IEOnAfterCopy(1)", 0);
		}
	};
	*/

}

function IEOnAfterCopy()
{
//	alert('IEOnAfterCopy');
	IEReturnFocusToEditor();
	setTimeout("slideRocketObj.copyComplete();", 0);
}

function IEOnPaste()
{
//	alert('IEOnPaste');
	if (immediatePaste == "")
	{
		IEEditor.innerHTML = '';
		setTimeout('IEOnAfterPaste()', 0);
	}
}

function IEOnAfterPaste()
{
/*
//	alert('OnAfterPaste');
//	alert(IEEditor.innerHTML);
	var converted = convertToXHTML(IEEditor);
//	alert(converted);
	if (converted.length > 0)
		slideRocketObj.onBrowserPaste(converted);
	IEReturnFocusToEditor();
	if (converted.length > 0)
		setTimeout("slideRocketObj.pasteComplete();", 0);
*/		
}

function IEOnCut()
{
//	alert('IEOnCut');
/*
	try {
		IEEditor.innerHTML = slideRocketObj.onBrowserCut();
			IESelect();
		setTimeout('IEOnAfterCut()', 0);
	} catch (err) {
		setTimeout('IEOnCut()', 0);
	}
	*/
}

function IEOnAfterCut()
{
/*
//	alert("IEOnAfterCut");
	clipboardContents = cutHTML;
	IEReturnFocusToEditor();
	IEEditor.innerHTML = 'a';
	setTimeout("slideRocketObj.cutComplete();", 0);
*/
}

function IETriggerPaste()
{
	slideRocketObj.onBrowserPaste();

/*
	IEEditor.focus();
	var result = document.execCommand("Paste");
*/
}

function IETriggerCopy()
{
	slideRocketObj.onBrowserCopy();
/*
	IEEditor.focus();
	var result = document.execCommand("Copy");
*/	
}

function IETriggerCut()
{
	slideRocketObj.onBrowserCut();

/*
	IEEditor.focus();
	var result = document.execCommand("Cut");
	*/
}

function IESelect()
{
//	alert("IESelect");
/*
	if (IEReturnFocusToEditor())
	{
		document.execCommand('SelectAll');
		setTimeout("document.execCommand('SelectAll')", 0);
	}
	else
		alert("failed to Select");
		*/
}

function IEUnselect()
{
/*
//	alert("IEUnselect");
	if (IEReturnFocusToEditor())
	{
		IEEditor.innerHTML = 'a';
		var r = document.selection.createRange();
		r.select();
	}
	*/
}

function IEReturnFocusToEditor()
{
//	alert('IEReturnFocusToEditor');
	var result = true;
	try
	{
		IEEditor.focus();
	}
	catch (e)
	{
		if (e.name == "TypeError")
		{
			if (typeof(IEEditor) == "object")
				slideRocketObj.focus();
			result = false;
		}
//		else
//			alert("Exception of type " + e.name + " occurred in IEReturnFocusToEditor(). This should never happen, please tell David!");
	}
	return result;
}

function IEReturnFocusToApp()
{
	setTimeout('slideRocketObj.focus();', 0);
}

function IEWheel(event)
{
     if (!event) event = window.event; 
     var delta = 0;
     if (event.wheelDelta)             
          delta = event.wheelDelta;
     delta = delta / 8;
     if (delta) {
          //slideRocketObj.onMouseWheel(delta);
     }
}


// design mode editor has focus
function IEFocusHandler()
{
	try
	{
		slideRocketObj.haveWindowFocus(true);
	}
	catch (err) 
	{
		// ignore errors at load time before slideRocketObj is fully initialized
	}
}

// design mode editor has lost focus
function IEBlurHandler()
{
	try
	{
		slideRocketObj.haveWindowFocus(false);
	}
	catch (err) 
	{
		// ignore errors at load time before slideRocketObj is fully initialized
	}
}
function doTrace(msg)
{
	if (trace != null)
	{
		trace.contentWindow.document.body.innerHTML = trace.contentWindow.document.body.innerHTML + msg + '<br>';
	}
}