var escapeRE=new RegExp();var escapeNotQuotRE=new RegExp();var wildcardRE=new RegExp();var quoteRE=new RegExp();var activeBox=1;function addToQuery(){var display="";var queryString="";escapeRE=/([\-\&\|!\(\)\{\}\[\]\^\"\~\:\\+])/g;escapeNotQuotRE=/([+\-\&\|!\(\)\{\}\[\]\^\~\*\?\:\\])/g;quoteRE=/^\"(.+)\"$/;wildcardRE=/^[\*\?]/;var value=trim(document.forms["formSubmit"].textAllWords.value);if(value!==""){var words=formatTerms(value.split(/\s+/));if(words.length==1){display="\""+words[0]+"\"";}else{display="(\""+words.join("\" & \"")+"\")";}
if(!checkWildcards(words)){document.forms["formSubmit"].textAllWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryAnd",escapeStrings(words).join(" "));}
value=trim(document.forms["formSubmit"].textPhrase.value);if(value!==""){value=formatTerms(value);if(value.search(/\s/)==-1){var queryAnd=getQueryStringParam(queryString,"queryAnd");var words=new Array();if(queryAnd!="")
words=queryAnd.split(/\s+/);words.push(value);if(words.length==1){display="\""+words[0]+"\"";}else{display="(\""+words.join("\" & \"")+"\")";}
if(!checkWildcards(words)){document.forms["formSubmit"].textPhrase.focus();return false;}
queryString=setQueryStringParam(queryString,"queryAnd",escapeStrings(words).join(" "));}else{if(display!="")
display+=" & ";if(!checkWildcards(value)){document.forms["formSubmit"].textPhrase.focus();return false;}
value="\""+value+"\"";display+=value;queryString=setQueryStringParam(queryString,"queryPhrase",escapeStringsNotQuot(value));}}
value=trim(document.forms["formSubmit"].textSomeWords.value);if(value!==""){if(display!="")
display+=" & ";var words=value.split(/\s+/);if(words.length==1){display+="\""+words[0]+"\"";}else{display+="(\""+words.join("\" Or \"")+"\")";}
if(!checkWildcards(words)){document.forms["formSubmit"].textSomeWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryOr",escapeStrings(words).join(" "));}
value=trim(document.forms["formSubmit"].textNoneWords.value);if(value!==""){if(display==""){alert("You cannot use the 'with none of the words' box by itself. You must enter something in one of the other boxes as well.");document.forms["formSubmit"].textAllWords.focus();return false;}else{display+=" & Not ";}
var words=value.split(/\s+/);if(words.length==1){display+="\""+words[0]+"\"";}else{display+="(\""+words.join("\" & \"")+"\")";}
if(!checkWildcards(words)){document.forms["formSubmit"].textNoneWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryNot",escapeStrings(words).join(" "));}
if(display!=""){if(!/^\([^\(\)]+\)$/.test(display)){display="("+display+")";}
var select=document.forms["formSubmit"].selectField;var fieldDisplay=select[select.selectedIndex].text;var fieldType;if(/^dataset\:/i.test(fieldDisplay)){fieldType="dataset";}else if(/^variable\:/i.test(fieldDisplay)){fieldType="variable";}else{fieldType="both";}
queryString=setQueryStringParam(queryString,"queryFieldType",fieldType);display=display+" In ["+fieldDisplay+"]";var field=select[select.selectedIndex].value;if(field!="")
queryString=setQueryStringParam(queryString,"queryField",field);}
var dateAfter=trim(document.forms["formSubmit"].textDateAfter.value);var dateBefore=trim(document.forms["formSubmit"].textDateBefore.value);var dateOnly=false;if(dateAfter!=""&&dateBefore!=""){if(queryString==""){dateOnly=true;}
var dateAfterISO=checkDate(dateAfter);if(dateAfterISO==""){document.forms["formSubmit"].textDateAfter.focus();return false;}
var dateBeforeISO=checkDate(dateBefore);if(dateBeforeISO==""){document.forms["formSubmit"].textDateBefore.focus();return false;}
if(display!="")
display+=" & ";if(dateAfterISO>dateBeforeISO){alert("The start date of date filter is after the end date");document.forms["formSubmit"].textDateAfter.focus();return false;}
queryString=setQueryStringParam(queryString,"dateQuery",dateAfterISO+" to "+dateBeforeISO);var select=document.forms["formSubmit"].selectDateField;var fieldDisplay=select[select.selectedIndex].text;display+="("+dateAfter+" to "+dateBefore+") In ["+fieldDisplay+"]";var fieldType;if(/^dataset\:/i.test(fieldDisplay)){fieldType="dataset";}else if(/^variable\:/i.test(fieldDisplay)){fieldType="variable";}else{fieldType="both";}
queryString=setQueryStringParam(queryString,"dateFieldType",fieldType);var dateField=select[select.selectedIndex].value;queryString=setQueryStringParam(queryString,"dateField",dateField);}else if(dateAfter!=""){alert("You must enter an end date to filter by date");document.forms["formSubmit"].textDateBefore.focus();return false;}else if(dateBefore!=""){alert("You must enter an start date to filter by date");document.forms["formSubmit"].textDateAfter.focus();return false;}
if(display==""){alert("You have not entered any search terms");}else{var select=document.forms["formSubmit"].selectQuery;if(select.length>0&&!dateOnly){var selectBoolean=document.forms["formSubmit"].selectBooleanOp;display=selectBoolean[selectBoolean.selectedIndex].text+" "+display;queryString=setQueryStringParam(queryString,"operator",selectBoolean[selectBoolean.selectedIndex].value);}
select.options[select.length]=new Option(display,queryString);document.forms["formSubmit"].reset();DDIINDEX.thesaurusTree.loadThesaurus();document.forms["formSubmit"].selectBooleanOp.disabled=false;document.forms["formSubmit"].buttonRemove.disabled=false;select=null;}
updateQueryString();}
function removeFromQuery(){var select=document.forms["formSubmit"].selectQuery;if(select.selectedIndex==-1){alert("To remove a clause from your query select a line in the Query box then click \"Remove From Query\"");return false;}
select[select.selectedIndex]=null;if(select.length==0){document.forms["formSubmit"].selectBooleanOp.disabled=true;document.forms["formSubmit"].buttonRemove.disabled=true;}
updateQueryString();}
function submitQuery(){var queryString=document.forms["formSubmit"].queryString.value;if(queryString==""){alert("You have not added anything to your query");document.forms["formSubmit"].textAllWords.focus();}else{queryString=getQueryParams(queryString,"searchAdvanced");document.forms["formSubmit"].queryString.value=queryString;parent.frames["tree"].loadingPanel.show();document.forms["formSubmit"].submit();}}
function submitSimpleQuery(){var queryString="";escapeRE=/([\-\&\|!\(\)\{\}\[\]\^\"\~\:\\+])/g;quoteRE=/^\"(.+)\"$/;wildcardRE=/^[\*\?]/;var value=trim(document.forms["formSubmit"].textAllWords.value);if(value!==""){var words=formatTerms(value.split(/\s+/));if(!checkWildcards(words)){document.forms["formSubmit"].textAllWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryAnd",escapeStrings(words).join(" "));}
value=trim(document.forms["formSubmit"].textPhrase.value);if(value!==""){value=formatTerms(value);if(value.search(/\s/)==-1){var queryAnd=getQueryStringParam(queryString,"queryAnd");var words=new Array();if(queryAnd!="")
words=queryAnd.split(/\s+/);words.push(value);if(!checkWildcards(words)){document.forms["formSubmit"].textPhrase.focus();return false;}
queryString=setQueryStringParam(queryString,"queryAnd",escapeStrings(words).join(" "));}else{if(!checkWildcards(value)){document.forms["formSubmit"].textPhrase.focus();return false;}
value="\""+value+"\"";queryString=setQueryStringParam(queryString,"queryPhrase",escapeStringsNotQuot(value));}}
value=trim(document.forms["formSubmit"].textSomeWords.value);if(value!==""){var words=value.split(/\s+/);if(!checkWildcards(words)){document.forms["formSubmit"].textSomeWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryOr",escapeStrings(words).join(" "));}
value=trim(document.forms["formSubmit"].textNoneWords.value);if(value!==""){if(queryString==""){alert("You cannot use the 'with none of the words' box by itself. You must enter something in one of the other boxes as well.");document.forms["formSubmit"].textAllWords.focus();return false;}
var words=value.split(/\s+/);if(!checkWildcards(words)){document.forms["formSubmit"].textNoneWords.focus();return false;}
queryString=setQueryStringParam(queryString,"queryNot",escapeStrings(words).join(" "));}
if(queryString==""){return false;}else{var select=document.forms["formSubmit"].selectField;var fieldDisplay=select[select.selectedIndex].text;var fieldType;if(/^dataset\:/i.test(fieldDisplay)){fieldType="dataset";}else if(/^variable\:/i.test(fieldDisplay)){fieldType="variable";}else{fieldType="both";}
queryString=setQueryStringParam(queryString,"queryFieldType",fieldType);var field=select[select.selectedIndex].value;if(field!="")
queryString=setQueryStringParam(queryString,"queryField",field);}
queryString=getQueryParams(queryString,"search");document.forms["formSubmit"].queryString.value=queryString;parent.frames["tree"].loadingPanel.show();return true;}
function formatTerms(terms){if(typeof(terms)=="string"){terms=terms.replace(quoteRE,"$1");}else{for(var i=0;i<terms.length;i++){terms[i]=new String(terms[i]).replace(quoteRE,"$1");}}
return terms;}
function checkWildcards(strings){var wordFound;if(typeof(strings)=="string"){if(wildcardRE.test(strings))
wordFound=strings;}else{for(var i=0;i<strings.length;i++){if(wildcardRE.test(strings[i])){wordFound=strings[i];break;}}}
if(wordFound!=undefined){alert("Query terms cannot start with a ? or * wildcard (term '"+wordFound+"' starts with a wildcard). Wildcards may be included in the middle of query terms or at the end.");return false;}else{return true;}}
function escapeStrings(strings){if(typeof(strings)=="string"){string=strings.replace(escapeRE,"\\$1");}else{for(var i=0;i<strings.length;i++){strings[i]=new String(strings[i]).replace(escapeRE,"\\$1");}}
return strings;}
function escapeStringsNotQuot(strings){if(typeof(strings)=="string"){string=strings.replace(escapeNotQuotRE,"\\$1");}else{for(var i=0;i<strings.length;i++){strings[i]=new String(strings[i]).replace(escapeNotQuotRE,"\\$1");}}
return strings;}
function checkDate(date){var re=/^(\d{2})[\-\\\/]?(\d{2})[\-\\\/]?(\d{4})/;var matches=re.exec(date);if(!matches){alert("Error in date entered: date not in \"dd/mm/yyyy\" format");return"";}else{var currentYear=new Date().getFullYear();if(matches[3]<0||matches[3]>currentYear){alert("Error in date entered: year not between 0000 and "+currentYear);return"";}
if(matches[2]<1||matches[2]>12){alert("Error in date entered: month not between 01 and 12");return"";}
if(matches[1]<1||matches[1]>31){alert("Error in date entered: day not between 01 and 31");return"";}
return matches[3]+matches[2]+matches[1];}}
function updateQueryString(){var query="";var select=document.forms["formSubmit"].selectQuery;for(var i=0;i<select.length;i++){var queryClause=select.options[i].value;if(i==0){query=queryClause;}else{if(/^queryAnd\:/i.test(queryClause)&&/^queryAnd\:/i.test(query)){query+="++"+queryClause;}else{query+=" "+queryClause;}}}
document.forms["formSubmit"].queryString.value=query;}
function trim(value){return value.trim();}
String.prototype.trim=function(){a=this.replace(/^\s+/,'');return a.replace(/\s+$/,'');};function getQueryStringParam(queryString,property){var re=new RegExp(property+":\\[(.+?[^\\\\]?)\\]","i");var matches=re.exec(queryString);if(matches==null){return"";}else{return matches[1];}}
function setQueryStringParam(queryString,property,value){var re=new RegExp(property+":\\[.*?[^\\\\]?\\]","i");if(re.test(queryString)){return queryString.replace(re,property+":["+value+"]");}else if(queryString==""){return property+":["+value+"]";}else{return queryString+" "+property+":["+value+"]";}}
function getQueryParams(queryString,form){var select=document.forms["formSubmit"].server;var value=select[select.selectedIndex].value;if(value=="")
throw new Error("Server not specified");queryString=setQueryStringParam(queryString,"server",value);value=document.forms["formSubmit"].matchSynonyms.checked;if(value){queryString=setQueryStringParam(queryString,"matchSynonyms","true");}else{queryString=setQueryStringParam(queryString,"matchSynonyms","false");}
if(form=="search"){value=false;}else{value=document.forms["formSubmit"].matchSimilar.checked;}
if(value){queryString=setQueryStringParam(queryString,"matchSimilar","true");}else{queryString=setQueryStringParam(queryString,"matchSimilar","false");}
if(form=="search"){value=0;}else{select=document.forms["formSubmit"].phraseProximity;value=select[select.selectedIndex].value;if(value=="")
throw new Error("Phrase proximity not specified");}
queryString=setQueryStringParam(queryString,"phraseProximity",value);return queryString;}
function lite(input,img){if(img==1){input.src="images/search_icon_hover.png";}
if(img==2){input.src="images/catalog_hover.png";}}
function dim(input,img){if(img==1){input.src="images/search_icon.png";}
if(img==2){input.src="images/catalog.png";}}