var colors=["#DEB887","#B0EDEE","#FEE4C3","#87CEFA","#DDA0DC","#FED700","#ADFF30","#00BFFE","#FF69B3","#FF7F50","#9ACD32","#B8860B","#FF00FE","#7EFFD4","#8EBC8B","#32CD33","#AED8E6","#6594EC","#609DA0","#BDB76B","#F0E78C","#01CED1","#FF4500","#9AFA98","#D3691F","#DCDCDC","#FFB6C1","#778898","#9470DC","#FFA500","#DC7092","#BC8E8E","#FA8071","#D1B48C","#FAEBD6"];
var CatchJSErrors = true;
var colorcount;
function SearchHiLite(text)
{
    var SearchAsSubstring = 0;
	var s1 = unescape(window.location);
	if (s1.indexOf("aa") == -1)
        {
        return false;
        }

    var n1 = s1.lastIndexOf('=');
	var n2 = s1.substring(n1+1,s1.length);
	if (n2.length > 1 ){
		searchText = n2;
	}
	
    var term  = searchText.split("$$");
	var termText  = searchText.split("$$");
	
    // convert terms in regexp patterns
    for (var i=0;i<term.length;i++) // take each term in turn
    {       
		if(term[i] != "")
        {                   
            if (term[i].indexOf("\"") != -1)
            {
                // contains double quotes               
                term[i]=term[i].replace(/\"/g,"");
                term[i]=term[i].replace(/\+/g," "); 
            }
            else
            {
                term[i]=term[i].replace(/\+/g,"");  
            }                           
	
            if (term[i].indexOf("*") != -1 || term[i].indexOf("?") != -1)
            {
                // convert wildcard pattern to regexp
                term[i] = term[i].replace(/\\/g, " ");
                term[i] = term[i].replace(/\^/g, " ");
                //term[i] = term[i].replace(/\+/g, " "); // split on this so no point in looking
                term[i] = term[i].replace(/\#/g, " ");
                term[i] = term[i].replace(/\$/g, " ");
               term[i] = term[i].replace(/\./g, " ");
			   //term[i] = term[i].replace(<[^>]*?>, " ");
			   
                 // check if search term only contains only wildcards
                // if so, we will not attempt to highlight this term
                var wildcards = /\w/;
                if (wildcards.test(term[i]))
                {
                	term[i] = term[i].replace(/\*/g, "[^\\s]*");
                	term[i] = term[i].replace(/\?/g, "[^\\s]"); // insist upon one non whitespace
                }                
                else                
                	term[i] = "";                
            }
			
			if (term[i] != "")
			{
	            if (SearchAsSubstring == 0)
	            {
	                term[i] = "(>|>[^<]+[\\b\\W])("+term[i]+")(<|[\\b\\W][^>]*<)"; //(>|>[^<]+[\\b\\W])(report)(<|[\\b\\W][^>]*<)
					//term[i] = "(>|>[^<]+[\\b\\W])("+term[i]+")(<|[\\b\\W]<\S[^>]*>)";
					
	            }
	            else
	            {
	                // if term leads with wildcard then allow it to match preceeding text in word
	                var strWB="";
	                if(term[i].substr(0,7)=="[^\\s]*") strWB="\\b";
	                term[i] = "(>|>[^<]+)"+strWB+"("+term[i]+")([^>]*<)";
	            }
	        }    
        }
    }
    text=text.replace(/&amp;/ig, '&');
    text=text.replace(/&nbsp;/ig, '');
    //alert(term);
    for (var i=0;i<term.length;i++) // take each term in turn
    {
        if(term[i] != "")
        {        	        	
            var l = 0;
			if(term[i].indexOf("~")!=-1)
			{
				var tmpstr=term[i];
				var test="";
				test=tmpstr.substring(0,tmpstr.indexOf("~"))+tmpstr.substring(tmpstr.indexOf("~")+2,tmpstr.length);
				colorcount=tmpstr.substring(tmpstr.indexOf("~")+1,tmpstr.indexOf("~")+2)
				//test=test.replace(" ","[\\s]").replace(" ","[\\s]").replace(" ","[\\s]").replace(" ","[\\s]");
				
				test=ReplaceAll(test," ","+[\\W\\s]+");
				//test=ReplaceAll(test," ","(\\s)*(\<[^\>]*\>)*(\<[^\>]*\>)*(\\s)*");
				
				//test=ReplaceAll(test," ","(>|>[^>]*<)");
				//alert(test);
				re = new RegExp(test, "gi");
				//alert(re);
			}
			else
			{
				//alert(term[i]);
				term[i]="previous(\\s)*(\<[^\>]*\>)*(\<[^\>]*\>)*(\\s)*companies(\\s)*(\<[^\>]*\>)*(\<[^\>]*\>)*(\\s)*laws";
				re = new RegExp(term[i], "gi");
				//alert(re.test(text));
			}
            var count = 0; // just incase
            text = ">" + text + "<"; // temporary tag marks
            do 
            {
                l=text.length; //highlightMatches
				//alert(re.indexOf("~"));
				//alert(term.length);
				if (term.length>1)
				{
					if (colorcount>0)
						text=text.replace(re, "$1<font style='color:black; background-color:" + colors[colorcount] + ";'>$2</font>&nbsp;$3");
					else
						text=text.replace(re, "$1<font style='color:black; background-color:" + colors[i] + ";'>$2</font>&nbsp;$3");
				}
				else
				{
				//alert(re);
				//alert(text.match(re));
				
					//text=text.replace(re, "$1<font style='color:black; background-color:yellow;'>"+termText[i]+"$2</font>$3");
					text=text.replace(re, "$1<font style='color:black; background-color:yellow;'>$2</font>$3");
					//text=text.replace(re, "<span style='color: red;'>$1</span>");
					//alert(l + " - " +text.length);
					//text=text.replace(re, "Taxmann");
				}
                count++;
            }
            while(l!=text.length && count<50);
            text = text.substring(1, text.length-1); // remove temporary tags
        }
    }        
    text = text.replace(eval("//g"), '');        
    text = text.replace(eval("//g"), '&nbsp;'); 
	//alert(text);	
    return(text);
}
function jumpHL()
{
    //var d=getElement("highlight");
    /*if(d)
    {
        var y=findPosY(d);
        // if element near top of page
        if(y < 100)
            window.scrollTo(0,0); // go to top of page
        else
            window.scrollTo(0,y-50); // show space of 50 above
    }
	*/
	
	      window.scrollTo(0,0); // go to top of page
		  
}
function highlight()
{	
    var x = document.body;
    if (x)
    {
        var strHTML=SearchHiLite(x.innerHTML);
		//alert(strHTML);
        if (strHTML!=false) x.innerHTML = strHTML;
        jumpHL();
    }
}
function highlightSearchTerms(searchText)
{
	 highlight();
}

function ReplaceAll(Source,stringToFind,stringToReplace){
  var temp = Source;
       var index = temp.indexOf(stringToFind);
        while(index != -1){
            temp = temp.replace(stringToFind,stringToReplace);
            index = temp.indexOf(stringToFind);
        }
		//alert(temp);
		//tempF="[\\s]"+temp+"[\\s]";
		//alert(tempF);
        return temp;
}

