var newCont='';
dsGlossary.setColumnType("title","html");
dsGlossary.setColumnType("content","html");
function initGlossary(){
	var content=document.getElementById('mainRegion');
	if(content==null) return false;
	else if(content.innerHTML==''){
		setTimeout('initGlossary()',100);
		return;
	}
	var cont=content.innerHTML;
	var xmlLoadObserver=new Object;
	xmlLoadObserver.onPostLoad=function(){
		var rows=dsGlossary.getData();
		for(var i=0;i<rows.length;i++){
			var searchStr=rows[i]['title'];
			var rowNumber=dsGlossary.getRowNumber(rows[i]);
			var replStr='<span id="item" class="'+cssClass+'" onmouseout="replaceClass(this,cssClass);" onmouseover="replaceClass(this,cssClassMo);dsGlossary.setCurrentRow('+rowNumber+');">'+searchStr+'</span>';
			cont=replaceString(cont,searchStr,replStr);
		}
		newCont=cont;
		setContent();
	};
	dsGlossary.addObserver(xmlLoadObserver);
}
function replaceClass(id,className){
	id.className=className;
}
function replaceString(text,string,replacement){
	var newText='';
	var i=-1;
	var endTag=-1;
	var nextTag=-1;
	var pattern=new RegExp('\\b'+string+'\\b');
	var hPattern=new RegExp
	while(text.length>0){
		i=text.search(pattern);
		//if not found, add whole string
		if(i==-1){
			newText+=text;
			text='';
			break;
		}
		// if i is between first < and first >
		if(text.toLowerCase().indexOf('>',i)<text.toLowerCase().indexOf('<',i)){
			newText+=text.substr(0,text.toLowerCase().indexOf('>')+1);
			text=text.substr(text.toLowerCase().indexOf('>')+1);
		}
		// if i is within an a-tag
		else if((text.toLowerCase().indexOf('</a',i)!=-1)&&(text.toLowerCase().indexOf('</a',i)<text.toLowerCase().indexOf('<a',i)||text.toLowerCase().indexOf('<a',i)==-1)){
			newText+=text.substr(0,text.toLowerCase().indexOf('</a')+3);
			text=text.substr(text.toLowerCase().indexOf('</a')+3);
		}
		// if i is within a h-tag
		else if((escHTags&&text.toLowerCase().indexOf('</h',i)!=-1)&&(text.toLowerCase().indexOf('</h',i)<text.toLowerCase().indexOf('<h',i)||text.toLowerCase().indexOf('<h',i)==-1)){
			newText+=text.substr(0,text.toLowerCase().indexOf('</h')+3);
			text=text.substr(text.toLowerCase().indexOf('</h')+3);
		}
		// if i is within a bold-tag
		else if((escBoldTags&&text.toLowerCase().indexOf('</b',i)!=-1)&&(text.toLowerCase().indexOf('</b',i)<text.toLowerCase().indexOf('<b',i)||text.toLowerCase().indexOf('<b',i)==-1)){
			newText+=text.substr(0,text.indexOf('</b')+2);
			text=text.substr(text.indexOf('</b')+2);
		}
		// if i is within a strong-tag
		else if((escBoldTags&&text.toLowerCase().indexOf('</strong',i)!=-1)&&(text.toLowerCase().indexOf('</strong',i)<text.toLowerCase().indexOf('<strong',i)||text.toLowerCase().indexOf('<strong',i)==-1)){
			newText+=text.substr(0,text.toLowerCase().indexOf('</strong')+8);
			text=text.substr(text.toLowerCase().indexOf('</strong')+8);
		}
		// if i is within an em-tag
		else if((escEmTags&&text.toLowerCase().indexOf('</em',i)!=-1)&&(text.toLowerCase().indexOf('</em',i)<text.toLowerCase().indexOf('<em',i)||text.toLowerCase().indexOf('<em',i)==-1)){
			newText+=text.substr(0,text.toLowerCase().indexOf('</em')+4);
			text=text.substr(text.toLowerCase().indexOf('</em')+4);
		}
		else{
			newText+=text.substr(0,i)+replacement;
			text=text.substr(i+string.length);
		}
	}
	return newText;
}
function setContent(){
	var content=document.getElementById('mainRegion');
	if(content==null) return false;
	else if(content.innerHTML==''){
		setTimeout('setContent()',100);
		return;
	}
	content.innerHTML=newCont;
	var itemCheck=document.getElementById('item');
	var ttContent=document.getElementById(cssClassTT);
	if(itemCheck!=null){
		ttContent.style.visibility='visible';
		var tt=new Spry.Widget.Tooltip(cssClassTT,'.'+cssClass,{closeOnTooltipLeave:true,offsetX:'5px',offsetY:'-10px'});
		Spry.Data.initRegions();
	}
	else ttContent.innerHTML='';
}
Spry.Utils.addLoadListener(function(){initGlossary();});
