var userencode = function (str)
			{
				//escape
				//encodeURI
				//encodeURIComponent
				return encodeURIComponent(str.replace(/[\n\r\t]/g, "")); //str.replace(/&/g, "%26");
			}



function isObject(a) {
   	return (a && typeof a == 'object');
}


function isObject2(a) {
    var b = (a && typeof a == 'object');

	if (!b)
	{
		var tmpobj = document.getElementById(a);
		if (!tmpobj) return false;
	}

	return true;
}


function tryObject(a) {
    var b = (a && typeof a == 'object');

	if (!b)
	{
		var tmpobj = document.getElementById(a);
		if (!tmpobj) return null;
		else return tmpobj;
	}

	return a;
}


function SetDivInner(myReference, src)
	{
		if (!isObject(myReference)) myReference = document.getElementById(myReference); 
		if (myReference == null) return false;

		if( typeof( myReference.innerHTML ) != 'undefined' ) {
		  //used by all current browsers
		  myReference.innerHTML = src;
		} else if( myReference.document && myReference.document != window.document ) {
		  //used by layers browsers
		  myReference.document.open();
		  myReference.document.write(src);
		  myReference.document.close();
		}
		return true;
	}


function AddDivInner(myReference, src)
	{
		if (!isObject(myReference)) myReference = document.getElementById(myReference); 
		if (myReference == null) return false;

		if( typeof( myReference.innerHTML ) != 'undefined' ) {
		  //used by all current browsers
		  myReference.innerHTML = myReference.innerHTML + src;
		  //alert(src);
		  //alert(myReference.innerHTML);

		} else if( myReference.document && myReference.document != window.document ) {
		  //used by layers browsers
		  //myReference.document.open();
		  myReference.document.write(src);
		  //myReference.document.close();
		}
		return true;
	}


function writit(id, text)  //from http://www.quirksmode.org/js/
{
	if (document.getElementById)
	{
		x = document.getElementById(id);
		x.innerHTML = '';
		x.innerHTML = text;
	}
	else if (document.all)
	{
		x = document.all[id];
		x.innerHTML = text;
	}
	else if (document.layers)
	{
		x = document.layers[id];
		text2 = '<P CLASS="testclass">' + text + '</P>';
		x.document.open();
		x.document.write(text2);
		x.document.close();
	}
}


function stripHTML(sss)
	{
		if ( typeof( sss ) != "string" ) sss = sss.toString() ;
		var re=/<\S[^><]*>/g;
		var re2=/&[\w]*;/g;
		sss=sss.replace(re, " ");
		sss=sss.replace(re2, " ");
		sss=sss.replace("&", " ");
		return sss;
	}


function HTMLEncode ( sss )
	{
		if ( typeof( sss ) != "string" ) sss = sss.toString() ;
		sss = sss.replace(/&/g, "&amp;") ;
		sss = sss.replace(/"/g, "&quot;") ;
		sss = sss.replace(/</g, "&lt;") ;
		sss = sss.replace(/>/g, "&gt;") ;
		sss = sss.replace(/'/g, "&#39;") ;
		return sss ;
	}


var userencode = function (str)
			{
				//escape
				//encodeURI
				//encodeURIComponent
				return encodeURIComponent(str.replace(/[\n\r\t]/g, "")); //str.replace(/&/g, "%26");
			}



function ajaxSendCnt(file, cnt, iduser, filename)
{
  var xmlObj111 = null;
  
 // addDebMsg('file = '+file);
 // addDebMsg('cnt = '+cnt);
 // addDebMsg('iduser = '+iduser);

  if(window.XMLHttpRequest){ // Mozilla, Safari,...
      xmlObj111 = new XMLHttpRequest();
       //  if (http_request.overrideMimeType) http_request.overrideMimeType('text/xml'); //new
  } else if(window.ActiveXObject){ //IE
         try {
            xmlObj111 = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               xmlObj111 = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }

		//alert(xmlObj111);

      if (xmlObj111==null) {
			addDebMsg('Cannot create XMLHTTP instance to save your data. \n Please contact admin at agruzd2@uiuc.edu !!!');
			return false;
      }

    xmlObj111.onreadystatechange = function () {

		var status = "";
		try{
		  status = xmlObj111.status;  
			}
		catch(e){
		  status = "Trouble accessing it";
		  return false;
		}

		if(xmlObj111 != null)
			if(xmlObj111.readyState == 4){
				if (xmlObj111.status == 200) {

					var d = new Date();
					var curr_hour = d.getHours();
					var curr_min = d.getMinutes();

					var timeValue = "" + ((curr_hour>12) ? curr_hour-12 :curr_hour); //from http://javascript.internet.com/time-date/current-time.html
					if (timeValue == "0") timeValue = 12;
					timeValue += ((curr_min < 10) ? ":0" : ":") + curr_min;
					timeValue += (curr_hour >= 12) ? " pm" : " am";

if (filename.indexOf('status=archived')==-1) SetDivInner("texteditor_statusline", "Saved at " + timeValue);
else 	SetDivInner("texteditor_statusline", "Auto saved to the \"My Archive\" at " + timeValue);


					addDebMsg('Your data is saved!');
					return true;
					}
					else
					{
						addDebMsg('Cannot save your data. \n Please contact admin at agruzd2@uiuc.edu !!!');
						return false;						
					}

				}
			return false;
		}; 

 xmlObj111.open ('POST', file, true);
 xmlObj111.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 xmlObj111.send('iduser=' + iduser + '&filename='+ filename + '&cnt=' +userencode(cnt));
//alert(cnt);
//    xmlObj111.open ('GET', file, true);
//    xmlObj111.send ('');

SetDivInner("texteditor_statusline", "Saving file...");
addDebMsg('Saving content ...');

}//func ajax  save ctn



/////############################################

function ajaxAllPurposes(file, datastr, msgINI, msgOK, msgERR)
{
  var xmlObj111 = null;

  if(window.XMLHttpRequest){ // Mozilla, Safari,...
      xmlObj111 = new XMLHttpRequest();
       //  if (http_request.overrideMimeType) http_request.overrideMimeType('text/xml'); //new
  } else if(window.ActiveXObject){ //IE
         try {
            xmlObj111 = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               xmlObj111 = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }

		//alert(xmlObj111);

      if (xmlObj111==null) {
			addDebMsg('Cannot create XMLHTTP instance to save your data. \n Please contact admin at agruzd2@uiuc.edu !!!');
			return false;
      }

    xmlObj111.onreadystatechange = function () {

		var status = "";
		try{
		  status = xmlObj111.status;  
			}
		catch(e){
		  status = "Trouble accessing xmlObj";
		  return false;
		}

		if(xmlObj111 != null)
			if(xmlObj111.readyState == 4){
				if (xmlObj111.status == 200) {
						addDebMsg(msgOK);
						return true;
					}
					else
					{
						addDebMsg(msgERR);
						return false;						
					}

				}
			return false;
		}; 

 xmlObj111.open ('POST', file, true);
 xmlObj111.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 xmlObj111.send(datastr);
 addDebMsg(msgINI);

}//func ajax save cite




//from http://www.quirksmode.org/js/detect.html
var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;


function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}


function BrowserID()

{ 

if (checkIt('konqueror'))
{
	browser = "Konqueror";
	OS = "Linux";
}
else if (checkIt('safari')) browser = "safari"
else if (checkIt('omniweb')) browser = "omniweb"
else if (checkIt('opera')) browser = "opera"
else if (checkIt('webtv')) browser = "webtv";
else if (checkIt('icab')) browser = "icab"
else if (checkIt('msie')) browser = "ie"
else if (checkIt('firefox')) browser = "firefox"
else if (!checkIt('compatible'))
{
	browser = "nn"
	version = detect.charAt(8);
}
else browser = "unknown";

if (!version) version = detect.charAt(place + thestring.length);

if (!OS)
{
	if (checkIt('linux')) OS = "Linux";
	else if (checkIt('x11')) OS = "Unix";
	else if (checkIt('mac')) OS = "Mac"
	else if (checkIt('win')) OS = "Windows"
	else OS = "unknown";
}

return browser;
}



function trimAll(sString)  // from  http://www.aspdev.org/articles/javascript-trim/
{
	while (sString.substring(0,1) == ' ')
	{
	sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
	sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

//from http://www.bigbold.com/snippets/posts/show/701
function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
	}

function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}

function trim( value ) {
	return LTrim(RTrim(value));
}
