﻿var highLightText, regExpReplace, replaceTag;

function openLinkWithHighLightText(link){
var inputKeywords, target, fileExtension;

	try{
		fileExtension = getFileExtension(link);
		target 		  = getTarget(fileExtension);		
		inputKeywords = getElementByIndexOfID("input", "_InputKeywords");		

		if(target == "_self"){
			if(inputKeywords != null && inputKeywords.value != ""){
				if(link.indexOf("?") != -1)
					link = link + "&highLightText=" + inputKeywords.value;
				else
					link = link + "?highLightText=" + inputKeywords.value;
			}
		}
	}
	catch(e){}
	
	window.open(link, target, "");
}

function getTarget(ext){
	if(ext == "aspx" || ext == "") return "_self";
	return "_blank";
}

function getFileExtension(link){
	try{
		link = link.split("?")[0];
		var dots = link.split(".");
		if(dots.length > 0) return dots[dots.length - 1];
	}
	catch(e){}
		
	return "";
} 

function preperTheHighLightText(){
var inputKeywords, contentDiv;

	try{
		inputKeywords = getElementByIndexOfID("input", "_InputKeywords");
		if(inputKeywords != null && inputKeywords.value != "" && inputKeywords.value != searchBoxText) {
			setTimeout("preperTheHighLightText()", 1);
			return;
		}
		
		setTheHighLightTextParameters();		
		if(highLightText == "") return;

		contentDiv = getElementByIndexOfID("div", "_MSO_ContentDiv");
		if(contentDiv == null){
			setTimeout("preperTheHighLightText()", 1);
			return;
		}
	
		setHighLight(contentDiv, 0);
	}
	catch(e){}
}

function getElementByIndexOfID(elementType, elementID){
var elementTypes = document.getElementsByTagName(elementType);
			
	for(var i=0;i<elementTypes.length;i++){
		if(elementTypes[i].id.indexOf(elementID) != -1) return elementTypes[i];
	}
	
	return null;
}

function setTheHighLightTextParameters(){
	highLightText = getRequestValue("highLightText");
	regExpReplace = new RegExp(highLightText, "gi");
	replaceTag 	  = "<span class='highLightText'>" + highLightText + "</span>";
}

function getValueFormQueryString(queryName){
var reqestsArray, reqestArray;

	if(window.location.search.indexOf(queryName) == -1) return;
	reqestsArray = window.location.search.substring(1).split("&");
	
	for(var i=0;i<reqestsArray.length;i++){
		reqestArray= reqestsArray[i].split("="); 
		if(reqestArray[0] == queryName) return decodeURIComponent(reqestArray[1]);
	}
}

function setHighLight(element, position){
var newElement, elementData, elementParentNode;

	if(element.nodeType == 3){
		elementData = element.data;
	    if(elementData.indexOf(highLightText) != -1){
	        newElement		     = document.createElement("span");
			newElement.innerHTML = elementData.replace(regExpReplace, replaceTag);
			elementParentNode    = element.parentNode;
			
			if(elementParentNode.childNodes.length - 1 == position)
			    elementParentNode.appendChild(newElement);
			else
			    elementParentNode.insertBefore(newElement, elementParentNode.childNodes[position + 1]);

		    element.data = "";
        }
		return;
	}

	for(var i=element.childNodes.length-1;i>=0;i--) setHighLight(element.childNodes[i], i);
}
