	/**
	 * mainPageRowId has the value of the row number on which this browse window is opened.
	 * This is mainly needed when we come from the advanced search page.
	 */
	var mainPageRowId = 0;

	var quote = "\"";

	 //==========================================================
	 // Returns the current domain name
	 //==========================================================
		function getDomain() {
				var currentLocation = this.location.href;

				if(currentLocation.indexOf("/") > 0) { // For http://
						var temp = currentLocation.substr(7);
						return currentLocation.substr(7, temp.indexOf(":"));
				} else{
						return "";
				}
		}

	 //==========================================================
	 // Creates a cookie only if not existing or expired:
	 //           name as requested
	 //           value as requested
	 //           duration 5 minutes
	 //           path "/"
	 // then reloads the current page
	 //==========================================================
	 function setMyCookie(cookieName, cookieVal) {
	    var cookieValue = getCookie(cookieName);
	    if ( cookieValue == "undefined" || cookieValue.length == 0) {

	        var today = new Date();
	        var expires = new Date();
	        expires.setTime(today.getTime() + 1000*60*5);
	        setValueInCookie(cookieName, cookieVal, "/", expires);
      } else {
      		var today = new Date();
	        var expires = new Date();
	        expires.setTime(today.getTime() + 1000*60*5);
        	setValueInCookie(cookieName, cookieVal, "/", expires);
      }
	 }


	//==========================================================
	// Utility Function to format Selection content for display purpose
	//==========================================================
	function formatString(cstr) {

		var index = cstr.indexOf(opr);
		var result = "";
		while(index != -1) {
			result += cstr.substring(0, index) + "<B>"+opr+"</B>";
			cstr = cstr.substring(index+opr.length);
			index = cstr.indexOf(opr);
		}
		result += cstr;
		return result;
	}

	//==========================================================
	// Utility Function to tokenize the string. Returns an string array
	//==========================================================
	function stringTokenize(strcontent, delim) {

		var pos=0;
		var temp = "";
		var index = strcontent.indexOf(delim);
		var resultArr = new Array();

		while(index != -1) {
			temp = strcontent.substring(0, index);
			if(temp.length > 0) {
				resultArr[pos++] = temp;
			}
			strcontent = strcontent.substring(index+delim.length);
			index = strcontent.indexOf(delim);
		}
		if(strcontent.length > 0) {
			resultArr[pos] = strcontent;
		}

		return resultArr;
	}

	//================================================================
	// Utility Function to check whether given value exist in an array
	//================================================================
	function isArrayContains(carray, newValue) {
		for(k=0; k < carray.length; k++) {
			if(carray[k] == unescape(newValue) ) {
				return true;
			}
		}
		return false;
	}

//***************************** New Scripts added for Browse Index ********************/
	var opr = " OR ";

	function makeRemote(url) {
	    var loc = url;
	    remote = window.open("","galeChildWindow","alwaysRaised=yes,width=750,height=550,screenX=50,screenY=50,top=50,left=50,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,status=no");
	    remote.location.href=url;
		if (remote.opener == null) remote.opener = window;
		else remote.focus();
	}

	function setValueInCookie(name, value) {
	  var cookieId = generateCookieId(name);
	  setValueInCookieFor(cookieId, value);
	}

	function generateCookieId(name) {
		return formCookieId(name, mainPageRowId);
	}


	function getCookie(name){
	  var cookieId = generateCookieId(name);
	  return getValueFromCookieFor(cookieId);
	}

	var recordRows = new Array("recordRow1","recordRow2","recordRow3","recordRow4","recordRow5","recordRow6","recordRow7","recordRow8","recordRow9","recordRow10");
	var removeRows = new Array("removeRow1","removeRow2","removeRow3","removeRow4","removeRow5","removeRow6","removeRow7","removeRow8","removeRow9","removeRow10");

	/*********************************************/
	/***** Function to clear the selections ******/
	/*********************************************/
	function clearResults(formObj) {
		var numRslts = 0;
		if(formObj.browseCheck){
			numRslts = parseInt(formObj.browseCheck.length);
		}

		for (var i = 0; i < numRslts; i++){
			formObj.browseCheck[i].checked = false;
			if(formObj.browseCheck.length==undefined){
				formObj.browseCheck.checked = false;
			}
		}

		for (var i = 0; i < recordRows.length; i++){
			var whichRow = recordRows[i];
			var whichRemove = removeRows[i];
			getReturnedObj(whichRow).innerHTML = "&nbsp;";
			getReturnedObj(whichRemove).innerHTML = "&nbsp;";
		}

		setValueInCookie("selectRslts", "");
		setValueInCookie("selectValue","");
		setBrowseTermInCookie("");
	}

	/**********************************************************************/
	/***** Function to submit the selections to advanced search page ******/
	/**********************************************************************/
	function submitSelections() {
		var finalSelects = formatSelection();
		var selectRslts = getCookie("selectRslts");
		var selectValue = getCookie("selectValue");
		//setSearchString is a method defined in SearchHistory.
		//setFieldValue is a method that takes care in other places.
		// included condition to check for 'null' literal too.
		if( (selectValue != null) && (selectValue!='null') && (selectValue.length > 0)){
			opener.setPulldownFieldValue(selectRslts, selectValue);
			setValueInCookie("selectRslts","");
			setValueInCookie("selectValue","");
			window.close();
		}else{
			if(opener.setSearchString != null) {
				opener.setSearchString(finalSelects);
			} else {
				opener.setFieldValue(finalSelects);
			}
		}
		setValueInCookie("selectRslts", "");
		window.close();
	}


	function formatSelection() {
		var selectionVal = "";
		selectionVal = getCookie("selectRslts");
		if( (selectionVal == null) || (selectionVal.length < 1) )
			return "";

		var selectionValArr = stringTokenize(selectionVal, opr);
		var formatedValue = "";
		for(var i=0; i < selectionValArr.length; i++) {
			if(selectionValArr[i].indexOf("%20") > 0 || selectionValArr[i].indexOf(" ")>0) {
				formatedValue += selectionValArr[i];
			} else {
				formatedValue += selectionValArr[i];
			}

			if(i+1 < selectionValArr.length) {
				formatedValue += opr;
			}
		}
		return formatedValue;
	}


	/*********************************************/
	/***** Function to browse the query term *****/
	/*********************************************/
	function browseTerm(formObj, val, errorMessage){
		var brwTerm = "";
		if(val == 'top'){
			brwTerm = formObj.queryTop.value;
		}else{
			brwTerm = formObj.queryBtm.value;
		}

		//if(brwTerm.length > 0){

		formObj.query.value = brwTerm;
		setBrowseTermInCookie(brwTerm);
		formObj.submit();

		/*}else{
			alert(errorMessage);
		}*/
	}

	function setBrowseTermInCookie(brTerm) {
		setValueInCookie("browseTerm", brTerm);
	}

	function updateSelections(formObj, crnt, value, removeLabel) {
		if(crnt.checked){
			addToSelections(formObj, crnt, value, removeLabel);
		}else{
			removeFromSelections(formObj, crnt, value, removeLabel);
		}
	}

	function addToSelections(formObj, crnt, curValue, removeLabel) {

		var slctd = "";
		var value = "";
		slctd = getCookie("selectRslts");
		value = getCookie("selectValue");

		if(slctd == null){
			slctd = "";
		}
		if(value == null){
			value = "";
		}

		var selects = slctd.split(opr);
		var values  = value.split(opr);
		var numSelects = parseInt(selects.length);
		var numValues = parseInt(values.length);

		if(numSelects > 10){
			crnt.checked = false;
			alert(BROWSEINDEX_LIMIT_ERR_MSG);
			return;
		}else{
			var replaceVal = crnt.value.replace(/\+/g," ");
		    replaceVal=unescape(replaceVal);
		    var finalValue=replaceAll( replaceVal,'"','""');
			if(slctd.length > 0 && slctd.substring(slctd.length - opr.length) != opr) {
				slctd = slctd + opr + quote + finalValue + quote + opr;
			} else {
				slctd = slctd + quote+ finalValue + quote + opr;
			}

			if(curValue != null && curValue.length > 0){
				if(value.length > 0 && value.substring(value.length - opr.length) != opr) {
					value = value + opr + curValue + opr;
				} else {
					value = value + curValue + opr;
				}
				//value = value + curValue + opr;
			}
			setValueInCookie("selectRslts", slctd);
			setValueInCookie("selectValue", value);
			slctd = getCookie("selectRslts");
			value = getCookie("selectValue");
		}
		showSelections(formObj, removeLabel);
	}

	function showSelections(formObj, removeLabel){
		var slcts = "";
		var slctv = "";
		slcts = getCookie("selectRslts");
		slctv = getCookie("selectValue");
		if(slcts == null)
			slcts = "";
		if(slctv == null)
			slctv = "";
		var newSelected = slcts.split(opr);
		var newSelectedValues = slctv.split(opr);
		var selectedRows = newSelected.length;

		var i = 0;
		var rowNumber = i;
		var emptyItem = 0;
		// when 10 records are selected the rowNumber becomes 11 and causes a arrayindexoutofbound problem.
		while(i < selectedRows && rowNumber < 10){
			var item = newSelected[i];
			var curValue = newSelectedValues[i]
			var whichRow = recordRows[rowNumber];
			var whichRemove = removeRows[rowNumber];
			if( item != null && item.length > 0 && rowNumber < 10 )
			{
				getReturnedObj(whichRow).innerHTML = item.substring(1,item.length-1);
				if( curValue )
				{
				   getReturnedObj(whichRemove).innerHTML = "<a href=JavaScript:removeRow(document." + formObj.name +",'"+ escape(escape(item.substring(1, item.length-1))) + "','"+curValue+"','"+removeLabel+"')>" + removeLabel + "</a>";
				}
				else
				{
				   getReturnedObj(whichRemove).innerHTML = "<a href=JavaScript:removeRow(document." + formObj.name +",'"+ escape(escape(item.substring(1, item.length-1))) + "','','"+removeLabel+"')>" + removeLabel + "</a>";
				}
			}
			else
			{
				getReturnedObj(whichRow).innerHTML = "&nbsp;";
				getReturnedObj(whichRemove).innerHTML = "&nbsp;";
			}
			i++;
			if(item == null || item.length == 0) {
				emptyItem++;
			}
			rowNumber = i - emptyItem;
		}
	}

	/*****************************************************/
	/***** Function to remove a particular selection *****/
	/*****************************************************/
	function removeRow(formObj, a, curValue, removeLabel) {
		var slcts = "";
		var slctv = "";
		//var whichText =  getReturnedObj(a).innerHTML ;
		var whichText = unescape( a );
		whichText =  whichText.replace("&amp;", "&");

		slcts = getCookie("selectRslts");
		slcts = slcts.replace(quote +whichText + quote + opr, "");

		setValueInCookie("selectRslts", slcts);
		if( curValue )
		{
         slctv = getCookie("selectValue");
         slctv = slctv.replace(curValue + opr, "");
         setValueInCookie("selectValue", slctv);
		}

		var numRslts = 0;
		if(formObj.browseCheck){
			numRslts = parseInt(formObj.browseCheck.length);
			if(formObj.browseCheck.length==undefined){
			formObj.browseCheck.checked = false;
			}
		}

		for(var i = 0; i < numRslts; i++){
			var crntVal = formObj.browseCheck[i].value;
			var replacedVal = crntVal.replace(/\+/g," ");
   			crntVal=unescape(replacedVal);
		    crntVal = replaceAll(crntVal,'"','""');
			if(whichText == crntVal){
				formObj.browseCheck[i].checked = false;
				break;
			}
		}

		showSelections(formObj, removeLabel);
	}

	function checkSelections(formObj){
		var slctd;
		var rslt;
		var slcts = "";
		slcts = getCookie("selectRslts");
		if( (slcts == null) || (slcts.length < 1) )
			return;

		var newSelected = slcts.split(opr);
		var numSelected = parseInt(newSelected.length);
		var numRslts = 0;
		if(formObj.browseCheck){
			numRslts = parseInt(formObj.browseCheck.length);
		}

		for (var i = 0; i < numSelected; i++){
			slctd = newSelected[i];
			for(var j = 0; j < numRslts; j++){
				rslt = formObj.browseCheck[j].value;
				var replaceVal = rslt.replace(/\+/g," ");
		    	rslt=unescape(replaceVal);
				//alert(slctd.substring(1,slctd.length-1) + "         " + rslt );
				if(slctd.substring(1,slctd.length-1) == rslt ){
					formObj.browseCheck[j].checked = true;
					break;
				}
			}
		}
	}

	function replaceAll( str, look,replace ) {
        var idx = str.indexOf( look );
        var beforeString="";
        var j=0;
        while ( idx > -1) {
              str = str.replace(look, replace );
              beforeString=beforeString+str.substring(0, (idx+replace.length));
              if(idx==0)
	              str=str.substring(beforeString.length-j,str.length);
	          else
	          	  str=str.substring(beforeString.length-(j+1),str.length);

              idx = str.indexOf( look );
              j=j+1;

       }
    str=beforeString+str;
    return str;
}




	function removeFromSelections(formObj, crnt, curValue, removeLabel) {
		var crntVal = crnt.value;
		var replacedVal = crntVal.replace(/\+/g," ");
		crntVal=unescape(replacedVal);
		crntVal = replaceAll(crntVal,'"','""');
		var slcts = "";
		var value = "";
		slcts = getCookie("selectRslts");
		value = getCookie("selectValue");


		if(slcts.substring(slcts.length - opr.length) == opr) {
			slcts = slcts.replace( quote + crntVal + quote + opr, "");
		} else {
			slcts = slcts.replace(quote + crntVal + quote, "");
		}

		// Below block commented out by VM
		/*if(value.substring(value.length - opr.length) == opr) {
			value = slcts.replace( quote + curValue + quote + opr, "");
		} else {
			value = slcts.replace(quote + curValue + quote, "");
		}*/
		//alert("removeFromSelections : slcts = "+slcts);
		setValueInCookie("selectRslts", slcts);
		setValueInCookie("selectValue", value);

		checkSelections(formObj);
		showSelections(formObj, removeLabel);
	}

	function showSelectionsOnLoad(formObj, rowIndex, preselectOnLoad){
		mainPageRowId = rowIndex;
		if(preselectOnLoad == 'Y') {
			var slcts = "";
			slcts = getCookie("selectRslts");
			if((slcts == null) || (slcts.length == 0) ){
				setValueInCookie("selectRslts","");
			}
			else{
				setValueInCookie("selectRslts",slcts);
			}
			checkSelections(formObj);
			showSelections(formObj);
		} else {
			clearResults(formObj);
		}
	}

	function closeBrowseWindow(){
		setValueInCookie("selectRslts", "");
		window.close();
	}