
var totalPages = 5;
var currentPage = 2;
var lastPage = 5;
var pagination = "";
var MAX_NUMBER_OF_PAGE_LINK = 11;
var PAGE_OFFSET = 5;
var LOCATOR_TYPE = "class";


var showLocalInfo = "";
var unreserved = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~";
var reserved = "!*'();:@&=+$,/?%#[]";
var allowed = unreserved + reserved;
var hexchars = "0123456789ABCDEFabcdef";
var showDidUMean=true;
var filterClicked="";
// global query object
var query;
var addressList = new Array();
var xmlHttp;

var highlightDataEnabled = true;

var queryIndex = 0;

function getXMLHTTP() {
	var AjaxRequest = null;
	try {
		AjaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			AjaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (oc) {
			AjaxRequest = null;
		}
	}
	if (!AjaxRequest && typeof XMLHttpRequest != "undefined") {
		AjaxRequest = new XMLHttpRequest();
	}
	return AjaxRequest;
}
function reLoadData(querystring) {
	document.getElementById("errorMessageDiv").innerHTML = "";
	var timeStamp=(new Date()).getTime();
	//alert(createFilterForHitTracking());
        var serviceType = "";
    
    //Servlet URL is caputered based on service type for Hit tracking.
    //Only URL is different for each service but underlying servlet ( SearchServlet) is common for all the service. 
    var servletURL = "";
	if(LOCATOR_TYPE == "class" || LOCATOR_TYPE == "academy") {
		serviceType = (LOCATOR_TYPE == "class") ? "CLSLOC" : "ACLOC";
		servletURL = "/cnams/AcademyClassLocatorServlet?";
		if(isUserLoggedIn){
			servletURL = servletURL + "type=i&"
		}
	}
	else if(LOCATOR_TYPE == "membershipdirectory") {
		serviceType = "MD";
		servletURL = "/cnams/UserLocatorServlet?";
	}
	else if(LOCATOR_TYPE == "sitewideSearch") {
		serviceType = "SWS";
		servletURL = "/cnams/SiteWideSearchServlet?";
	}
	else{
		servletURL = "/cnams/SearchServlet?";
	}
	
	var qryString = servletURL + querystring + "&serviceType="+serviceType+"&numberOfRecords=" + query.recordsPerPage+"&timestamp="+timeStamp+"&filters="+escape(createFilterForHitTracking());
	//var qryString = "/cnams/AcademyClassLocatorServlet?" + querystring + "&numberOfRecords=" + query.recordsPerPage+"&timestamp="+timeStamp;
	var responseText;
	addressList=new Array();
	document.getElementById("didumean").style.display="none";
	document.getElementById("didumean").innerHTML="";
	if(document.getElementById("classIfoMsg")){
		document.getElementById("classIfoMsg").style.display="none";
	}
	var leftNavDiv = document.getElementById("leftNavigationMainDiv");
	try {
		var oldChild = leftNavDiv.removeChild(document.getElementById("leftNavDiv"));
		leftNavDiv.style.visibility="hidden";
	}
	catch (DOMException) {
	    // Error handling
	    try {
	    	leftNavDiv.style.visibility="hidden";
	    	}
	    	catch(e) {}
	}
	if(document.getElementById("downloadImg")){
		document.getElementById("downloadImg").style.display="none";
	}
	if(document.getElementById("downloadURL2")){
		document.getElementById("downloadURL2").style.display="none";
	}
	// in case of multiple requests, abort the earlier request
	if(xmlHttp != null){
		xmlHttp.abort();
		xmlHtttp=null;
	}
	xmlHttp = getXMLHTTP();
	if (xmlHttp) {
		xmlHttp.open("GET", qryString, true);
		xmlHttp.onreadystatechange = function () {
			if (xmlHttp.readyState == 4) {
				if (xmlHttp.status == 200) {
					responseText = xmlHttp.responseText;
					if (LOCATOR_TYPE != "sitewideSearch") {
						if (document.getElementById("keyword")) {
							document.getElementById("keyword").value = query.searchKeyword;
						}
					}					
					try {
						//alert('before yahoo');
						var mainDataSet = YAHOO.lang.JSON.parse(responseText);
						filterClicked="";
						if(isGmapPresent=="true"){
							closeMap();
						}
						//alert(mainDataSet);
						if (!(mainDataSet.message == undefined)) {
							if(mainDataSet.code == 'CNAMS_001') {
								window.location.href='/cnams/error/SessionTimeOut.jsp';
								return;
								//document.getElementById("errorMessageDiv").innerHTML ="&nbsp;&nbsp;"+mainDataSet.code+"-"+ mainDataSet.message;
							}else{
								if(mainDataSet.code == 'AXISERROR') {
								//Hide all other error messages.
									document.getElementById("errorMessageDiv").innerHTML ="&nbsp;&nbsp;" + mainDataSet.message;
								}
							}
							document.getElementById("containerDiv").innerHTML = "";
							var leftNavDiv = document.getElementById("leftNavigationMainDiv");
							try {
								var oldChild = leftNavDiv.removeChild(document.getElementById("leftNavDiv"));
								leftNavDiv.style.visibility="hidden";
							}
							catch (DOMException) {
							    // Error handling
							    try {
							    	leftNavDiv.style.visibility="hidden";
							    	}
							    	catch(e) {}
							}
							document.getElementById("paginationDiv").innerHTML = "";
							document.getElementById("RecordSummary").innerHTML = "";
							if(isGmapPresent=="true"){
								document.getElementById("mapAllButton").style.display="none";
							}
							document.getElementById("pageNumberDiv").style.display="none";
							createInnerHTMLHeader("",true);
							updateUserNavDisplay();
							try {
								showDidUMeanText(mainDataSet.queryTransforms);
							}
							catch(e){
							}
							if(document.getElementById("downloadImg")){
								document.getElementById("downloadImg").style.display="none";
							}
							if(document.getElementById("downloadURL2")){
								document.getElementById("downloadURL2").style.display="none";
							}
							if(document.getElementById("downloadExcelTD")){
								document.getElementById("downloadExcelTD").style.display="none";
							}
						} else {
							document.getElementById("errorMessageDiv").innerHTML = "";
							var leftNavDiv = document.getElementById("leftNavigationMainDiv");
							try {
								leftNavDiv.style.visibility="visible";
							}
							catch (e) {
							    // Error handling
							}
							var navigationDataSet = mainDataSet.Navigations;
							var resultDataSet = mainDataSet.Records;
							var otherInfoDataSet = mainDataSet.OtherInfo;
							var navOrderDataSet = mainDataSet.navigationOrder;
				    		var miscDataSet = mainDataSet.Miscdata;
				    		if(miscDataSet){
				    			miscDataFunction(miscDataSet,resultDataSet.length);
				    		}
				    			//if(showLocalInfo==''){
				    			//	showLocalInfo=otherInfoDataSet.localLanguageInfo;
				    			//}				    			
							createInnerHTMLResult(resultDataSet, otherInfoDataSet);
							if(isGmapPresent=="true"){
								document.getElementById("mapAllButtonTypeId").value = "Map All";
								document.getElementById("mapAllButton").style.display="block";
							
								if(isUserLoggedIn && LOCATOR_TYPE == "class" && showClassesFlow == "frmResultsPage"){
									//document.getElementById("mapAllButton").style.display='none';
									document.getElementById("mapAllButtonTypeId").value = "Map It";
								}
							}
							
							createLeftNavigationMenu(navigationDataSet, navOrderDataSet);
							createInnerHTMLPagination(otherInfoDataSet);
							createInnerHTMLHeader(otherInfoDataSet,false);
							//alert('AL1');
							// expand nav sub items as per default
							expandCollapseAsDefault();		
				    		//alert('AL2');
				    			// show the user navigation
							updateUserNavDisplay();
							//alert('AL3');
							// show 'remove filter' option
							updateFilteredNavSubItems();
							if(LOCATOR_TYPE=="membershipdirectory"){
								sortOnLoadMembershipDir();
							} else {
								sortOnLoadLocators();
							}
							//alert('AL4');
							if(highlightDataEnabled) {
							highlightSearchTerms(query.searchKeyword,true);
							}
							//alert('AL5');
							try {
								showDidUMeanText(mainDataSet.queryTransforms);
							}
							catch(e){
							}
							
						}
					}
					catch (e) {
						alert("Invalid JSON data" + e.stack);
					}
				} else {
              			//alert(xmlHttp);
				}
					//Turn hourglass off
				document.body.style.cursor = "default";
			} else {
              		//Set cursor to hourglass
				document.body.style.cursor = "wait";
			}
		};
		xmlHttp.send(null);
		document.getElementById("containerDiv").innerHTML = "<center><img src='/cnamsassets/images/common/please_wait.gif'></center>";
		if(isGmapPresent=="true"){
			document.getElementById("mapAllButton").style.display="none";
		}
	}
}

function createInnerHTMLPagination(otherInfoDataSet) {
	totalPages = otherInfoDataSet.totalPages;//will get from result json
	try {
		currentPage = parseInt(query.pageNumber);
		if (isNaN(currentPage)) {
			currentPage = 1;
		}
	}
	catch (e) {
		currentPage = 1;
	}
	lastPage = totalPages;
	pagination = "";
	if (currentPage == 1) {
		pagination = "&lt;Previous |";
	} else {
		pagination = "<a href=javascript:paginateData('" + (currentPage - 1) + "'); class='aunderLineSmall'>" + "&lt;Previous" + "</a>" + "|";
	}
	var tmp = "";
	var pagesUpto = totalPages;
	var pagesFrom = 1;
	if (totalPages > MAX_NUMBER_OF_PAGE_LINK) {
		pagesUpto = (currentPage + PAGE_OFFSET) <= totalPages ? (currentPage + PAGE_OFFSET) : totalPages;
		pagesFrom = (currentPage - PAGE_OFFSET) > 0 ? (currentPage - PAGE_OFFSET) : 1;
		if ((pagesUpto - pagesFrom) < MAX_NUMBER_OF_PAGE_LINK) {
			pagesUpto = (pagesFrom + MAX_NUMBER_OF_PAGE_LINK - 1)<=totalPages?(pagesFrom + MAX_NUMBER_OF_PAGE_LINK - 1):totalPages;
		}
	}
	for (var i = pagesFrom; i <= pagesUpto; i++) {
		if (i == currentPage) {
			tmp = tmp + " " + i;
		} else {
			tmp = tmp + " " + "<a href=javascript:paginateData('" + i + "'); class='aunderLineSmall'>" + i + "</a>";
		}
	}
	pagination = pagination + " " + tmp + " | ";
	if (currentPage == lastPage) {
		pagination = pagination + "Next&gt;";
	} else {
		pagination = pagination + "<a href=javascript:paginateData('" + (currentPage + 1) + "'); class='aunderLineSmall'>" + "Next&gt;" + "</a>";
	}
	document.getElementById("paginationDiv").innerHTML = pagination;
	var selectedPage = query.recordsPerPage;
	var pagesMessage = "Show <select name=\"showPages\" id=\"showPages\" onchange=\"changeNumberOfPages();\" style=\"font-size:10\" >";
	var maxRecords = increamentBy * maxIteration;
	for (var i = minRecords; i <= maxRecords; i += increamentBy) {
		pagesMessage = pagesMessage + "<option value=\"" + i + "\"";
		if (i == selectedPage) {
			pagesMessage = pagesMessage + " selected=\"true\" ";
		}
		pagesMessage = pagesMessage + "> " + i + " </option>";
	}
	pagesMessage = pagesMessage + "</select> results per page";
	document.getElementById("pageNumberDiv").innerHTML = pagesMessage;
	document.getElementById("pageNumberDiv").style.display="block";
}
function createInnerHTMLHeader(otherInfoDataSet,isError) {
	var searchKeyword = query.searchKeyword;
	if (!(searchKeyword == null)) {
		document.getElementById("navigationPath").innerHTML = "<u><b>" + query.searchKeyword + "</b></u>";
	}
	if(!isError) {
	var firstHit = otherInfoDataSet.firstHit;
	var lastHit = otherInfoDataSet.lastHit;
	var totalHits = otherInfoDataSet.totalHits;
	var recordSummery = firstHit + " - " + lastHit + " of " + totalHits + " results for: ";
	document.getElementById("RecordSummary").innerHTML = recordSummery;
}
	else {
		if("class"==LOCATOR_TYPE) {
			document.getElementById("RecordSummary").innerHTML = "No current or future classes found for: ";
		}
		else {
		document.getElementById("RecordSummary").innerHTML = "0 results for: ";
	}
}
}
/*
 * @Author: Mayank
 * This function paints the Left Navigation Menu of Search Result Page.
 */
function createLeftNavigationMenu(navigationDataSet, navOrderDataSet) {
	// create table for Left Navigation Main Items
	var leftNavMenu = document.createElement("div");
	leftNavMenu.id='leftNavDiv';
	leftNavMenu.className='NavMenu';
	
	//add the table to left nav div
	var leftNavDiv = document.getElementById("leftNavigationMainDiv");
	try {
		var oldChild = leftNavDiv.removeChild(document.getElementById("leftNavDiv"));
	}
	catch (DOMException) {
	    // Error handling
	}
	leftNavDiv.appendChild(leftNavMenu);
	
	var navEntriesCount = navigationDataSet.entries;
	//Nav order from Web service
	//var navOrderElements = navOrderDataSet.navigationFieldList;
	//Nav order from jsConstants
	var navOrderElements;
	if(LOCATOR_TYPE=="membershipdirectory"){
		navOrderElements = navigationOrderMembershipDir.navigationFieldList;		
	}
	else if(LOCATOR_TYPE=="class"){
		navOrderElements = navigationOrderClass.navigationFieldList;
	}
	else {
		navOrderElements = navigationOrderAcademy.navigationFieldList;
	}
	// get the nav entries as per the specified order
	for (var i = 0; i < navOrderElements.length; i++) {
		//alert(navOrderElements[i].name);
		// search for the specified entry
		var navEntry;
		var entryFound = false;
	for (var counter = 0; counter < navEntriesCount; counter++) {
			navEntry = navigationDataSet.navigationEntry[counter];
			if (navEntry && navEntry.name == navOrderElements[i].name) {
				entryFound = true;
				break;
			}
		}
		
		//add Left Navigation item node to column
		if (entryFound) {
			leftNavMenu.appendChild(createLeftNavItem(navEntry));
	}
	};
}

function showMoreLinkDivElements(id, toExpand) {
	var moreItems = document.getElementById(id + "_navSubItemsMore");
	var showLink = document.getElementById(id + "_ShowMoreDiv");
	var hideLink = document.getElementById(id + "_HideDiv");

	if (toExpand == true) {
		moreItems.style.display = "block";
		showLink.style.display = "none";
		hideLink.style.display = "block";
	} else {
		moreItems.style.display = "none";
		showLink.style.display = "block";
		hideLink.style.display = "none";
	}
	changeDataHeight();
}
/*
 * @Author: Mayank
 * This function adds the Menu Item to Left Navigation Menu of Search Result Page.
 */
function createLeftNavItem(leftNavEntry) {
	
	// create outer container for navigation item
	var navItem = document.createElement("div");
	navItem.id=leftNavEntry.name + "_navItem";
	navItem.className='NavItemContainer';
	// create container for navigation item	header
	var navItemHeader = document.createElement("div");
	navItemHeader.id=leftNavEntry.name + "_navItemHeader";
	navItemHeader.className="NavHeader";
	// set item's header text
	var headerImage = document.createElement("img");
	headerImage.id=leftNavEntry.name + "_navItemHeaderImg";
	headerImage.src="/cnamsassets/images/locators/button_expand.gif";
	//headerImage.setAttribute("onclick", "expandCollapseSubMenu('" + leftNavEntry.name + "', true);");
	headerImage.onclick=function(){ expandCollapseSubMenu(leftNavEntry.name, true);};
	navItemHeader.appendChild(headerImage);

	// set item's header text
	navItemHeader.appendChild(document.createTextNode(' '+leftNavEntry.displayName));

	// add header to nav item
	navItem.appendChild(navItemHeader);
		
	// create container for sub items under navigation item	
	var navSubItemsContainer = document.createElement("div");
	navSubItemsContainer.id=leftNavEntry.name + "_navSubItemsContainer";
	navSubItemsContainer.style.display='none';	
	navSubItemsContainer.className='modifiers';	
	
	// add nav items containers to nav item
	navItem.appendChild(navSubItemsContainer);
	
	// create container for visible and hidden sub items 
	var navSubItemsVisible = document.createElement("div");
	navSubItemsVisible.id=leftNavEntry.name + "_navSubItemsVisible";
	//navSubItemsVisible.className="NavItems";
	// add visible sub items to sub item container
	navSubItemsContainer.appendChild(navSubItemsVisible);
	var navSubItemsMore = document.createElement("div");
	navSubItemsMore.id=leftNavEntry.name + "_navSubItemsMore";
	navSubItemsMore.style.display='none';
	//navSubItemsMore.className="NavItems";
	// add visible sub items to sub item container
	navSubItemsContainer.appendChild(navSubItemsMore);
	var navElementsCounts = leftNavEntry.navElement.count;
	var isVisible = true;
	var isShowMoreLinkEnabled = false;
	if (navElementsCounts > 0) {
		for (innercounter = 0; innercounter < navElementsCounts; innercounter++) {

			// add sub item
			if (innercounter >= countAfterShowMore) {
				isShowMoreLinkEnabled = true;
				navSubItemsMore.appendChild(createLeftNavSubItem(leftNavEntry, leftNavEntry.navElement.navigationElements[innercounter]));
			} else {
				navSubItemsVisible.appendChild(createLeftNavSubItem(leftNavEntry, leftNavEntry.navElement.navigationElements[innercounter]));
			}
		}
		if (isShowMoreLinkEnabled == true) {
			var linkReference1 = "javascript:showMoreLinkDivElements(\"" + leftNavEntry.name + "\", true);";
			var someDiv = document.createElement("div");
			someDiv.id=leftNavEntry.name + "_ShowMoreDiv";
			someDiv.className='NavShowMoreLink';
			var showLink = document.createElement("a");
			showLink.href=linkReference1;
			showLink.id=leftNavEntry.name + "_ShowMoreLink";
			showLink.innerHTML = (navElementsCounts - countAfterShowMore) + " More...";
			someDiv.appendChild(showLink);
			navSubItemsContainer.appendChild(someDiv);
			
			var linkReference2 = "javascript:showMoreLinkDivElements(\"" + leftNavEntry.name + "\", false);";
			var hideDiv = document.createElement("div");
			hideDiv.id=leftNavEntry.name + "_HideDiv";
			hideDiv.className='NavShowMoreLink';
			var hideLink = document.createElement("a");
			hideLink.href=linkReference2;
			hideLink.id=leftNavEntry.name + "_HideLink";
			hideLink.innerHTML = "Top " + countAfterShowMore + "...";
			hideDiv.appendChild(hideLink);
			hideDiv.style.display = 'none';
			navSubItemsContainer.appendChild(hideDiv);
		}
	}
	return navItem;
}
/*
 * @Author: Mayank
 * This function adds the Menu Sub Item to Left Navigation Menu of Search Result Page.
 */
function createLeftNavSubItem(navEntry, navElement) {

	var subItemId = navEntry.name + "_" + navElement.name;
	var itemDiv = document.createElement("div");
	itemDiv.id = subItemId + "_div";
	itemDiv.className="NavItems";
	
	// create div for text (not a link)
	var itemTextDiv = document.createElement("div");
	itemTextDiv.id = subItemId + "_TextDiv";
	itemTextDiv.style.display = 'none';
	itemDiv.appendChild(itemTextDiv); 
		
	// create table for text node and unfilter for sub item
	var itemTextDivTable = document.createElement("table");
	itemTextDiv.appendChild(itemTextDivTable);
	//itemTextDivTable.className = "NavItems";
	var itemTextDivTbody = document.createElement("tbody");
	itemTextDivTable.appendChild(itemTextDivTbody); 
	var itemTextDivTableTr = document.createElement("tr");
	itemTextDivTbody.appendChild(itemTextDivTableTr);
	var itemTextDivTableTextTd = document.createElement("td");
	itemTextDivTableTextTd.style.width = '120px';
	itemTextDivTableTr.appendChild(itemTextDivTableTextTd);
	var itemTextDivTableUnfilterTd = document.createElement("td");
	itemTextDivTableUnfilterTd.style.width = '54px'; 
	itemTextDivTableTr.appendChild(itemTextDivTableUnfilterTd);
	
	
	// create div for unfilter image and text
	var itemTextDivTableUnfilterDiv = document.createElement("div");
	itemTextDivTableUnfilterDiv.id = subItemId + "_UnfilterDiv";
	//itemTextDivTableUnfilterDiv.style.width = '100%';
	itemTextDivTableUnfilterTd.className = 'Unfilter';
	itemTextDivTableUnfilterTd.appendChild(itemTextDivTableUnfilterDiv);
	
		
	// create div for link
	var itemLinkDiv = document.createElement("div");
	itemLinkDiv.id = subItemId + "_LinkDiv";
	// add link div to item div
	itemDiv.appendChild(itemLinkDiv); 
	
	// create link for for sub item
	var childNavElementLink = document.createElement("a");
	linkReference = "javascript:addUserNavElement(\"" + navEntry.name + "\",\"" + navEntry.displayName + "\",\"" + (navEntry.modifier).replace(/\"/g,"\\\"") + "\",\"" + navElement.name + "\",\"" + (navElement.modifier).replace(/\"/g,"\\\"") + "\");" + "applyFilter(\"" + (navEntry.modifier).replace(/\"/g,"\\\"") + "\",\"" + (navElement.modifier).replace(/\"/g,"\\\"") + "\");";
	childNavElementLink.href=linkReference;
	// add child element link to item div
	itemLinkDiv.appendChild(childNavElementLink);
	

	var nodeText;
	if(navEntry.name=="cdcclasstypenav"){
		if(navElement.name=="S"){
			nodeText = 'Student Class'+' ('+navElement.count+')';
		}
		else if(navElement.name=="I"){
			nodeText = 'Instructor Class'+' ('+navElement.count+')';
		}
		else {
			nodeText = navElement.name+' ('+navElement.count+')';
		}
	}
	else {
		nodeText = navElement.name+' ('+navElement.count+')';
	}
	
	var itemTextNode = document.createTextNode(nodeText.replace(/_/gi," "));
	var itemTextNode1 = document.createTextNode(nodeText.replace(/_/gi," "));
	
	// add text node to link
	childNavElementLink.appendChild(itemTextNode1);
	// add text node to text div
	itemTextDivTableTextTd.appendChild(itemTextNode);
	
	
	return itemDiv;
}
/*
 * @Author: Mayank
 * This function expands/collapse the menu item.
 */
function expandCollapseSubMenu(id, expand) {

	var subMenuItem = document.getElementById(id + "_navSubItemsContainer");
	if(subMenuItem) {
	var headerImg = document.getElementById(id + "_navItemHeaderImg");
	if (expand == true) {
		// expand
		subMenuItem.style.display = "";
		headerImg.src = "/cnamsassets/images/locators/button_collapse.gif";
		headerImg.onclick = function(){expandCollapseSubMenu(id, false);};
	} else {
		// collapse
		subMenuItem.style.display = "none";
		headerImg.src = "/cnamsassets/images/locators/button_expand.gif";
		headerImg.onclick = function(){expandCollapseSubMenu(id, true);};
	}
	}
	changeDataHeight();
	
}

/*function showClasses() {
	var keyword = document.getElementById("keyword").value;
	showClassesFlow = "frmMainPage";
	keyword=keyword.replace(/^\s+|\s+$/g,"");
	
	//alert(keyword);
	academyDescSort = false;
	strDateDescSort = false;
	endDateDescSort = false;
	// create a new query
	initializeQuery();
	initializeUserNagiation();
	showDidUMean=true;
	query.searchKeyword = keyword;
	if (keyword == null || keyword == "") {
		document.getElementById("errorMessageDiv").innerHTML = "Type a keyword and then try Show Classes.";
	} else {
		reLoadData("queryStr=" + query.toJSONString());
	}
}*/
/*
 * @Author: Mayank
 * This function applies the filter on the data.
 */
function applyFilter(key, value) {
	// add modifier
	query.addModifier(key, value);
	query.pageNumber=1;
	// get the updated data
	getData();
}
/*
 * @Author: Mayank
 * This function removes the filter on the data.
 */
function removeFilter(key, value, index) {
	// add modifier
	query.removeModifier(key, value);
	removeUserNavElementAt(index);
	// get the updated data
	getData();
}
/*
 * @Author: Mayank
 * This function gets the data for the updated query.
 */
function getData() {
	var historyData = {	
				"queryIndex":queryIndex,
				"queryStr":query.toJSONStringNonEncoded(),
				"userNavs":YAHOO.lang.JSON.stringify(userNavigation),
				"modifiers":YAHOO.lang.JSON.stringify(query.filters),
				"activeTabIndex":activeTabIndex,
				"activeTabId": (LOCATOR_TYPE == "sitewideSearch")?Ext.getCmp('tabCmp').getActiveTab().getId():''
			};

	dhtmlHistory.add("query_"+(new Date()).getTime(), historyData);

	reLoadData("queryStr=" + query.toJSONString());

	queryIndex = queryIndex+1;
}
/*
 * @Author: Mayank
 * This function updates the node which have filter applied on them.
 */
function updateFilteredNavSubItems() {
	var index = 0;
	for (; index < userNavigation.length; index++) {
		// get the Divs
				
		var subItemId = userNavigation[index].itemId + "_" + userNavigation[index].subItemName;
		var subItemDiv = document.getElementById(subItemId + "_div"); 
		if(!(subItemDiv==null)){
			var subItemLinkDiv = document.getElementById( subItemId + "_LinkDiv");
			var subItemTextDiv = document.getElementById(subItemId + "_TextDiv"); 
			
	
			var subItemUnfilterDiv = document.getElementById(subItemId + "_UnfilterDiv");
		
		// Create Image Element for 'Remove Filter'
		var removeFilterImage = document.createElement("Img");
			removeFilterImage.id=subItemId + "_removeFilterImg";
		removeFilterImage.src="/cnamsassets/images/locators/unfilter.gif";

			subItemUnfilterDiv.appendChild(removeFilterImage);
		
		//unfitler next and reference
		var completeLink = document.createElement("a");
			completeLink.href="javascript:removeFilter(\"" + (userNavigation[index].itemModifier).replace(/\"/g,"\\\"") + "\",\"" + (userNavigation[index].subItemModifier).replace(/\"/g,"\\\"") + "\",\"" + index + "\");";

		completeLink.innerHTML = "&nbsp;Unfilter";
		subItemDiv.className = 'NavItemSelected';

			subItemUnfilterDiv.appendChild(completeLink);
		
			// make link invisible and text visible
		subItemLinkDiv.style.display= 'none';
		subItemTextDiv.style.display= 'block';
		
		expandCollapseSubMenu(userNavigation[index].itemId,true);		
			
			var itemNavMoreDivId = userNavigation[index].itemId + "_navSubItemsMore";
			var subItemMainDiv = subItemId + "_div";
			
			if(document.getElementById(subItemMainDiv).parentNode.id == itemNavMoreDivId){
				showMoreLinkDivElements(userNavigation[index].itemId, true);
			}
		}
		
	}
}
function updateUserNavDisplay() {
	var navHtml = "" + query.searchKeyword;
	
	if(navHtml == ""){
		navHtml = navHtml + displayUserNavigationSearchString; 
	
	}
	
	if(navHtml==""){
		navHtml=navHtml+query.term;
		for(var i=0; i < query.filters.length; i++){
			//var modifiers=query.modifiers[i].key;
			if(query.filters[i].key == CURRICULUM_OFFERED){
				navHtml=navHtml+" > Curriculum - "+ query.filters[i].value;
				break;
			}else if(query.filters[i].key == "cnamsmdciscoroles"){
				navHtml=navHtml+" > Role - "+ query.filters[i].value;
				break;
			} 
		}		
	}
       if(!(navHtml == "")) {
	    navHtml = navHtml.split('').join('<wbr>');
        }
	//alert(query.searchKeyword);
	for (index = 0; index < userNavigation.length; index++) {
		if(!(navHtml=="")){
			navHtml=navHtml+" > ";
		}
		navHtml = navHtml + "<a href = javascript:removeFilter(\"" + (userNavigation[index].itemModifier).replace(/\"/g,"\\\"") + "\",\"" + escape((userNavigation[index].subItemModifier).replace(/\"/g,"\\\""))+ "\",\"" + index + "\");>";
		navHtml = navHtml + userNavigation[index].itemName + " - " + userNavigation[index].subItemDisplayName;
		navHtml = navHtml + "</a>";
		
		//"javascript:removeFilter(\"" + (userNavigation[index].itemModifier).replace(/\"/g,"\\\"") + "\",\"" + (userNavigation[index].subItemModifier).replace(/\"/g,"\\\"") + "\",\"" + index + "\");"
	}
	var userNavDiv = document.getElementById("navigationPath");
	userNavDiv.innerHTML = navHtml;
}
function paginateData(pageNumber) {
	query.pageNumber = pageNumber;
//	reLoadData("queryStr=" + query.toJSONString());
	getData();
}
function changeNumberOfPages() {
	//alert('called');
	var numberOfRecords = numberOfRecodsPerPage;
	try {
		var numberOfRecords = document.getElementById("showPages").value;
	}
	catch (e) {
		numberOfRecords = numberOfRecodsPerPage;
	}
	query.recordsPerPage = numberOfRecords;
	query.pageNumber=1;
//	reLoadData("queryStr=" + query.toJSONString());
	getData();
}
/*function showAcademies() {
	//alert('method ');
	var keyword = document.getElementById("keyword").value;
	keyword=keyword.replace(/^\s+|\s+$/g,"");
	academyDescSort = false;
	
		// create a new query
	initializeQuery();
	initializeUserNagiation();
	query.searchKeyword = keyword;
	showDidUMean=true;
	if (keyword == null || keyword == "") {
		document.getElementById("errorMessageDiv").innerHTML = "Type a keyword and then try Locate Academy.";
	} else {
		reLoadData("queryStr=" + query.toJSONString());
	}
}
*/
function startSearch(e) {
	var key;
    if(window.event)
         key = window.event.keyCode;
    else
         key = e.which;
	if (key == 13)
    {
    	showResults();
    }
}

function showResults() {

	initializeQuery();
	initializeUserNagiation();
	
	displayUserNavigationSearchString = "";
	highLightJSONArray = null;
	
	var keyword = document.getElementById("keyword").value;	
	keyword=keyword.replace(/^\s+|\s+$/g,"");
	query.searchKeyword = keyword;
	showDidUMean=true;
	
	var errorMsg = "";
	
	if(LOCATOR_TYPE=="membershipdirectory"){
	//alert(mainQueryParamReceived);
		//query.modifiers=mainQueryParamReceived.modifiers;
		//for(i=0; i < mainQueryParamReceived.modifiers.length ; i++){
		//	modifierKey = mainQueryParamReceived.modifiers[i].key;
		//	if(modifierKey =="mdciscoroleonlyflag" || modifierKey =="mdalumniflag" || modifierKey =="mdoptinflag" || modifierKey =="mdhiddenacadonlyflag"){
		//		query.addModifier(modifierKey ,mainQueryParamReceived.modifiers[i].value);
		//	}
		//}
		errorMsg = "Type a keyword and then try Locate Members.";
		mdLastNameDescSort = false;
		mdFirstNameDescSort = false;
		mdAcademyDescSort = false;
		mdCityDescSort = false;
		mdStateDescSort = false;
		mdCountryDescSort = false;
		mdUserIDDescSort = false;
		mdUsernameDescSort = false;
	}
	else if(LOCATOR_TYPE == "academy"){
		//for(i=0; i < mainQueryParamReceived.modifiers.length ; i++){
		//		modifierKey = mainQueryParamReceived.modifiers[i].key;
		//		if(modifierKey =="cdchidden" || modifierKey =="cdcacademytype" || modifierKey =="cdcacadid" || modifierKey =="cdcareacode"){
		//			query.addModifier(modifierKey ,mainQueryParamReceived.modifiers[i].value);
		//		}
		//}
		errorMsg = "Type a keyword and then try Locate Academy.";
		academyDescSort = false;
	}
	else if(LOCATOR_TYPE=="class"){
		errorMsg = "Type a keyword and then try Show Classes.";
		strDateDescSort = false;
		endDateDescSort = false;
		academyDescSort = false;
		showClassesFlow = "frmMainPage";
	}
	else{
		errorMsg = "Type a keyword and then try and searching.";
	}

	if (keyword == null || keyword == "") {		
		document.getElementById("errorMessageDiv").innerHTML = errorMsg;		
	} else {
		
		var searchString = keyword.replace(/\"/g,"");		
		var wordsToHighlight = searchString.split(" ");
		if(wordsToHighlight != null && wordsToHighlight.length > 0){
			if(highLightJSONArray == null) {
				highLightJSONArray = new Array();
			}
			highLightJSONArray = highLightJSONArray.concat(wordsToHighlight);
		}
	
//		reLoadData("queryStr=" + query.toJSONString());
		getData();	
	}
}

/*
 * @Author: Mayank
 * This function shows the map for all the addresses.
 */
function showMapForAllAdresses(){
/*	addressesToMap = addressList;
	showAddresses();
*/

	openWinForMap();

	document.getElementById('googleMapForm').target="mapWindow";

	//Setting the list of the address to be shown in the map
	var strAddressList = YAHOO.lang.JSON.stringify(addressList);
	document.getElementById('googleMapForm').address.value = strAddressList;
	//submitting the form with set values
	document.getElementById('googleMapForm').submit();

}

/*
 * @Author: Mayank
 * This function shows the map for specific address.
 */
function showMapForAdressAt(index){
/*	addressesToMap = [addressList[index]];	
	
	//alert(addressList[index].toJSONString());
	//alert(addressesToMap[0].toJSONString());
	showAddresses();
*/

	openWinForMap();
	document.getElementById('googleMapForm').target="mapWindow";

	//Setting the value of the address at the clicked index
	var strAddressList = YAHOO.lang.JSON.stringify([addressList[index]]);
	document.getElementById('googleMapForm').address.value = strAddressList;
	//submitting the form with set values
	document.getElementById('googleMapForm').submit();	

}

function openWinForMap(){

	var screenWidth=screen.width;
	var screenHeight=screen.height;
	var top = Math.floor(3*screenHeight/10);
	var left = Math.floor(screenWidth/2);
	var height =  Math.floor(screenHeight/3)+60;
	var width = Math.floor(9*screenWidth/20)-40;

	window.open('','mapWindow','top='+top+',left='+left+',height='+height+',width='+width+',scrollbars=no,resizable=yes,menubar=0,toolbar=0,location=0,status=0');

}

function showMapForAdressExtWinAt(index){

    //Setting the value of the address at the clicked index
    var strAddressList = YAHOO.lang.JSON.stringify([addressList[index]]);
    document.getElementById('googleMapForm').address.value = strAddressList;
    document.getElementById('googleMapForm').target="mapWin";
	//submitting the form with set values
    document.getElementById('googleMapForm').submit();
    setTimeout("openExtWin();", 1000);
}


/*
 * @Author: Mayank
 * This function expands the nav items that have to be shown expanded by default.
 */

function expandCollapseAsDefault(){
	var expandList;
	
	if(LOCATOR_TYPE=="membershipdirectory"){
		expandList=expandedNavItemsMembershipDirSearch;	
	}
	else if(LOCATOR_TYPE=="class"){
		expandList=expandedNavItemsClassSearch;	
	} 
	else{
		expandList=expandedNavItemsAcadSearch;
	}
	for (index = 0; index < expandList.length; index++) {
		expandCollapseSubMenu(expandList[index], true);	
	}
	
}
function forwardToPage(forwardUrl,paramValue,keywordValue){
	var queryString=new Query();
	queryString.term=query.term;
	queryString.searchKeyword=keywordValue;
	queryString.addModifier('cdcacadid',paramValue);
   	window.location.href = forwardUrl+'&subQuery='+queryString.toJSONString();		
}

function changePointerToHandId(id){
		document.getElementById(id).style.cursor = "pointer";
		document.getElementById(id).style.cursor = "hand";
	}	
	
	
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) 
{
  // the highlightStartTag and highlightEndTag parameters are optional
  if ((!highlightStartTag) || (!highlightEndTag)) {
    highlightStartTag = "<b>";
    highlightEndTag = "</b>";
  }
  
  // find all occurences of the search term in the given text,
  // and add some "highlight" tags to them (we're not using a
  // regular expression search, because we want to filter out
  // matches that occur within HTML tags and script blocks, so
  // we have to do a little extra validation)
  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
  
  while (bodyText.length > 0) {
    i = lcBodyText.indexOf(lcSearchTerm, i+1);
    if (i < 0) {
      newText += bodyText;
      bodyText = "";
    } else {
      // skip anything inside an HTML tag
      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
        // skip anything inside a <script> block
        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
          bodyText = bodyText.substr(i + searchTerm.length);
          lcBodyText = bodyText.toLowerCase();
          i = -1;
        }
      }
    }
  }
  
  return newText;
}
	
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
  for (var index = 0; index < userNavigation.length; index++) {
		if(searchText==null || searchText==""){
			searchText=userNavigation[index].subItemDisplayName;
		}
		else {
			searchText=searchText +":"+ userNavigation[index].subItemDisplayName;
		}
	}
  
  
  // if the treatAsPhrase parameter is true, then we should search for 
  // the entire phrase that was entered; otherwise, we will split the
  // search string so that each word is searched for and highlighted
  // individually
  //if (treatAsPhrase) {
    //searchArray = [searchText];
 // } else {
    var searchArray = searchArray==""?null:searchText.split(":");
    
    if(highLightJSONArray != null){
    	searchArray = searchArray.concat(highLightJSONArray);
    }   
    
    var tmpVal;
    for(var i=0;i<searchArray.length;i++){
    	if(searchArray[i].length == 0){
    		searchArray.splice(i,1);
    	}
    	for(var j=i+1;j<searchArray.length;j++){
    	//alert(searchArray[i].length);
    	//alert(searchArray[j].length);
    		if(searchArray[i].length < searchArray[j].length){
    			tmpVal=searchArray[i];
    			searchArray[i]=searchArray[j];
    			searchArray[j]=tmpVal;
    		}
    		
    	}
    }
    
  //}
  
  if (!document.body || typeof(document.body.innerHTML) == "undefined") {
    if (warnOnFailure) {
      alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
    }
    return false;
  }
  
  var bodyText = document.getElementById("containerDiv").innerHTML;
  if(!(searchArray==null||searchArray=="")){
  	  var searchStr = "";
	  for (var i = 0; i < searchArray.length; i++) {
	  	searchStr = searchArray[i];
	    bodyText = doHighlight(bodyText, searchStr, highlightStartTag, highlightEndTag);
	    searchStr = searchStr.split('').join('<wbr>');
	    bodyText = doHighlight(bodyText, searchStr, highlightStartTag, highlightEndTag);
	  }
  }
  document.getElementById("containerDiv").innerHTML = bodyText;
  
  return true;
}


function changeDataHeight() {
	
	//For SWS we want different logic because screen UI is different.
	//So saperate method will be called.
	if(LOCATOR_TYPE == "sitewideSearch"){
		changeDataHeightSWS();
		return;
	}
	
	var leftNavHeight = document.getElementById("leftNavigationMainDiv").offsetHeight;
	var dataHeight = document.getElementById("idDivScrollingTBody").offsetHeight;
        var contentHeight = document.getElementById("newMainDataDivForContent").offsetHeight;
       //alert(contentHeight);
        if(contentHeight > 350 )
        {
        	document.getElementById("newMainDataDivForContent").height = 350;
        }
        var minLength=313;
	if(dataHeight<minLength){
		minLength=dataHeight;
	}
        var height=screen.height;
        //alert(height);
        var pageHeight=height-220;
        dataHeight = pageHeight;
        
        var contentHeight=pageHeight-236;//without header and footer
        
        var newContentLength = (contentHeight-(contentHeight*10/100));
        
        document.getElementById("leftNavMainTable").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("leftNavCol_Cell2").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("tableWithoutMenuId").style.height = newContentLength>380?380:newContentLength ;
    document.getElementById("tableWithMenuId").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("mainBodyTableId").style.height=100;//pageHeight;
        
        if(leftNavHeight>dataHeight){
		if(LOCATOR_TYPE == "membershipdirectory"){ // MD check
		if ((/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent))) { // IE
			if(document.getElementById("idTableScrollingTBody").offsetHeight > leftNavHeight){
				document.getElementById("idDivScrollingTBody").style.height = leftNavHeight;
			}
			else{
				document.getElementById("idDivScrollingTBody").style.height = document.getElementById("idTableScrollingTBody").offsetHeight;	
			}
		}else{ // Firefox
             document.getElementById("idDivScrollingTBody").style.height=(leftNavHeight-90)>minLength?(leftNavHeight-90):minLength;
		}
	}
	else {
			document.getElementById("idDivScrollingTBody").style.height = (leftNavHeight-90)>minLength?(leftNavHeight-90):minLength;
		}
	}
	else {
		document.getElementById("idDivScrollingTBody").style.height=minLength;		
	}
}

function changeDataHeightSWS() {
	var leftNavHeight = document.getElementById("leftNavigationMainDiv").offsetHeight;
	var dataHeight = document.getElementById("idDivScrollingTBody").offsetHeight;
   	var contentHeight = document.getElementById("newMainDataDivForContent").offsetHeight;
   
    var minLength=380;
    
	if(dataHeight<minLength){
		minLength=dataHeight;
	}
	document.getElementById("idDivScrollingTBody").style.height=(leftNavHeight-90)>minLength?(leftNavHeight-90):minLength;
	
	
    var height=screen.height;
    //alert(height);
    var pageHeight=height-220;
    dataHeight = pageHeight;
    
    var contentHeight=pageHeight-236;//without header and footer
    
    var newContentLength = (contentHeight-(contentHeight*10/100));
    
    document.getElementById("leftNavMainTable").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("leftNavCol_Cell2").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("tableWithoutMenuId").style.height = newContentLength>380?380:newContentLength ;
    document.getElementById("tableWithMenuId").style.height= newContentLength>380?380:newContentLength ;
    document.getElementById("mainBodyTableId").style.height=100;//pageHeight;
    if(qs && qs != null && qs != undefined) {
		qs.hide();
	}
  	
}



function showDidUMeanText(queryTransformDataSet) {
	if(showDidUMean) {
	var queryTransformList;
	//alert('step 1'+queryTransformDataSet);
	if(!(queryTransformDataSet == null)){
		queryTransformList=queryTransformDataSet.queryTransformList;
	}
	//alert('step 2'+queryTransformList);
	if(!(queryTransformList==null)){
		for(var i=0;i<queryTransformList.length;i++){
			//alert('step 3'+queryTransformList[i].name);
			//alert('step 4'+queryTransformList[i].messageId);
			if((DIDUMEAN_QUERY_TRF_NAME == queryTransformList[i].name) && (DIDUMEAN_QUERY_TRF_MESSAGE_ID == queryTransformList[i].messageId)){
				//alert('Did u mean?'+queryTransformList[i].query);
				document.getElementById("didumean").innerHTML="<font class='errorMessage'>Did you mean?</font> <a href=javascript:didUmeanClicked('" +escape(queryTransformList[i].query) + "') class= 'aunderLine'> "+queryTransformList[i].query+"</a>";
					document.getElementById("didumean").style.display="block";
					showDidUMean=false;
				break;
			}
		}
	}
}
}

function didUmeanClicked(searchKeyword){
	query.searchKeyword=searchKeyword;
	document.getElementById("keyword").value=searchKeyword;
	document.getElementById("didumean").innerHTML="";
	getData();
}

function getCurriculumValue(curriculumValue , ID , canSeeCurrNameOnClassPageAsLink){	
	var curriculumArr=curriculumValue.split(";");
	var curriclumInnerHTML='';
	if(!(curriculumArr==null))
	{
		for(var i=0;i<curriculumArr.length;i++)
		{
			var curriculumValueTmp=curriculumArr[i];
			var found=false;
			var url;
			var target;
			//Internal Locator Bharat
				
			if(isUserLoggedIn && LOCATOR_TYPE == 'academy'){				
				found=true;	
				url = '/cnams/academy/ViewCurriculumInfo.jsp?academyID='+ ID;
				target='';
			}
			else if(isUserLoggedIn && LOCATOR_TYPE == 'class'){
				if(canSeeCurrNameOnClassPageAsLink != null && canSeeCurrNameOnClassPageAsLink == true){
					found=true;	
				}else{				
					found=false;
				}	
				url = '/cnams/academy/ViewCurriculumDetails.jsp?academyCurriculumID='+ ID;
				target='';
			}else{
				target='blank';
				for(var j=0;j<courseCateglogmapping.length;j++){
					//alert("value 1=" + curriculumValueTmp.toLowerCase());
					//alert("value 2="+(courseCateglogmapping[j].name).toLowerCase());
					if(curriculumValueTmp.toLowerCase() == (courseCateglogmapping[j].name).toLowerCase() )
					{
					   found=true;
					   //url=contextRoot+libraryHomePath+courseCateglogmapping[j].url;
					   url=courseCateglogmapping[j].url;
					   break;
					}
				}
			}
			if(found){
				if(i>0){
					curriclumInnerHTML=curriclumInnerHTML+'<br/>';
				}
				curriclumInnerHTML=curriclumInnerHTML+'<a href="'+url+'" class= "aWithoutUnderLineSmall" target='+target+'>'+curriculumValueTmp+'</a>';
			}
			else {
				if(i>0){
					curriclumInnerHTML=curriclumInnerHTML+'<br/>';
				}
				curriclumInnerHTML=curriclumInnerHTML+curriculumValueTmp;
			}
		}
	}
	return curriclumInnerHTML;
}



function getViewAcademyInfoLink(AcadNameStr , AcadIDStr, index , hiddenAcademyStr , academyNameLocal , hiddenAcademyNameLocal, hiddenAcademyIdStr){	
	var AcadNameArr=AcadNameStr.split(";");
	var AcadIDArr=AcadIDStr.split(";");
	//alert(AcadNameStr);
	
	var HiddenAcadDetails=hiddenAcademyStr.split(";");
	var HiddenIDDetails=hiddenAcademyIdStr.split(";");
	

	//alert(hiddenAcademyStr);
	var url = '/cnams/academy/ViewAcademyInfo.jsp?academyID=';
	
	if(serverPath) {
		url = serverPath + url;
	}
	
	var viewAcademyInfoLinkInnerHTML='';
	if(!(AcadNameArr==null))
	{
		for(var i=0;i<(AcadNameArr.length)-1;i++)
		{
			var AcadNameTmp=AcadNameArr[i];
			var AcadIDTmp=AcadIDArr[i];
			
			/*
			var academyPotential = false;

			var indexAcadId = AcadNameTmp.lastIndexOf(AcadIDTmp);
			if(indexAcadId > -1) {
				var acadType = AcadNameTmp.substring(indexAcadId);
				if(acadType.indexOf(" P") > -1){
					academyPotential = true;
				}
			}*/			
			
			if(AcadNameTmp.length < 8){
			viewAcademyInfoLinkInnerHTML = viewAcademyInfoLinkInnerHTML +  
				'<a name = "acadNames"'
				+ ' href="' 
				+ url 
				+ AcadIDTmp 
				+ '"  class= "aWithoutUnderLineSmallNormal">'
				+ AcadNameTmp
				+ '</a>'
				+ '</br>';
			}else{
			viewAcademyInfoLinkInnerHTML = viewAcademyInfoLinkInnerHTML +  
				'<a name = "acadNames" title= "'+AcadNameTmp + '"'
				+ ' href="' 
				+ url 
				+ AcadIDTmp 
				+ '"  class= "aWithoutUnderLineSmallNormal">'
				+ AcadNameTmp.substring(0,8)
				+ '.. ('
				+AcadIDTmp
				+')'
				+ '</a>'
				+ '</br>';
			}
					
		}	
			
	}
	if(isUserCiscoMember){
		if(!(HiddenAcadDetails==null))
		{
			for(var i=0;i<(HiddenAcadDetails.length)-1;i++)
			{
				
				//var HiddenAcadArr=HiddenAcadDetails[i].split("|");	
							
				//var HiddenAcadNameTmp=HiddenAcadArr[0];
				//var HiddenAcadIDTmp=HiddenAcadArr[1];
				var HiddenAcadNameTmp=HiddenAcadDetails[i].replace(/^\s+|\s+$/g,"");
				var HiddenAcadIDTmp=HiddenIDDetails[i];
				
				/*var academyPotential = false;

				var indexAcadId = HiddenAcadNameTmp.lastIndexOf(HiddenAcadIDTmp);
				if(indexAcadId > -1) {
					var acadType = HiddenAcadNameTmp.substring(indexAcadId);
					if(acadType.indexOf(" P") > -1){
						academyPotential = true;
					}	
				}*/		
				
				if(HiddenAcadNameTmp.length < 8){
				viewAcademyInfoLinkInnerHTML = viewAcademyInfoLinkInnerHTML +  
					'<a name = "acadNames"'
					+ ' href="' 
					+ url 
					+ HiddenAcadIDTmp 
					+ '"  class= "aWithoutUnderLineSmallNormal">'
					+ HiddenAcadNameTmp
					+ '</a>'
					+ '</br>';
				}else{
					viewAcademyInfoLinkInnerHTML = viewAcademyInfoLinkInnerHTML +  
					'<a name = "acadNames" title= "'+HiddenAcadNameTmp +'"'
					+ ' href="' 
					+ url 
					+ HiddenAcadIDTmp 
					+ '"  class= "aWithoutUnderLineSmallNormal">'
					+ HiddenAcadNameTmp.substring(0,8)
					+ '.. ('
					+HiddenAcadIDTmp
					+') H'
					+ '</br>';
			}	
				
		}
	}
	
	}
	
	
	return viewAcademyInfoLinkInnerHTML;
}

function breakRecordOnSemiColan(recordStr ){	
	
	var returnInnerHTML='';
	if(recordStr) {
		returnInnerHTML = recordStr.replace(/;/g,"</BR>")
	}	
	return returnInnerHTML;
}


function hexnib(d) {
  if(d<10) return d; else return String.fromCharCode(65+d-10);
}

function hexcode1(num) {
      var hex = ''; 
  for (i=0;i<num.length;i++) 
    hex += "%" + num.charCodeAt(i).toString(16); 
  return hex;
}

function hexcode(decoded) {
  	var encoded='';
    for (var i = 0; i < decoded.length; i++ ) {
      var ch = decoded.charAt(i);
      // Check if character is an unreserved character:
      if (unreserved.indexOf(ch) != -1) {
        encoded = encoded + ch;
      } else {

        // The position in the Unicode table tells us how many bytes are needed.
        // Note that if we talk about first, second, etc. in the following, we are
        // counting from left to right:
        //
        //   Position in   |  Bytes needed   | Binary representation
        //  Unicode table  |   for UTF-8     |       of UTF-8
        // ----------------------------------------------------------
        //     0 -     127 |    1 byte       | 0XXX.XXXX
        //   128 -    2047 |    2 bytes      | 110X.XXXX 10XX.XXXX
        //  2048 -   65535 |    3 bytes      | 1110.XXXX 10XX.XXXX 10XX.XXXX
        // 65536 - 2097151 |    4 bytes      | 1111.0XXX 10XX.XXXX 10XX.XXXX 10XX.XXXX

        var charcode = decoded.charCodeAt(i);
        // Position 0 - 127 is equal to percent-encoding with an ASCII character encoding:
        //Changed 0-127 range to 0-255 as that is required for french like characters.
        if (charcode <= 127) {
          encoded = encoded + gethex(charcode);
        }

        // Position 128 - 2047: two bytes for UTF-8 character encoding.
        //changed 128 - 2047 range to 256 - 2047. this is required for french like characters.
        if (charcode > 127 && charcode < 2048) {
          // First UTF byte: Mask the first five bits of charcode with binary 110X.XXXX:
          encoded = encoded + gethex((charcode >> 6) | 0xC0);
          // Second UTF byte: Get last six bits of charcode and mask them with binary 10XX.XXXX:
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }

        // Position 2048 - 65535: three bytes for UTF-8 character encoding.
        if (charcode > 2047 && charcode < 65536) {
          // First UTF byte: Mask the first four bits of charcode with binary 1110.XXXX:
          encoded = encoded + gethex((charcode >> 12) | 0xE0);
          // Second UTF byte: Get the next six bits of charcode and mask them binary 10XX.XXXX:
          encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80);
          // Third UTF byte: Get the last six bits of charcode and mask them binary 10XX.XXXX:
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }

        // Position 65536 - : four bytes for UTF-8 character encoding.
        if (charcode > 65535) {
          // First UTF byte: Mask the first three bits of charcode with binary 1111.0XXX:
          encoded = encoded + gethex((charcode >> 18) | 0xF0);
          // Second UTF byte: Get the next six bits of charcode and mask them binary 10XX.XXXX:
          encoded = encoded + gethex(((charcode >> 12) & 0x3F) | 0x80);
          // Third UTF byte: Get the last six bits of charcode and mask them binary 10XX.XXXX:
          encoded = encoded + gethex(((charcode >> 6) & 0x3F) | 0x80);
          // Fourth UTF byte: Get the last six bits of charcode and mask them binary 10XX.XXXX:
          encoded = encoded + gethex((charcode & 0x3F) | 0x80);
        }

      }

    }  // end of for ...

    // Write result:
   // alert(encoded);
    return encoded;
  }

function gethex(decimal) {
  return "%" + hexchars.charAt(decimal >> 4) + hexchars.charAt(decimal & 0xF);
  }
 function adjustResolutionChanges() {
	var keywordObj = document.getElementById("keyword");
	if(keywordObj){
		if(screen.width==800)
		{
			keywordObj.size = 72;
		} 
		else if(screen.width == 1024)
		{
			keywordObj.size = 72;
		} 
		else if(screen.width == 1152)
		{
			keywordObj.size = 72;
		} 
		else if(screen.width == 1280)
		{
			keywordObj.size = 72;
		}
		else {
			keywordObj.size = 72;
		}
	}
 }  
 
 
 function createFilterForHitTracking(){
 	var filterString;//="locatorType:"+LOCATOR_TYPE;
 	try {
	 	//if(!(query.searchKeyword==null || query.searchKeyword=="")) {
	 	//	filterString=filterString+",keyword:"+query.searchKeyword;
	 	//}
	 	//else if(!(query.term==null || query.term=="")){
	 	//	filterString=filterString+",keyword:"+query.term;
	 	//}
	 	//var modifierLength=userNavigation.length;
	 //	if(modifierLength>0){
	 	//	filterString=filterString+",filter:"+userNavigation[modifierLength-1].itemName+"="+userNavigation[modifierLength-1].subItemDisplayName
	 	//}
	 //	filterString=userNavigation[modifierLength-1].itemName;
	 filterString=filterClicked;
	 }
	 catch(e){}
 	return filterString;
 }
 
 //This function uses the miscDataSet json to get any random data set in the helper.
 // Also, it checks for recordLength, If it is greater than 0, show downloadImg and downloadURL2.
 function miscDataFunction(miscDataSet, recordLength){ 	
	if(LOCATOR_TYPE == "membershipdirectory") {
		//This function shows the download excel link for roles who are authorised to see it.
		if(miscDataSet.downloadExcel && recordLength > 0){
			document.getElementById("downloadImg").style.display='block';
			document.getElementById("downloadURL2").style.display='block';
			if(document.getElementById("downloadExcelTD")){
				document.getElementById("downloadExcelTD").style.display="";
			}
		}
	 }	
 }
 
function wrapResultsData(){ 
//alert('called');	
	var wrapMeElements=document.getElementsByTagName("td");
	for(var i=0;i<wrapMeElements.length;i++){
		if(wrapMeElements[i].className=="wrapMe"){
			var idValue = wrapMeElements[i].id;
			//if(( /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent) )){
				//document.getElementById(idValue).style.wordBreak = "break-all";
				
			// }else{
				document.getElementById(idValue).innerHTML = document.getElementById(idValue).innerHTML.split('').join('<wbr>');
				//document.getElementById(idValue).innerHTML = document.getElementById(idValue).innerHTML+'bharat';
			//}		
		}
	}	
 }

function downloadFormSubmit(formId) {
 	var queryToSubmit = new Query();
 	
 	queryToSubmit.searchKeyword = ((query.searchKeyword == null) ? query.searchKeyword : query.searchKeyword.replace(/\"/g,"\\\""));	
	queryToSubmit.sortColumn = query.sortColumn;	
	queryToSubmit.sortDir = query.sortDir;
	queryToSubmit.pageNumber = query.pageNumber;
	queryToSubmit.params = query.params;
	queryToSubmit.term = query.term;
 	
 	queryToSubmit.recordsPerPage = 500;
 	queryToSubmit.offset = (query.pageNumber - 1 ) * (query.recordsPerPage);
 	
	if((query.filters) && (query.filters.length > 0)){
			var tmpArray = new Array();
		for(index = 0; index < query.filters.length; index++){
			var modifier = new Modifier();
			modifier.name = query.filters[index].name;
			modifier.key = query.filters[index].key;
			modifier.value = '\"' + ((unescape(query.filters[index].value)).replace(/\\\"/g,"\"")) + '\"';
			tmpArray[index] = modifier;			
		}
	queryToSubmit.filters = tmpArray;
	}
 	
 	var stringifyQueryStr=YAHOO.lang.JSON.stringify(queryToSubmit);
 	stringifyQueryStr = ("{\"query\":" + stringifyQueryStr + "}");
 	
 	document.getElementById("queryStr").value = stringifyQueryStr; 	
 	(document.getElementById(formId)).submit();
 
 }
  