var responseSource = "";

/******* DATA TRANSPORT **********/

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();


function colorize(source, language) {
    http.open('get', 'async_source_colorizer.php?source='+source+'&language='+language);
    http.onreadystatechange = function()
	{
		handleNewSize();
	}
    http.send(null);
}

function handleNewSize() {
    if(http.readyState == 4)
	{
        var response = http.responseText;
		responseSource = response;
		displayResults(response);
		//alert(response);
    }
}

/******* VISUAL MANIPULATIONS **********/


function displayResults(response)
{
	dojo.byId("results").innerHTML = response;
	dojo.byId("results").style.display = "block";
	dojo.byId("closeX").style.display = "block";
	//dojo.byId("copyButton").style.display = "block";
	dojo.byId("optimized").style.display = "none";
}

function hideResults()
{
	dojo.byId("results").innerHTML = "";
	//dojo.byId("content").value = "";
	dojo.byId("content").focus();
	dojo.byId("results").style.display = "none";
	dojo.byId("closeX").style.display = "none";
	dojo.byId("copyButton").style.display = "none";
	dojo.byId("optimized").style.display = "block";
}


window.onload = function() 
{
	var closeX = dojo.byId("closeX");
	var oColorize = document.getElementById("colorize");
	closeX.onclick = hideResults;
	
	oColorize.onclick = function()
	{
		
		var oContent = document.getElementById("content");
		colorize(encodeURIComponent(trim(oContent.value)), dojo.byId("language").value)
	}
	
	dojo.byId("copyButton").onclick = function()
	{
		copyToClipboard(responseSource);
	}
	
	dojo.byId("watchDemo").onclick = function()
	{
		window.open("watchvideo/Sjntax.html",null,"height=500,width=660,status=no,toolbar=no,menubar=no,location=no");
	}

}

function copyToClipboard(s)
{
	if( window.clipboardData && clipboardData.setData )
	{
		clipboardData.setData("Text", s);
	}
	else
	{
		// You have to sign the code to enable this or allow the action in about:config by changing
		user_pref("signed.applets.codebase_principal_support", true);
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

		var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;

		// create a transferable
		var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;

		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/rtf');

		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();

		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);

		var copytext=meintext;

		str.data=copytext;

		trans.setTransferData("text/rtf",str,copytext.length*[[[[2]]]]);

		var clipid=Components.interfaces.nsIClipboard;

		if (!clip) return false;

		clip.setData(trans,null,clipid.kGlobalClipboard);	   
	}
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
