
var dateIndices=new Array();var browseIndices=new Array();var standAloneLimiters=new Array();var FROM="from";var TO="to";var ALL_DATES="0";var BETWEEN="4";var OPERATOR_OR="OR";var rowNumberForPreviousSearches=0;var limiterFieldObject="";var browseWindow;var limiterFieldControl;var inputFieldControl;var limiterChoosen=false;function populateDateIndicesArray(formObj){if(formObj!=null){var dateIndexCollection=formObj.dateIndices;if(isValidObject(dateIndexCollection)&&isValidObject(dateIndexCollection.length)){for(var d=0;d<dateIndexCollection.length;d++){dateIndices[d]=dateIndexCollection[d].value;}}else if(isValidObject(dateIndexCollection)){dateIndices[0]=dateIndexCollection.value;}}}
function populateStandaloneLimitersArray(formObj){if(formObj!=null)
{var standaloneLimiterCollection=formObj.standAloneLimiters;if(isValidObject(standaloneLimiterCollection)&&isValidObject(standaloneLimiterCollection.length)){for(var d=0;d<standaloneLimiterCollection.length;d++){standAloneLimiters[d]=standaloneLimiterCollection[d].value;}}else if(isValidObject(standaloneLimiterCollection)){standAloneLimiters[0]=standaloneLimiterCollection.value;}}}
function initializeDateLimiters(formObj){populateDateIndicesArray(formObj);var DL_PREFIX="dateLimiterValue";for(d=0;d<dateIndices.length;d++){var index=dateIndices[d];var dateMode=DL_PREFIX+"("+index+").dateMode";var dateModeObj=formObj.elements[dateMode];for(j=0;j<dateModeObj.length;j++){disableOrEnableDates(formObj,dateModeObj[j],index);}}}
function isValidDateInformation(formObj){if(dateIndices.length>0){var index=dateIndices[0];var dateLimiter=new DateLimiter(formObj,index);var validFromDate=true;var validToDate=true;if(!dateLimiter.dateModesObj[0].checked){validFromDate=isValidDate(dateLimiter.fromDayVal,dateLimiter.fromMonthVal,dateLimiter.fromYearVal);if(!dateLimiter.toDayObj.disabled){validToDate=isValidDate(dateLimiter.toDayVal,dateLimiter.toMonthVal,dateLimiter.toYearVal);}}
return validFromDate&&validToDate;}
return true;}
function isValidDate(day,month,year){if(year==""){return false;}
if(month<1||month>12){return false;}
if(day<1||day>31){return false;}
if((month==4||month==6||month==9||month==11)&&(day==31)){return false;}
if(month==2){var leap=(year%4==0&&(year%100!=0||year%400==0));if(day>29||(day==29&&!leap)){return false;}}
return true;}
function validateDateRange(formObj,index){if(dateIndices.length>0){var index=dateIndices[0];var dateLimiter=new DateLimiter(formObj,index);var flag=0;if(!dateLimiter.fromDayObj.disabled&&!dateLimiter.toDayObj.disabled&&!dateLimiter.dateModesObj[0].checked){var fromDate=new Date(dateLimiter.fromYearVal,dateLimiter.fromMonthVal,dateLimiter.fromDayVal);var toDate=new Date(dateLimiter.toYearVal,dateLimiter.toMonthVal,dateLimiter.toDayVal);if(fromDate>toDate){return false;}}}
return true;}
function disableOrEnableDates(formObj,option,index){if(option.checked){if(option.value==ALL_DATES){modifyDate(formObj,index,true,FROM);modifyDate(formObj,index,true,TO);getElementById("anddate").className="disabled";}else if(option.value==BETWEEN){modifyDate(formObj,index,false,FROM);modifyDate(formObj,index,false,TO);getElementById("anddate").className="dateConjunction";}else{modifyDate(formObj,index,false,FROM);modifyDate(formObj,index,true,TO);getElementById("anddate").className="disabled";}}}
function modifyDate(formObj,index,disableFlag,type){var day="dateLimiterValue("+index+")."+type+"Day";var month="dateLimiterValue("+index+")."+type+"Month";var year="dateLimiterValue("+index+")."+type+"Year";if(disableFlag){formObj.elements[day].selectedIndex=0;formObj.elements[month].selectedIndex=0;formObj.elements[year].selectedIndex=0;}
formObj.elements[day].disabled=disableFlag;formObj.elements[month].disabled=disableFlag;formObj.elements[year].disabled=disableFlag;}
function DateLimiter(formObj,index){this.fromDay="dateLimiterValue("+index+")."+FROM+"Day";this.fromMonth="dateLimiterValue("+index+")."+FROM+"Month";this.fromYear="dateLimiterValue("+index+")."+FROM+"Year";this.toDay="dateLimiterValue("+index+")."+TO+"Day";this.toMonth="dateLimiterValue("+index+")."+TO+"Month";this.toYear="dateLimiterValue("+index+")."+TO+"Year";this.fromDayObj=formObj.elements[this.fromDay];this.fromMonthObj=formObj.elements[this.fromMonth]
this.fromYearObj=formObj.elements[this.fromYear]
this.toDayObj=formObj.elements[this.toDay];this.toMonthObj=formObj.elements[this.toMonth]
this.toYearObj=formObj.elements[this.toYear]
this.fromDayVal=this.fromDayObj.value
this.fromMonthVal=this.fromMonthObj.value
this.fromYearVal=this.fromYearObj.value
this.toDayVal=formObj.elements[this.toDay].value
this.toMonthVal=formObj.elements[this.toMonth].value
this.toYearVal=formObj.elements[this.toYear].value
this.DATE_INDEX=index;this.dateMode="dateLimiterValue"+"("+this.DATE_INDEX+").dateMode";this.dateModesObj=formObj.elements[this.dateMode];}
function initializeStandAloneLimiterArray(formObj){populateStandaloneLimitersArray(formObj);}
function standAloneLimitersSelected(formObj){var limiterSelected=false;for(var i=0;i<standAloneLimiters.length&&!limiterSelected;i++){var limiter=formObj.elements["limiterFieldValue("+standAloneLimiters[i]+")"];var limiterType=limiter!=null?limiter.type:"";for(var j=0;j<dateIndices.length;j++){var index=dateIndices[j];var dateMode="dateLimiterValue("+index+").dateMode";var dateModeObj=formObj.elements[dateMode];for(k=1;k<dateModeObj.length;k++){if((dateModeObj[k].checked==true)){limiterSelected=true;}}}
if((limiter!=null)&&limiter.type==null&&standAloneLimitersArraySelected(limiter)){limiterSelected=true;}
if((limiterType=="checkbox")&&(limiter.checked==true)){limiterSelected=true;}else if((limiterType=="text")&&(trim(limiter.value)!="")){limiterSelected=true;}else if((limiterType=="select-one")&&(limiter.selectedIndex>0)){limiterSelected=true;}else if(limiterType=="select-multiple"&&limiter.selectedIndex>-1){var selections=limiter.options;for(var idx=0;idx<selections.length;idx++){if(selections[idx].selected&&selections[idx].value!=''){limiterSelected=true;}}}}
return limiterSelected;}
function standAloneLimitersArraySelected(limiters){var limiterSelected=false;for(var i=0;i<limiters.length;i++){var limiter=limiters[i];var limiterType=limiter!=null?limiter.type:"";if((limiterType=="checkbox")&&(limiter.checked==true)){limiterSelected=true;}else if((limiterType=="text")&&(trim(limiter.value)!="")){limiterSelected=true;}else if((limiterType=="select-one")&&(limiter.selectedIndex>0)){limiterSelected=true;}else if(limiterType=="select-multiple"&&limiter.selectedIndex>-1){var selections=limiter.options;for(var idx=0;idx<selections.length;idx++){if(selections[idx].selected&&selections[idx].value!=''){limiterSelected=true;}}}}
return limiterSelected;}
function doLimiterBrowse(){var href=this.href;var formObj=getDynamicSearchFormObj();var index=getParamValueInURL(href,"terms");var LIMITER_SUFFIX="_dynamicLimiterField";var searchType=formObj.searchType.value;var fieldId=index+LIMITER_SUFFIX;var inputField=getElementById(fieldId);limiterFieldObject=inputField;limiterChoosen=true;limiterFieldControl=inputField;var preselectOnLoad='';if((inputField.value!=null)&&(inputField.value.length>0)){preselectOnLoad='&preselectOnLoad=Y';}
var browseIndexUrl=href+"&searchType="+searchType+preselectOnLoad;openInChildWindow(browseIndexUrl,"galeChildWindow");return false;}
function doMultiLimiterBrowse(formObj,inputField,index,hide,show,returnVal,clearVal){toHide=hide;toShow=show;returnPulldown=returnVal;textToClear=clearVal;if(inputField.name==null){inputField=inputField[0];}
limitFormField=inputField.name;var productId=formObj.prodId.value;var usrGrp=formObj.userGroupName.value;var fn=inputField.value;var qt=index;fieldIndex=-1;var name=BROWSE_INDEX_SELECTIONS;browseWindow=window.open(BASIC_BROWSE_INDEX_URL+"&query="+fn+"&terms="+qt+"&rowIndex="+qt+"&fieldName="+name,"galeChildWindow","toolbar=no, directories=no, status=yes, location=no, resizable=yes, menubar=no, scrollbars=yes,width=700,height=450");}
function doBrowse(){var id=this.id;var temp=id.split("_");var inputRowNumber=temp[1];rowNumberForPreviousSearches=inputRowNumber;var formObj=document.forms[0];var indexFieldName="inputFieldName("+inputRowNumber+")";var inputValueName="inputFieldValue("+inputRowNumber+")";var index=formObj.elements[indexFieldName].value;var inputQueryTerms=formObj.elements[inputValueName].value;var searchType=formObj.searchType.value;limiterChoosen=false;inputFieldControl=formObj.elements[inputValueName];var suffix=inputRowNumber+index;var browseTerm=getBrowseTermFromCookie(suffix);var browseIndexUrl=this.href+"&query="+browseTerm+"&searchType="+searchType+"&rowIndex="+suffix;openInChildWindow(browseIndexUrl,"galeChildWindow");return false;}
function doPreviousSearches(){var id=this.id;var temp=id.split("_");rowNumberForPreviousSearches=temp[1];openInChildWindow(this.href+"&brwIdx=PS","galeChildWindow");return false;}
function setSearchString(value){if(limiterChoosen&&limiterFieldObject!=""){appendOR(limiterFieldObject,value);limiterFieldObject="";}else{var formObj=document.forms[0];var indexFieldName="inputFieldValue("+rowNumberForPreviousSearches+")";var inputFieldObj=formObj.elements[indexFieldName];appendOR(inputFieldObj,value);}}
function setFieldValue(selectionValues){if(limiterChoosen){appendOR(limiterFieldControl,selectionValues);}else{appendOR(inputFieldControl,selectionValues);}}
function clearLimiter(){limiterFieldControl.value='';}
function getLimiter(){return limiterFieldControl.value;}
function appendOR(fieldObj,value){if(value.length>0){if(fieldObj.value.length==0){fieldObj.value=value;}else{fieldObj.value=fieldObj.value+OPERATOR_OR+value;}}}
function getBrowseTermFromCookie(suffix){var cookieId=formCookieId("browseTerm",suffix);var browseTerm=getCookie(cookieId);if(browseTerm==null){return"";}
return browseTerm;}
function formCookieId(name,suffix){return name+"_"+suffix;}
function validateLimiters(formObj,event){if(!isValidDateInformation(formObj)){alert(INVALID_DATE_MSG);cancelEvent(event);return false;}
else if(!validateDateRange(formObj)){alert(INVALID_DATE_RANGE);cancelEvent(event);return false;}
else if(!validateLexileScore(formObj))
{alert(INVALID_LEXILE_SCORE);cancelEvent(event);return false;}
return true;}
function showMoreOptions(){getElementById("limitCriteria").className="hide";this.className="hideSearchOptions hide";getElementById("searchForm-moreSearch").className="moreSearchOptions";}
function hideMoreOptions(){getElementById("limitCriteria").className="";this.className="moreSearchOptions hide";getElementById("searchForm-hideSearch").className="hideSearchOptions";}
function attachFieldBrowseEvent(){var anchorlinks=document.links;var fieldBrowseIdPattern="^browseField_.+_.+$";var fieldBrowseExp=new RegExp(fieldBrowseIdPattern);var prevIndexSuffix="__";for(var i=0;i<anchorlinks.length;i++){var anchorId=anchorlinks[i].id;if(fieldBrowseExp.test(anchorId)&&prevIndexSuffix==anchorId.substring(anchorId.length-prevIndexSuffix.length)){anchorlinks[i].onclick=doPreviousSearches;}else if(fieldBrowseExp.test(anchorId)){anchorlinks[i].onclick=doBrowse;}}}
function attachLimiterBrowseEvent(){var anchorlinks=document.links;var limiterBrowseIdPattern="^browseField_[a-zA-Z0-9]+$";var limiterBrowseExp=new RegExp(limiterBrowseIdPattern);for(var i=0;i<anchorlinks.length;i++){if(limiterBrowseExp.test(anchorlinks[i].id)){anchorlinks[i].onclick=doLimiterBrowse;}}}
function attachLimiterScriptEvents(){var hideOption=getElementById("searchForm-hideSearch");if(hideOption!=null){hideOption.onclick=showMoreOptions;}
var showOption=getElementById("searchForm-moreSearch");if(showOption!=null){showOption.onclick=hideMoreOptions;}
attachFieldBrowseEvent();attachLimiterBrowseEvent();}
function validateLexileScore(formObj){var lexileScoreElems=formObj.elements["limiterFieldValue(LX)"];if(lexileScoreElems!=null)
{for(var i=0;i<lexileScoreElems.length;i++)
{var lexileScoreField=lexileScoreElems[i];if(lexileScoreField.type=="text")
{if(trim(lexileScoreField.value)!="")
{var regEx1=new RegExp("^[0-9]{1,}$");var regEx2=new RegExp("^([0-9]{1,}-[0-9]{1,})$");var regEx3=new RegExp("^([0-9]{1,} to [0-9]{1,})$");var lexileScore=lexileScoreField.value;if(regEx1.test(lexileScore))
{return true;}
else if(regEx2.test(lexileScore))
{return true;}
else if(regEx3.test(lexileScore))
{return true;}
else
{return false;}}}}}
return true;}
addWindowLoadEvent(attachLimiterScriptEvents);