/* infradox search related javascript */
/* v2 MW 28 feb 2006 checkEnter */
/* v3 MW 3 mar 2006 */
/* v4 MW 20 mar 2006 changed NeedCheckAllCol, ResetSearch */
/* v5 MW 21 apr 2006 & fix, WordlistSearch function (key index pages) */
/* v6 MW 27 apr 2006 & encoding, no conversion of quot into apos (7.0.0.86) */

var LoadSearchFrames=1;
var NewSearchOnly=1;
var arrSfilters = new Array();

/* ------ */

var numberOfKeywords=3;

/* ------ */

function HEnterSubmit() {
	DoSearch(document.mainform.quicksearchtext.value,0,0,false,0,document.mainform.SearchStyle[1].checked);
}

function KeywordPopup() {
	KeywordWindow=window.open(dllName+'go?a=disp&t=winkeywords.html&si='+sessid, "KeywordWindow", 'toolbar=0,status=0,menubar=0,scrollbars=1,resizable=1,width=520,height=400');
	KeywordWindow.focus();
}

function SearchUnfiltered() {
	// search again without filters
	if(confirm(sQuestion_SearchUnfiltered)) {
		var sFilters='';
		for(var j=0; j<arrSfilters.length; j++) {	
			sFilters+='&_sf'+j+'=';
		}
		var ls=parseInt(parent.resultspanel.document.mainform.lsindex.value);
		var so=parseInt(parent.resultspanel.document.mainform.soindex.value);

		var url=dllName+'go?a=disp&pt=1&t=sr-body.html&si='+sessid+
			'&usp=0&_spb=0&_spe=0&_spw=0&mw=2&se='+se+
			sFilters+
			'&lg=0&ls='+ls+'&so='+so+'&search='+sLastSearch;
		parent.resultspanel.location.href=url;
	}
}


// ui filters

function SelectAllCol(box, index) {
	if(arrSfilters[index].elementType==0) {
		var scAll='document.mainform.'+arrSfilters[index].elementAllName;
		var arr=arrSfilters[index].aCodes;
		if(box==eval(scAll)) {
			if(eval(scAll+'.checked')) {
				for(i=0;i<arr.length;i++) {
					eval('document.mainform.sc'+arr[i]+'.checked=false')
				}
			} else {
				NeedCheckAllCol(false, index);
			}
		} else {
			NeedCheckAllCol(false, index);
		}
	}
}

function NeedCheckAllCol(allFilters, index) {
	var elementName;
	var scAll;
	var CollectionCount=0;
	var arr;

	function DoItem(j) {
		switch(arrSfilters[j].elementType) {
		case 0: { 
			// checkbox
			CollectionCount=0;
			scAll='document.mainform.'+arrSfilters[j].elementAllName;
			if(eval(scAll)) { // is it currently displaying ?
				arr=arrSfilters[j].aCodes;
				for(var i=0;i<arr.length;i++) {
					if(eval('document.mainform.sc'+arr[i]+'.checked')) CollectionCount++
				}
				if(CollectionCount==arr.length) {
					// all checked, so no filtering required
					CollectionCount=0;
					for(var i=0;i<arr.length;i++) {
						eval('document.mainform.sc'+arr[i]+'.checked=false'); 
					}
				}
				eval(scAll+'.checked=(CollectionCount==0)');
			}
			break;
		}
		case 1: {
			// options box
			elementName='document.mainform.'+arrSfilters[j].elementAllName;
			if(eval(elementName)) { // is it currently displaying ?
				if(arrSfilters[j].value=='') {
					eval(elementName+'.selectedIndex=0'); 
				} else {
					var boxLength = eval(elementName+'.length');	
					var arrKeys=(arrSfilters[j].value).split(',');
					for(var i=0; i<arrKeys.length; i++) {
						for(var y=0; y<boxLength; y++) {
							// v4 fix; use temp var sVal
							var sVal=eval(elementName+'.options['+y+'].value');
							if( sVal==arrKeys[i] ) {
								eval(elementName+'.options['+y+'].selected=true');
								break;
							}
						}
					}
				}
			}
			break;
		}
		} // case

	} // DoItem

	if(allFilters) {
		for(var j=0; j<arrSfilters.length; j++) {DoItem(j)}
	} else {
		DoItem(index);
	}
}

function GetClearFilterParamString() {
	var str='';
	for(var j=0; j<arrSfilters.length; j++) str+='&_sf'+j+'=';
	return str;
}

function ResetSearch() {
 	// reset options
	var scAll;
	for(var j=0; j<arrSfilters.length; j++) {	
		arrSfilters[j].value='';
		if(arrSfilters[j].elementType==0) {
			scAll='document.mainform.'+arrSfilters[j].elementAllName;
			if(eval(scAll)) {
				eval(scAll+'.checked=true');
				SelectAllCol(eval(scAll), j);
			}
		}
	}
	NeedCheckAllCol(true,0);

	// v4
	var s='document.mainform.key1';
	if(eval(s)) {
		for(var i=1; i<=numberOfKeywords; i++) {
			s='document.mainform.key'+i+'.value=""';
			eval(s);
		}
	}
}

function WithinResultsClick() {
	var searchtext=sLastSearch;
	if((FindInString(searchtext,'|')) && document.mainform.searchinresults.checked) {
		alert(sMessage_InResultsNotPossible);
		document.mainform.searchinresults.checked=false;
	}
}

function ApplyFilters() {
}

//

function objSearch(s, b) {
	this.qry=s;
	this.bop=b;
}

function GetPowerSearchURL() {
	var doc=document.mainform;
	var withinElem=document.mainform.psInResults;
	var withinElemName='psInResults';
	var arrInput = new Array();
	var arrTemp = new Array();
	var q=''; s=''; var sT=''; var sOp=''; var e;
	var amppos=0;
	var boolStyle=0;
	var spe=0; 
	var usp=0;
	var spb=0;
	var spw=0;

	var withinOnPage=false;
	var withinResults=false;
	if(eval(doc[withinElemName])) {
		withinOnPage=true;
  		withinResults=doc[withinElemName].checked;
	}

	for(var i=1; i<=numberOfKeywords; i++) {
		s = trim(doc['key'+i].value);
		doc['key'+i].value='';
		if(s.length>0) {
			s = s.replace(/\s+/g," ");  // reduce multiple to single space
			//s = s.replace(/\"+/g, "'"); // don't replace quotes with apostrophes (mw 27 apr 06)
			arrTemp[arrTemp.length] = s;	
		}
	}

	for(var i=0; i<arrTemp.length; i++) {
		doc['key'+(i+1)].value = arrTemp[i].toLowerCase();
	}

	if(arrTemp.length==1) {
		if(withinOnPage) {
			if((doc['key1style'][2].checked)&&(withinResults)) {
				sT = doc['key1'].value;
				if((sT.substring(0,4)!='not ')&&(sT.substring(0,8)!='and not ')) {
					doc['key1'].value = 'and not '+sT;
				}
			}
		}
	}
		
	if(arrTemp.length==0) {
		alert(sMessage_EmptySearch );
		return '';
	}

	for(var i=1; i<=numberOfKeywords; i++) {
		s = trim(doc['key'+i].value);

		// 21 apr 06 replace ampersand
		// s = replace(s, '&', ' '); 
		// 27 apr 06 code ampersand
		amppos=s.indexOf('&');
		if(amppos > -1) { // requires 7.0.0.86
			s = replace(s, ' & ', '@32$@38$@32$'); 
			s = replace(s, ' &', '@32$@38$'); 
			s = replace(s, '& ', '@38$@32$'); 
			s = replace(s, '&', '@38$');
		}


		if(s.length>0) {
			s = s.replace(/\s+/g," ");  // reduce multiple to single space

			if(s.indexOf(' ')>-1) {
				sT=s.toLowerCase();
				if((sT.indexOf(' or ')==-1)&&(sT.indexOf(' and ')==-1)&&(sT.indexOf(' not ')==-1)) {
					if(sT.substring(0,4)=='not ') {
						s = 'and not ' + s.substring(4,s.length)
					} else {
						if(s.substring(0,1) != '\'') s = s.replace(/\s+/g," and ");
					}
				}
				if((i==1)&&withinOnPage) { // within ?
					sT=s.toLowerCase();
					if((sT.substring(0,4)=='not ')||(sT.substring(0,8)=='and not ')) {
						//eval(withinElem+'.checked=true');
						doc[withinElemName].checked=true;
						withinResults=true;
						spe=3; 
					}
				}
			}

			boolStyle = 0;
			if(i<numberOfKeywords) {
				if(doc['key'+i+'style'][1].checked) boolStyle=1;
				if(doc['key'+i+'style'][2].checked) boolStyle=2;
			}
			arrInput[arrInput.length] = new objSearch(s,boolStyle);
		}
	}	


	for(i=0; i<arrInput.length; i++) {
		s=arrInput[i].qry.toLowerCase();
		if(arrInput.length>1) {
			if(s.indexOf(' ')>-1) {
				if((s.substring(0,4)!='not ')&&(s.substring(0,8)!='and not ')&&(s.substring(0,1) != '\'')) {
					s = '(' + s + ')';
				}
			}
		}
		sOp='';
		if(i==0) {
			q = s; 
		} else {
			switch(arrInput[i-1].bop) {
			case 0: q += ' and ' + s; break;
			case 1: q += ' or ' + s; break;
			case 2: {
				sOp = ' and not '; 

				if((s.indexOf(' ')!=-1)&&(s.substring(0,1)!='\'')) {
					s = s.replace('and','');
					s = s.replace('or','');
					s = s.replace('not','');
					s = s.replace('(','');
					s = s.replace(')','');
					s = s.replace(/\s+/g," ");
					arrTemp = s.split(' ');
					s = '';
					for(var j=0; j<arrTemp.length; j++) {
						s += ' and not ' + arrTemp[j];
					}
				} else {
					s = ' and not ' + s;
				}
				if(q.length>0) {
					if((q.substring(0,1)=='(')||(q.substring(0,4)=='not ')||(q.substring(0,8)=='and not ')) {
						q += s 
					} else {
						if(q.indexOf(' ')!=-1) {
							q = '(' + q + ')' + s;
						} else {
							q += s;
						}
					}
				} else {
					q += s;
				}

				break;
				}
			}
		}
		
	}

	// 3 mar 06
	var aq = q.split(" ");
	if(aq.length==3) {
		if(aq[1]=='and') q = aq[0]+' '+aq[2];
	}

	if(withinResults) { // in results visible on page
		if(spe==0) spe=1;
		usp=1; 
	}


	var t='sr-loadersearch.html';
	if(LoadSearchFrames==0) t='sr-body.html';
	var url=dllName+'go?a=disp&pt=1&t='+t+'&si='+sessid;
	var url=url+'&usp='+usp+'&_spb='+spb+'&_spe='+spe+'&_spw='+spw+'&mw=2&se='+se;
	if(LoadSearchFrames==1) {
		var url=url+'&searchtext='+q;
	} else {	
		var ls=parseInt(document.mainform.lsindex.value);
		var so=parseInt(document.mainform.soindex.value);
		var url=url+'&lg=0&ls='+ls+'&so='+so+'&search='+q;
	}
	return url;
	
}

function DoPowerSearch() {
	var url=GetPowerSearchURL();
	if(url!='') {
		var sFilters = SetCollectionFilters(); 
		url+=sFilters;
		if(LoadSearchFrames==1) {
			parent.location.href=url
		} else {
			self.location.href=url;
		}
	}
}

function filterObject(elementType, aCodes, value, elementAllName) {
	this.elementType = elementType; // 0=checkbox, 1=options
	this.aCodes = aCodes;
	this.value = value;
	this.elementAllName = elementAllName;
}

function SetCollectionFilters() {
	var elementName;
	var scAll;
	var arr;
	var selCount;
	var sValue;
	var padLen;
	var form='parent.resultspanel.document.mainform';

	for(var j=0; j<arrSfilters.length; j++) {	
		switch(arrSfilters[j].elementType) {
		case 0: { 
			// checkbox
			scAll=form+'.scAll'+j;
			if(eval(scAll)) { // currently displaying
				arrSfilters[j].value = ''; // clear current
				if(! eval(scAll+'.checked')) {
					arr=arrSfilters[j].aCodes;
					for(var i=0; i<arr.length; i++) {
						elementName = form+'.sc'+arr[i]+'.checked';
						if(eval(elementName)) arrSfilters[j].value=arrSfilters[j].value+arr[i];
					}
				}			
			}
			break;
		}
		case 1: { 
			// options box
			elementName = form+'.'+arrSfilters[j].elementAllName;
			if(eval(elementName)) { // is it currently displaying ?
				arrSfilters[j].value='';
				if(! eval(elementName+'.selectedIndex==0')) {
					var i=eval(elementName+'.length');
					selCount=0;
					for(var x=1; x<i; x++) {
						if(eval(elementName+'.options['+x+'].selected')) {
							selCount++;
							if(arrSfilters[j].value!='') arrSfilters[j].value+=',';
							sValue=eval(elementName+'.options['+x+'].value');
							arrSfilters[j].value+=sValue;
						}
					}
					if(selCount==(i-1)) {
						// all elements are selected, clear the filter...
						arrSfilters[j].value='';
					}
				}
			}	
			break;
		}
		}
	}

	var Result='';
	for(var j=0; j<arrSfilters.length; j++) Result+='&_sf'+j+'='+arrSfilters[j].value;
	return Result;
}


// end filters

function LoadLastSearch() {
	var url=dllName+'go?a=disp&pt=1&t=sr-loader.html&si='+sessid+'&se='+se;
	parent.location.href=url;
}

function NewSearch() {
	DoSearch(document.mainform.quicksearchtext.value,0,0,false,0,false);
}

function SearchFrames(searchtext,usp,spb,skipstyle,wordmatchingstyle,within) {
	LoadSearchFrames=1;
	DoSearch(searchtext,usp,spb,skipstyle,wordmatchingstyle,within)
}

// search

function DoSearch(searchtext,usp,spb,skipstyle,wordmatchingstyle,within) {
	if (searchtext=='') {
		alert(sMessage_EmptySearch)
	} else {
		var inResults=false;
		var searchstyle=false;
		var spb=0;
		var sFilters='';

		if(parent.resultspanel.AdvancedSearchBox) {
			// the powersearch box is showing, use the settings in the box
			
			var sFilters = SetCollectionFilters(); 
			if(parent.resultspanel.document.mainform.psInResults) { 
				// checkbox is showing on the page?
				inResults=within||parent.resultspanel.document.mainform.psInResults.checked; // in results (search panel setting)
				if(inResults) {
					searchstyle=true;
					spb=1;
				}
			}

		} else {
			inResults=within; 
			if(inResults) {
				searchstyle=true;
				spb=1;
			}
		}
		
		var spe=0; 
		if(skipstyle==false) {
			spw=wordmatchingstyle;
			if(searchstyle) { spe=1; usp=1; }
		}

		var t='sr-loadersearch.html';
		if(LoadSearchFrames==0) t='sr-body.html';

		var collection='';

		var url=dllName+'go?a=disp&pt=1&t='+t+'&si='+sessid+
			'&usp='+usp+'&_spb='+spb+'&_spe='+spe+'&_spw='+spw+'&mw=2&se='+se+
			sFilters;

		if(LoadSearchFrames==1) {
			url+='&searchtext='+searchtext;
			parent.location.href=url;	
		} else {	
			var ls=parseInt(parent.resultspanel.document.mainform.lsindex.value);
			var so=parseInt(parent.resultspanel.document.mainform.soindex.value);
			url+='&lg=0&ls='+ls+'&so='+so+'&search='+searchtext;
			parent.resultspanel.location.href=url;
		}
	}
}


// toggle powersearch options on/off

var firstclick=false; // is voor IE mac

function SwitchPowersearch() {
	if (!firstclick) {
		firstclick=true;
		document.mainform.idccustom_power.value=document.mainform.idccustom_power.value=='0'?'1':'0';
		GoPage(document.mainform.pagenr.value);
	}
}

// keyword lists preview pages 

function KeywordSearch(matchall) {
	var numberchecked = 0;
	var query='';
	var operator='';
	var KS='';
	if(matchall) {
		KS=' and ';
	} else {
		KS=' or ';
	}
	for (var i = 0; i<document.mainform.elements.length; i++) {
		if ((document.mainform.elements[i].name.indexOf('keyw_') > -1)) {
			if (document.mainform.elements[i].checked) {
				numberchecked++;
				if(query=='') { 
					operator='';
				} else { 
					operator=' '+KS+' '; 
				} 
				keyword=document.mainform.elements[i].name.substring(5,50);
				keyword=replace(keyword,'  ',' ');
				keyword=replace(keyword,'&',' ');

				var keywords=keyword.split(' ');
				if(keywords.length>1) {
					keyword=replace(keyword,' and ', ' ');
					keyword=replace(keyword,' AND ', ' ');
					keyword='('+replace(keyword,' ', ' and ')+') ';
				}
				query=query+operator+keyword;
			}
		}
	}
	if(numberchecked==0) { 
		alert(sMessage_MustSelectKeywords);
	} else {
		parent.toppanel.SearchFrames(escape(query),0,0,false,0,false);
	}
}

// keyword index pages 21 apr 2006 MW

function WordlistSearch(prefix, matchall) {
	var numberchecked = 0;
	var query='';
	var operator='';
	var KS='';
	var offset=prefix.length;
	if(matchall) {
		KS=' and ';
	} else {
		KS=' or ';
	}
	for (var i = 0; i<document.mainform.elements.length; i++) {
		if ((document.mainform.elements[i].name.indexOf(prefix) > -1)) {
			if (document.mainform.elements[i].checked) {
				numberchecked++;
				if(query=='') { 
					operator='';
				} else { 
					operator=' '+KS+' '; 
				} 
				keyword=document.mainform.elements[i].name.substring(offset,50);
				keyword=replace(keyword,'  ',' ');
				keyword=replace(keyword,'&',' ');

				var keywords=keyword.split(' ');
				if(keywords.length>1) {
					keyword=replace(keyword,' and ', ' ');
					keyword=replace(keyword,' AND ', ' ');
					keyword='('+replace(keyword,' ', ' and ')+') ';
				}
				query=query+operator+keyword;
			}
		}
	}
	if(numberchecked==0) { 
		alert(sMessage_MustSelectKeywords);
	} else {
		parent.toppanel.SearchFrames(escape(query),0,0,false,0,false);
	}
}

function SingleWord(value) {
	value=replace(value,'&',' ');
	parent.toppanel.SearchFrames(value,0,0,false,0,false);
}

// end: keyword lists preview pages 
