//*********************************************************//
//                    JAVASCRIPT                           //
//                   AJAX MESSENGER                        //
//                   Copyright :-)                         //
//*********************************************************//

//Reload Interval 1500ms = 1.5s
var reloadtime = 1000;

//Globale Variablen
var request;
var version = new Array("MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp");

//REQUEST FORM 
function ajaxManager(){

	if(document.getElementById){
		if(window.XMLHttpRequest){
			request = new XMLHttpRequest();
		}
		if(window.ActiveXObject){
			for(var i=0;i<version.length;i++){
				try{
					request = new ActiveXObject(version[i]);
				}
				catch(exception){
				}
			}
		}
		if(request){
			return request;
		}
	}
}


//CHAT START
function chat(user){
	if(ajaxManager()){
		
		var time = new Date();
		time = time.getTime();
		
		//Aktuelle Fensterinfos aktuelisieren
		var name = get_chat_infos(user);
		
		//Request
		request.open("post","/ajax/messagexml.php?user=" + user + "&time=" + time,true);
		request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		request.onreadystatechange = processResponse;
		request.send(name);
	}
	setTimeout("chat(" + user +")",reloadtime);
}

//Main Response
function processResponse(){

	if(request.readyState == 4){
		if(request.status == 200){
			
			var xmltextelement = request.responseXML;
			
			var user = xmltextelement.getElementsByTagName("user")[0].firstChild.nodeValue;
			var time = xmltextelement.getElementsByTagName("time")[0].firstChild.nodeValue;
			
			//*************** FREUNDE *******************************
			var frid,frname,frfoto,c,i,wert;	
			
			//Anzahl Freunde online
			var num_friends = xmltextelement.getElementsByTagName("freintrag").length
		
			var ret = "";
			
			//Offene Fenster alle auslesen unf für jedes Fenster ein Array als false erzeugen
			var d = document.getElementById("aktwindows");
			var e = d.getElementsByTagName("div");
			var fon = new Array();
			for(i=0;i<e.length;i++){
				wert = e[i].id;	
				fon[wert] = false;	
			}
			
			
			for(c=0;c<num_friends;c++){
				
				
				frid = xmltextelement.getElementsByTagName("friendid")[c].firstChild.nodeValue;
				frname = xmltextelement.getElementsByTagName("friendname")[c].firstChild.nodeValue;
				frfoto = xmltextelement.getElementsByTagName("friendfoto")[c].firstChild.nodeValue;
				ret = ret + "<tr><td valign=\"top\" width=\"30\">";
				ret = ret + "<img onmouseover=\"link_cursor_ein(this)\" onmouseout=\"link_cursor_aus(this)\" onclick=\"openchat(" + frid +",'" + frname + "','" + frfoto + "',true)\" style=\"width:30px;height:30px;border:none;\" ";
				ret = ret + "src=\"http://www.privatefiction.com/" + frfoto + "\">";
				ret = ret + "</td><td onmouseover=\"link_cursor_ein(this)\" onmouseout=\"link_cursor_aus(this)\" onclick=\"openchat(" + frid +",'" + frname + "','" + frfoto + "',true)\" valign=\"top\">" + frname + "</td></tr>";
				
				//Frende Online für Aktive Fensters onlien setzten 
				if(fon["chat"+frid] == false) fon["chat"+frid] = true;
				
			}
			if(ret == "") ret = ret + "<tr><td colspan=\"2\">Keine Freunde Online</td></tr>";
			
			ret = "<div onmouseover=\"link_cursor_ein(this)\" onmouseout=\"link_cursor_aus(this)\" onclick=\"friendsopen("+user+")\" colspan=\"2\" style=\"background-color:black;color:white;text-align:right;padding-right:5px;\">X</div><table width=\"100%\">" + ret + "</table>";
			
			//Aktive Fenster On/Off schalten
			for(var fenusr in fon){
				if(document.getElementById(fenusr).firstChild.src){
					if(fon[fenusr]) document.getElementById(fenusr).childNodes[0].src="/img/quad_green.jpg";
					else if(!fon[fenusr]) document.getElementById(fenusr).childNodes[0].src="/img/quad_red.jpg";
				}
				
			}
			
			var chatboxstat = document.getElementById('chatinputan');
			if(fon["chat"+chatboxstat.value]){
				document.getElementById("chatboxonlinestatus").innerHTML = "is ONLINE !!!";
				document.getElementById("chatboxonlinestatus").style.color = "green";
				document.getElementById("chatinputfield").removeAttribute('readOnly'); 
				document.getElementById("chatinputfield").style.backgroundColor="white";
			}
			else if (!fon["chat"+chatboxstat.value]){
				document.getElementById("chatboxonlinestatus").innerHTML = "is OFFLINE !!!";
				document.getElementById("chatboxonlinestatus").style.color = "red";
				document.getElementById("chatinputfield").style.backgroundColor="gray";
			}
			
			//Fensterhöhe automatisch setzten	
   			document.getElementById("friends").style.height = "auto";
			
			//Freunde einfügen
			document.getElementById("friends").innerHTML =  ret;
			
			//Friends Fensterhöhe anpassen
			var divfr = document.getElementById("friends");
			if(navigator.userAgent.indexOf('MSIE') > -1) var scrh = document.documentElement.clientHeight-50;			
			if(navigator.userAgent.indexOf('Gecko') > -1) var scrh = window.innerHeight-50;
			if(divfr.offsetHeight > scrh) divfr.style.height = scrh+"px";
				
			
			//******* MESSAGES **********************
			
			time = time-((reloadtime/1000)*2);
		
			var vonid,vonname,anid,anname,zeit,text,foto,refbox,refboxid,chattxt,chattxtneu,bgcol,neu,m;
			
			//Chatbox Messages reseten
			document.getElementById("chatboxchat").innerHTML = "";
			
			//Anzahl Messages von XML
			var num_message = xmltextelement.getElementsByTagName("message").length;
			
			var check = new Array;
			var vonneu = 0;
			
			for(m=0;m<num_message;m++){
				
				neu = false;
				
				//if(!xmltextelement.getElementsByTagName("text")[m].hasChildNodes())continue;
					
				//Alle Message Infos 
				vonid = xmltextelement.getElementsByTagName("vonid")[m].firstChild.nodeValue;
				vonname = xmltextelement.getElementsByTagName("vonname")[m].firstChild.nodeValue;
				anid = xmltextelement.getElementsByTagName("anid")[m].firstChild.nodeValue;
				anname = xmltextelement.getElementsByTagName("anname")[m].firstChild.nodeValue;
				zeit = xmltextelement.getElementsByTagName("zeit")[m].firstChild.nodeValue;
				text = xmltextelement.getElementsByTagName("text")[m].firstChild.nodeValue;
			
				foto = xmltextelement.getElementsByTagName("foto")[m].firstChild.nodeValue;
			
				if(vonid == user){ refbox = anname; refboxid = anid;bgcol=bgcol_1;}
				if(anid == user) { refbox = vonname; refboxid = vonid;bgcol=bgcol_2;}
				
				//Prüfen ob eine Nachricht neu ist 
				if(zeit > time && vonid != user){ neu = true; }
				
				//ChatFensteroffen und aktiv
				if(document.getElementById("chatboxusername").innerHTML == refbox){
					
					//bestehender textzeilen holen 
					chattxt = document.getElementById("chatboxchat").innerHTML;
					
					//Schauen ob von anderer Person 
					if(vonneu != vonid) chattxtneu = "<div style=\"margin-top:2px;padding-left:6px;background-color:" + bgcol + ";\">";
					else chattxtneu = "<div style=\"margin-top:0px;padding-left:6px;background-color:" + bgcol + ";\">";
					
					if(vonneu != vonid) chattxtneu = chattxtneu + "<b>" + vonname + "</b>:<br>";
					
					vonneu = vonid;
					chattxtneu = chattxtneu + text + "</div>";
					
					chattxt =  chattxt + chattxtneu;
					document.getElementById("chatboxchat").innerHTML = chattxt;
				}
				//Chat Fenster Offen aber nicht aktiv 
				else if(document.getElementById("chat" + refboxid)  && check[refbox] != 1 && neu){
					
					check[refbox] = 1;
					if(!is_blinking(refboxid)) blinkstart(refboxid);
				
				}
				else if (neu && check[refbox] != 1){
					
					check[refbox] = 1;
					openchat(refboxid,refbox,foto,false);
					if(!is_blinking(refboxid)) blinkstart(refboxid);
				}
				
				
			}
			//add input für Focus bottom scrollbar
			if(document.getElementById("chatbox").style.display != "none"){
				
				var addinp = document.getElementById("chatboxchat").innerHTML; 
				document.getElementById("chatboxchat").innerHTML = addinp + "<input   style=\"height:0px;width:0px;background-color:" +bg_scroll_input + ";border:none;\" name=\focusbox\" type=\"text\" id=\"focusbox\">";
				if(document.getElementById("chatinputfield").value == ""){
					document.getElementById("focusbox").focus();
					document.getElementById("chatinputfield").focus();
				}
			}
		}
	}
}
	

//"Freunde online" öffnen
function friendsopen(user){
	if(document.getElementById("friends")){
		if(document.getElementById("friends").style.display == "inline") {document.getElementById("friends").style.display = 'none';}
		else{
			document.getElementById("friends").style.display = 'inline';
		}	
	}
}



//öffnet in der Liste unten ein Chatfenster
function openchat(user,username,foto,activate){
	
	var t = document.getElementById('aktwindows');
	
	if (!document.getElementById("chat" + user)) {
	
		t.innerHTML = t.innerHTML + "<div onclick=\"activatechat(" + user + ",'" + username + "','" + foto + "')\" onmouseover=\"link_cursor_ein(this)\" onmouseout=\"link_cursor_aus(this)\" id=\"chat" + user + "\" style=\"display:block;height:18px;border-left:1px solid " + border_min_fenster_unten +";padding-left:5px;padding-right:10px;float:left;vertcal-align:middle;background-color:" + bg_min_fenster_unten + ";\"><img style=\"width:6px;height:6px;border:none;\" src=\"/img/quad_green.jpg\">  " + username + "&nbsp;&nbsp;&nbsp;<span onmouseover=\"this.style.color='red'\" onmouseout=\"this.removeAttribute('style')\" onclick=\"closechat("+user+")\">X</span></div>";
		
	}	
	if(activate == true){
			
			activatechat(user,username,foto);
		}
}

//fenster Aktivieren
function activatechat(user,username,foto){
		
		//Farbe blinkend wieder neutralisieren
		document.getElementById("chat"+user).style.backgroundColor = "#000001";
		
		//Ganze Chat box zeigen wenn noch nicht 
		var df = document.getElementById('chatbox');
		if(df.style.display == 'none') df.style.display = 'inline';
		
		//Usernamen
		document.getElementById('chatboxusername').innerHTML = username;
		
		//Foto
		document.getElementById('chatboxfoto').src = 'http://www.privatefiction.com/' + foto;
		
		//hidden an id
		document.getElementById('chatinputan').value = user;
		
		//schliessen
		var ase = document.getElementById('chatboxclose');
		ase.href = "javascript:closechat(" + user + ")";
		
		//minimieren
		var asm = document.getElementById('chatboxmin');
		asm.href = "javascript:minchat(" + user + ")";
}

//Fensterminimieren und User unten auch schliessen
function closechat(user){
	
	if (document.getElementById("chat" + user)) {
   		var myNode = document.getElementById("chat" + user);
   		myNode.parentNode.removeChild(myNode); 
	}
	minchat(user);
}


//Fenster Minimieren
function minchat(user){
	
	if(document.getElementById("chat"+user))
	document.getElementById("chat"+user).style.backgroundColor = bg_min_fenster_unten;
	
	document.getElementById("chatbox").style.display = "none";
	document.getElementById("chatboxusername").innerHTML = "Username";
	
	
}

//Message senden 
function messagesend(){
	
	var req = ajaxManager();
	
	var von = document.getElementById("chatinputvon").value;
	var an = document.getElementById("chatinputan").value;
	var text = document.getElementById("chatinputfield").value;
	
	var reg = new RegExp('(\\+)', 'g');
	
	text = text.replace(reg, '&pls;');
	

	
	
	var name = "";
	var name = "text=" + escape(text) + "&an=" + an + "&von="+von;
	
	if(text.length>0){	
		
		var time = new Date();
		time = time.getTime();
		req.open('post', '/ajax/insert.php?time='+time, true); 
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    	req.send(name); 
	}
	
	var res = document.getElementById("chatinputfield").value = "";
	var res = document.getElementById("chatinputfield").focus();
	
	
}

//Prüfen ob blinkt
function is_blinking(id){
	
	var colo = document.getElementById("chat"+id).style.backgroundColor;
	var colo = rgbtohex(colo);
	if(colo == bg_min_fenster_unten) return false;
	else return true;
	
}


//Blinken Aktivieren
function blinkstart(id){
	
	var colo = document.getElementById("chat"+id).style.backgroundColor;
	
	var colo = rgbtohex(colo);

	if(colo == bg_min_fenster_unten){
		
		document.getElementById("chat"+id).style.backgroundColor = farbe2;
		setTimeout("blinkstart("+id+")",1000);
	}
	else if (colo == farbe1 || colo == farbe2){
		
		if(colo == farbe1){
			document.getElementById("chat"+id).style.backgroundColor = farbe2;
		}
		if(colo == farbe2){
			document.getElementById("chat"+id).style.backgroundColor = farbe1;
		}
		setTimeout("blinkstart("+id+")",200);
		
	}
	
	
	
}

//Enter Tasten
function Cursortasten(event){
	if(event.keyCode == 13){
		messagesend();
	}
}

function rgbtohex (rgbval){
	var s = rgbval.match(/rgb\s*\x28((?:25[0-5])|(?:2[0-4]\d)|(?:[01]?\d?\d))\s*,\s*((?:25[0-5])|(?:2[0-4]\d)|(?:[01]?\d?\d))\s*,\s*((?:25[0-5])|(?:2[0-4]\d)|(?:[01]?\d?\d))\s*\x29/);

	if(s){ s=s.splice(1); }
    if(s && s.length==3){
    	d='';
        for(i in s){
        	e=parseInt(s[i],10).toString(16);
        	e == "0" ? d+="00":d+=e;
        }
		return '#'+d;
    }
	else{ return rgbval; }
}


function get_chat_infos(user){
	
	var str = "";
	
	//Friends offen
	if(document.getElementById("friends").style.display == "inline") str = str + "f=1";
	else str = str + "f=0";
	
	//Aktiver Chat
	if(document.getElementById("chatbox").style.display == 'inline'){
		var oid = document.getElementById("chatinputan").value;
		str = str + '-:x:-o=' + oid;
	}
	
	
	//Offene Fenster
	var d = document.getElementById("aktwindows");
	var e = d.getElementsByTagName("div");
	for(i=0;i<e.length;i++){
		var t = e[i].id;
		str = str +"-:x:-w=" + t.slice(4);
	}
	
	var name = "chat=" + escape(str);
	return name;

}

function resize(){
	document.getElementById("chat").style.width = (document.body.offsetWidth-20) + "px";
}

function link_cursor_ein(ele){
	ele.style.cursor ="pointer";	
}
function link_cursor_aus(ele){
	ele.style.cursor ="default";	
}


/*
function htmlentities(str,typ) {
if(typeof str=="undefined") str="";
if(typeof typ!="number") typ=2;
typ=Math.max(0,Math.min(3,parseInt(typ)));
var html=new Array();
html[38]="&amp;"; html[60]="&lt;"; html[62]="&gt;";
if(typ==1 || typ==3) html[39]="&#039;";
if(typ==2 || typ==3) html[34]="&quot;";
for(var i in html) eval("str=str.replace(/"+String.fromCharCode(i)+"/g,\""+html[i]+"\");");
var entity=new Array(
  "&nbsp;","&iexcl;","&cent;","&pound;","&curren;","&yen;","&brvbar;","&sect;",
  "&uml;","&copy;","&ordf;","&laquo;","&not;","&shy;","&reg;","&macr;",
  "&deg;","&plusmn;","&sup2;","&sup3;","&acute;","&micro;","&para;","&middot;",
  "&cedil;","&sup1;","&ordm;","&raquo;","&frac14;","&frac12;","&frac34;","&iquest;",
  "&Agrave;","&Aacute;","&Acirc;","&Atilde;","&Auml;","&Aring;","&AElig;","&Ccedil;",
  "&Egrave;","&Eacute;","&Ecirc;","&Euml;","&Igrave;","&Iacute;","&Icirc;","&Iuml;",
  "&ETH;","&Ntilde;","&Ograve;","&Oacute;","&Ocirc;","&Otilde;","&Ouml;","&times;",
  "&Oslash;","&Ugrave;","&Uacute;","&Ucirc;","&Uuml;","&Yacute;","&THORN;","&szlig;",
  "&agrave;","&aacute;","&acirc;","&atilde;","&auml;","&aring;","&aelig;","&ccedil;",
  "&egrave;","&eacute;","&ecirc;","&euml;","&igrave;","&iacute;","&icirc;","&iuml;",
  "&eth;","&ntilde;","&ograve;","&oacute;","&ocirc;","&otilde;","&ouml;","&divide;",
  "&oslash;","&ugrave;","&uacute;","&ucirc;","&uuml;","&yacute;","&thorn;","&yuml;"
  );
for(var i in entity) eval("str=str.replace(/"+String.fromCharCode(i*1+160)+"/g,\""+entity[i]+"\");");
return str;
}

function html_entity_decode( string, quote_style ) {
    // Convert all HTML entities to their applicable characters 
    //
    // version: 906.401
    // discuss at: http://phpjs.org/functions/html_entity_decode
    // +   original by: john (http://www.jd-tech.net)
    // +      input by: ger
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: marc andreu
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // -    depends on: get_html_translation_table
    // *     example 1: html_entity_decode('Kevin &amp; van Zonneveld');
    // *     returns 1: 'Kevin & van Zonneveld'
    // *     example 2: html_entity_decode('&amp;lt;');
    // *     returns 2: '&lt;'
    var histogram = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();
     
    if (false === (histogram = this.get_html_translation_table('HTML_ENTITIES', quote_style))) {
        return false;
    }
 
    for (symbol in histogram) {
        entity = histogram[symbol];
        tmp_str = tmp_str.split(entity).join(symbol);
    }
    tmp_str = tmp_str.split('&#039;').join("'");
     
    return tmp_str;
}
function get_html_translation_table(table, quote_style) {
    // Returns the internal translation table used by htmlspecialchars and htmlentities 
    //
    // version: 906.401
    // discuss at: http://phpjs.org/functions/get_html_translation_table
    // +   original by: Philip Peterson
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: noname
    // +   bugfixed by: Alex
    // +   bugfixed by: Marco
    // +   bugfixed by: madipta
    // +   improved by: KELAN
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // %          note: It has been decided that we're not going to add global
    // %          note: dependencies to php.js. Meaning the constants are not
    // %          note: real constants, but strings instead. integers are also supported if someone
    // %          note: chooses to create the constants themselves.
    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
     
    var entities = {}, histogram = {}, decimal = 0, symbol = '';
    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
     
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';
    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
   	constMappingQuoteStyle[3] = 'ENT_QUOTES';

    useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';
 
    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
        throw new Error("Table: "+useTable+' not supported');
        // return false;
    }
 
    if (useTable === 'HTML_ENTITIES') {
        entities['160'] = '&nbsp;';
        entities['161'] = '&iexcl;';
        entities['162'] = '&cent;';
        entities['163'] = '&pound;';
        entities['164'] = '&curren;';
        entities['165'] = '&yen;';
        entities['166'] = '&brvbar;';
        entities['167'] = '&sect;';
        entities['168'] = '&uml;';
        entities['169'] = '&copy;';
        entities['170'] = '&ordf;';
        entities['171'] = '&laquo;';
        entities['172'] = '&not;';
        entities['173'] = '&shy;';
        entities['174'] = '&reg;';
        entities['175'] = '&macr;';
        entities['176'] = '&deg;';
        entities['177'] = '&plusmn;';
        entities['178'] = '&sup2;';
        entities['179'] = '&sup3;';
        entities['180'] = '&acute;';
        entities['181'] = '&micro;';
        entities['182'] = '&para;';
        entities['183'] = '&middot;';
        entities['184'] = '&cedil;';
        entities['185'] = '&sup1;';
        entities['186'] = '&ordm;';
        entities['187'] = '&raquo;';
        entities['188'] = '&frac14;';
        entities['189'] = '&frac12;';
        entities['190'] = '&frac34;';
        entities['191'] = '&iquest;';
        entities['192'] = '&Agrave;';
        entities['193'] = '&Aacute;';
        entities['194'] = '&Acirc;';
        entities['195'] = '&Atilde;';
        entities['196'] = '&Auml;';
       	entities['197'] = '&Aring;';
        entities['198'] = '&AElig;';
        entities['199'] = '&Ccedil;';
        entities['200'] = '&Egrave;';
        entities['201'] = '&Eacute;';
        entities['202'] = '&Ecirc;';
        entities['203'] = '&Euml;';
        entities['204'] = '&Igrave;';
        entities['205'] = '&Iacute;';
        entities['206'] = '&Icirc;';
        entities['207'] = '&Iuml;';
        entities['208'] = '&ETH;';
        entities['209'] = '&Ntilde;';
        entities['210'] = '&Ograve;';
        entities['211'] = '&Oacute;';
        entities['212'] = '&Ocirc;';
        entities['213'] = '&Otilde;';
        entities['214'] = '&Ouml;';
        entities['215'] = '&times;';
        entities['216'] = '&Oslash;';
        entities['217'] = '&Ugrave;';
        entities['218'] = '&Uacute;';
        entities['219'] = '&Ucirc;';
        entities['220'] = '&Uuml;';
        entities['221'] = '&Yacute;';
        entities['222'] = '&THORN;';
        entities['223'] = '&szlig;';
        entities['224'] = '&agrave;';
        entities['225'] = '&aacute;';
        entities['226'] = '&acirc;';
        entities['227'] = '&atilde;';
        entities['228'] = '&auml;';
        entities['229'] = '&aring;';
        entities['230'] = '&aelig;';
        entities['231'] = '&ccedil;';
        entities['232'] = '&egrave;';
        entities['233'] = '&eacute;';
        entities['234'] = '&ecirc;';
        entities['235'] = '&euml;';
        entities['236'] = '&igrave;';
        entities['237'] = '&iacute;';
        entities['238'] = '&icirc;';
        entities['239'] = '&iuml;';
        entities['240'] = '&eth;';
        entities['241'] = '&ntilde;';
        entities['242'] = '&ograve;';
        entities['243'] = '&oacute;';
        entities['244'] = '&ocirc;';
        entities['245'] = '&otilde;';
        entities['246'] = '&ouml;';
        entities['247'] = '&divide;';
        entities['248'] = '&oslash;';
        entities['249'] = '&ugrave;';
        entities['250'] = '&uacute;';
        entities['251'] = '&ucirc;';
        entities['252'] = '&uuml;';
        entities['253'] = '&yacute;';
        entities['254'] = '&thorn;';
        entities['255'] = '&yuml;';
    }
 
    if (useQuoteStyle !== 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';
    }
    if (useQuoteStyle === 'ENT_QUOTES') {
        entities['39'] = '&#39;';
    }
    entities['60'] = '&lt;';
    entities['62'] = '&gt;';
 
    // ascii decimals for better compatibility
    entities['38'] = '&amp;';
 
    // ascii decimals to real symbols
    for (decimal in entities) {
        symbol = String.fromCharCode(decimal);
        histogram[symbol] = entities[decimal];
    }
     
    return histogram;
}
*/