﻿// JScript File

function HighlightGlossaryTerms()
{
    var xml='./javascript/patients_glossary.xml';

    if (window.XMLHttpRequest)
    {
        try
        {
 	        xmlDoc = new XMLHttpRequest();

	        if (xmlDoc.overrideMimeType) 
	        {
		        xmlDoc.overrideMimeType('text/xml');
	        }
	    } catch (e) {alert(e.description);}
 
    } 
    else if (window.ActiveXObject) 
    {
	    try
	    {
		    xmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch (e)
	    {
		    try
		    {
			    xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
		    } catch (e) {alert("error");}
	    }
    }

    xmlDoc.onreadystatechange = function()
    { 
	    if(xmlDoc.readyState == 4)
	    {
		    if(xmlDoc.status == 200)
		    {
			    // process a XML document here
			    try {
			    var docX = xmlDoc.responseXML;
			    } catch (e) { alert(e.description); }
                
                try {
                    var x = docX.getElementsByTagName('entry');
                } catch (e) { alert(e.description); }

                paragraphs = document.getElementsByTagName("p");

                for (var c = 0; c != paragraphs.length; c++) {

                    var p = paragraphs[c];
                    if (p.className != "fineprint" && p.className != "searchresults" && p.className != "ignoreglossary")
                    {    
    	                for (i=0;i<x.length;i++)
    	                {
                                var theData = x[i].getElementsByTagName('term');
                                var term = theData[0].firstChild.nodeValue;
                                var theData = x[i].getElementsByTagName('definition');
                                var def = theData[0].firstChild.nodeValue;
                                
                                //handle these problem words specially
                                if (term == 'Gene' || term == 'Protein')
                                {
                                        //search again for same term but in with an S
                                        p.innerHTML = p.innerHTML.replace(new RegExp('('+ term + 's' + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term + 's' + '</a>');                                                                 
                                        p.innerHTML = p.innerHTML.replace(new RegExp('('+ term.toLowerCase() + 's' + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term.toLowerCase() + 's' + '</a>'); 
                                                                        
                                       term = ' '+term+' ';                                                 
                                        //search for glossary term                               
                                        p.innerHTML = p.innerHTML.replace(new RegExp('('+ term + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term + '</a>');                                 
                                        //search again for same term but in lowercase
                                        p.innerHTML = p.innerHTML.replace(new RegExp('('+ term.toLowerCase() + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term.toLowerCase() + '</a>');                                  
                                 }
								 else if (term == 'Sign')
								 {
									p.innerHTML = p.innerHTML.replace(new RegExp('('+ term + 's' + ' )(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term + 's ' + '</a>');                                                                 
									p.innerHTML = p.innerHTML.replace(new RegExp('('+ term.toLowerCase() + 's ' + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term.toLowerCase() + 's ' + '</a>'); 	
									
									term = ' '+term+' ';                                                 
									//search for glossary term                               
									p.innerHTML = p.innerHTML.replace(new RegExp('('+ term + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term + '</a>');                                 
									//search again for same term but in lowercase
									p.innerHTML = p.innerHTML.replace(new RegExp('('+ term.toLowerCase() + ')(?![^<]*>|[^<]*</a>)', "g"),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">' + term.toLowerCase() + '</a>');  
																	
								 }
                                 else
                                 {
                                        //search for glossary term                               
                                        p.innerHTML = p.innerHTML.replace(new RegExp('('+ term + 's?)(?![^<]*</a>|[^<]*>)', 'gi'),'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">$1</a>');                                 
                                 }                                 
                                                                                                                                      
                        }                        
                                        /*
                                        var re = /(lysosomal storage disorder)(?![^<]*>|[^<]*<\/a>)/gi;
                                        var newHTML;
                                        newHTML = p.innerHTML.replace(re,'<a href="patients_glossary.aspx#' + term + '" title="' + def + '" class="glossary">$1</a>'); 
                                        alert(newHTML);
                                */
                    }
                }
		    }	
		    else	
		    {
			    //document.ajax.dyn.value="Error: returned status code " + req.status + " " + req.statusText;
		    }	
	    } 
    }; 

    xmlDoc.open("GET", xml, true); 
    xmlDoc.send(null);
    
}

function HighlightGlossaryTerms2()
{
	if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
			alert(xmlDoc);
		xmlDoc.onload = ProcessXML;
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function () {
                if (xmlDoc.readyState == 4) ProcessXML()
		};
 	}
	else
	{
		alert('Your browser can\'t handle this script');
		return;
	}
	xmlDoc.load("./javascript/patients_glossary.xml");
}
