function User(){this.tree=new Tree();var searcher=new Searcher();var userName=null;var loginRequired;var that=this;init();this.userName=function(user){if(user!=null){userName=user;that.loggedIn();}};this.login=function(){UserAccessor.login({callback:function(user){processLogin(user);},async:false});return(userName!=null)?true:false;};this.loggedIn=function(){searcher.loggedIn();that.tree.loggedIn(userName);var searchNames=searcher.getSavedSearchNames();that.tree.updateSavedSearches(searchNames);}
this.logout=function(){UserAccessor.logout(loggedOut);};this.checkSession=function(){if(that.tree.activeSession()===true){that.sessionExpired();}};this.sessionExpired=function(){if(userName==null){}else{}
loggedOut(true);that.login();};this.keepSessionAlive=function(){keepSessionAlive();};this.search=function(){if(that.tree.view!=="search"){that.tree.setView("search");var searchNames=searcher.getSavedSearchNames();that.tree.updateSavedSearches(searchNames);}
parent.frames["searchResults"].location=encodeRedirectURL("search.jsp");};this.searchAdvanced=function(){if(that.tree.view!=="search"){that.tree.setView("search");var searchNames=searcher.getSavedSearchNames();that.tree.updateSavedSearches(searchNames);}
parent.frames["searchResults"].location=encodeRedirectURL("searchAdvanced.jsp");};this.browse=function(){parent.frames["tree"].loadingPanel.show();if(that.tree.view!=="browse"){that.tree.setView("browse");var catalog=searcher.getCatalog();if(catalog==null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadCatalog(catalog);}
parent.frames["tree"].loadingPanel.hide();};this.getHistory=function(){parent.frames["searchResults"].location=encodeRedirectURL("history.jsp")+"?page=1";};this.getCatalogDatasets=function(queryString){if(userName==null&&loginRequired){alert("You are not logged in");return;}
parent.frames["tree"].loadingPanel.show();var searchResults=searcher.getCatalogDatasets(queryString);if(searchResults===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadCatalogDatasets(searchResults);parent.frames["tree"].loadingPanel.hide();};this.getDatasetVariables=function(queryString){parent.frames["tree"].loadingPanel.show();var searchResults=searcher.getDatasetVariables(queryString);if(searchResults===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadDatasetVariables(searchResults);parent.frames["tree"].loadingPanel.hide();};this.saveLast=function(){if(!searcher.hasLastSearch){return;}
var searchName=prompt("Please enter a name for your search");if(searchName==null){return;}
while(searcher.searchExists(searchName)){alert("Search name "+searchName+" is already taken. Please select another name");searchName=prompt("Please enter a name for your search","");if(searchName==null){return;}}
parent.frames["tree"].loadingPanel.show();searchName=searcher.saveLast(searchName);if(searchName===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.addSavedSearch(searchName);that.tree.removeLastSearch();parent.frames["tree"].loadingPanel.hide();}
this.getSearch=function(searchName){parent.frames["tree"].loadingPanel.show();if(searchName==undefined){searchName="lastSearch";}
var search=searcher.getSearch(searchName);if(search==null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
if(search.numDatasets>0){parent.frames["searchResults"].location=encodeRedirectURL("results.jsp")+"?search="+searchName+"&type=dataset";}else if(search.numVariables>0){parent.frames["searchResults"].location=encodeRedirectURL("results.jsp")+"?search="+searchName+"&type=variable";}
that.tree.loadSearch(search);parent.frames["tree"].loadingPanel.hide();};this.getMoreHits=function(searchName,hitType){parent.frames["tree"].loadingPanel.show();var page=searcher.getSearchPage(searchName,hitType);if(page===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadSearchPage(page);parent.frames["tree"].loadingPanel.hide();};this.getVariableFilter=function(searchName){var search=searcher.getSearch(searchName);if(search!=null){parent.frames.searchResults.getVariableFilter(search);}};this.filterVariables=function(searchName,field,value){parent.frames["tree"].loadingPanel.show();var search=searcher.applyFilter(searchName,"variable",field,value);if(search===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadSavedHits(search,"variable",true);parent.frames["tree"].loadingPanel.hide();};this.removeVariableFilter=function(searchName){parent.frames["tree"].loadingPanel.show();var search=searcher.removeFilter(searchName,"variable");if(search===null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.loadSavedHits(search,"variable",true);parent.frames["tree"].loadingPanel.hide();}
this.deleteSearch=function(searchName){parent.frames["tree"].loadingPanel.show();var result=searcher.deleteSearch(searchName);if(result==null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.removeSearch(searchName);parent.frames["tree"].loadingPanel.hide();};this.renameSearch=function(searchName){parent.frames["tree"].loadingPanel.show();var newName=prompt("Please enter a new name for search "+searchName);if(newName==null){return;}
while(searcher.searchExists(newName)){alert("Search name "+newName+" is already taken. Please select another name");newName=prompt("Please enter a new name for your search","");if(newName==null){return;}}
var result=searcher.renameSearch(searchName,newName);if(result==null){parent.frames["tree"].loadingPanel.hide();that.sessionExpired();return;}
that.tree.renameSearch(searchName,newName);parent.frames["tree"].loadingPanel.hide();};function init(){ConfigAccessor.getConfigInfo(processGetConfigInfo);}
function processGetConfigInfo(info){userName=info.userName;if(userName==null){loginFromCookie();}else{that.loggedIn();}
loginRequired=info.userLoginRequired;that.tree.showHomePage(info.showHomePage);that.tree.hitsPerPage(info.hitsPerPage);that.tree.allowBrowse(info.allowBrowse);that.tree.integrateNesstar(info.integrateNesstar);that.tree.rootURL(info.rootURL);that.tree.OpenIdURL(info.OpenIdURL);that.tree.catalogAccumulate(info.catalogAccumulate);that.tree.expandHitFolder(info.expandHitFolder);}
function processLogin(user){if(user!=null){userName=user;that.loggedIn(user);}else{if(that.tree.view==="search"){if(loginRequired){parent.frames["searchResults"].document.location=encodeRedirectURL("login.jsp")+"?action=search";}else{parent.frames["searchResults"].document.location=encodeRedirectURL("search.jsp");}}else{if(loginRequired){parent.frames["searchResults"].document.location=encodeRedirectURL("login.jsp")+"?action=browse";}else{parent.frames["searchResults"].document.location=encodeRedirectURL("browse.jsp");}}}}
function loginFromCookie(){UserAccessor.login(that.userName);}
function loggedOut(vSessionExpired){userName=null;searcher.loggedOut();that.tree.loggedOut();if(vSessionExpired!==true){var path=parent.location.pathname;path=path.replace(/\/[^\/\.]+\.(jsp|html|htm)/i,"");path=path.replace(/\//g,"");DDIUtil.deleteCookie(path+"UserName");DDIUtil.deleteCookie(path+"Password");}}
function keepSessionAlive(){ConfigAccessor.getSessionTimeout(processSessionTimeout);}
function processSessionTimeout(timeout){var refreshAt=timeout-30;if(refreshAt<=0){refreshAt=timeout-5;}
if(refreshAt<=0){keepSessionAlive();}else{setTimeout("DDIINDEX.user.keepSessionAlive()",refreshAt*1000);}}}