searchBox=function(a){this.DOM=document.createElement("div");YAHOO.util.Dom.generateId(this.DOM,"ho");this.id=this.DOM.id;this.main=document.createElement("div");YAHOO.util.Dom.generateId(this.main,"ho");this.main.className="search_window";this.background=document.createElement("div");YAHOO.util.Dom.generateId(this.background,"dark");this.background.className="project_back";this.windowBody=document.createElement("div");this.windowBody.className="window_body";this.windowClosebar=document.createElement("div");this.windowClosebar.className="window_closebar";YAHOO.util.Dom.generateId(this.windowClosebar,"handle");this.windowClose=document.createElement("a");this.windowClose.className="window_close";this.windowClose.appendChild(document.createTextNode("Close"));this.windowTitle=document.createElement("span");this.windowTitle.className="window_title";this.windowTitle.appendChild(document.createTextNode("Phrase/Word Search"));this.windowContent=document.createElement("div");this.windowContent.className="search_window_content";this.searchBox=document.createElement("div");YAHOO.util.Dom.generateId(this.searchBox,"searchBox");this.searchBox.className="searchBox";this.sText=new searchText();this.lBox=new listBox();this.limitName="searchLimit";this.limiterBox=new SQA.Limiter(this.limitName,["quarto","speaker","act","scene"]);this.sLabel=document.createElement("label");this.sLabel.appendChild(document.createTextNode("Search for a WORD or PHRASE:"));this.lLabel=document.createElement("label");this.lLabel.appendChild(document.createTextNode("Results:"));this.windowClosebar.appendChild(this.windowClose);this.windowClosebar.appendChild(this.windowTitle);this.windowBody.appendChild(this.windowContent);this.windowContent.appendChild(this.sText.DOM);this.windowContent.appendChild(this.lBox.DOM);this.windowContent.appendChild(this.limiterBox.DOM);this.windowContent.insertBefore(this.sLabel,this.sText.DOM);this.windowContent.insertBefore(this.lLabel,this.lBox.DOM);this.goButton=document.createElement("button");YAHOO.util.Dom.generateId(this.goButton,"go");this.goButton.className="search_button";this.goButton.appendChild(document.createTextNode("Go"));this.windowContent.insertBefore(this.goButton,this.lLabel);YAHOO.util.Event.addListener(this.goButton.id,"click",this.sText.goDo,this.sText);this.windowSwitch=document.createElement("input");this.windowSwitch.type="checkbox";YAHOO.util.Dom.generateId(this.windowSwitch,"exact_");this.windowSwitch.className="windowSwitch";this.windowContent.appendChild(this.windowSwitch);this.wsLabel=document.createElement("label");this.wsLabel.className="wsLabel";this.wsLabel.appendChild(document.createTextNode("Exact Match: "));this.windowContent.insertBefore(this.wsLabel,this.windowSwitch);this.DOM.appendChild(this.background);this.DOM.appendChild(this.main);this.main.appendChild(this.windowClosebar);this.main.appendChild(this.windowBody);YAHOO.util.Event.addListener(this.windowSwitch,"click",this.handleSwitchClick,this);this.searchCall=null;this.headerRequest="";this.remotePanel=null;this.exactMatch="CI";this.remotePanelChangePage=new YAHOO.util.CustomEvent("remotePanelChangePage");this.remotePanelOpen=new YAHOO.util.CustomEvent("remotePanelOpen");this.windowClicked=new YAHOO.util.CustomEvent("windowClicked");this.closed=new YAHOO.util.CustomEvent("closed");this.sText.searchNow.subscribe(this.listenForSearchNow,this);this.limiterBox.reloadTheSearch.subscribe(this.listenForSearchNow,this);this.lBox.notifyListItemClicked.subscribe(function(f,c,b){b.remotePanelOpen.fire(c[0]);},this);YAHOO.util.Dom.setStyle(this.DOM,"display","none");YAHOO.util.Event.addListener(this.windowClose,"click",this.closeWin,this);YAHOO.util.Event.onAvailable(this.main.id,this.makeDraggable,this);a.appendChild(this.DOM);};searchBox.prototype={handleBoxClick:function(b,a){a.DOM.className="search_window yui-resize";a.windowClicked.fire();},handleKeypress:function(b,a){if(b.keyCode==13){a.sText.goDo("",a.sText);}},handleSwitchClick:function(b,a){a.exactMatch=(a.exactMatch=="CS")?"CI":"CS";},makeDraggable:function(a){a.drag=new YAHOO.util.DD(a.main.id);a.drag.setHandleElId(a.windowClosebar.id);a.resize=new YAHOO.util.Resize(a.main.id,{handles:"all"});},listenForSearchNow:function(c,b,a){a.searchPhrase(a.sText.DOM.value);},searchPhrase:function(c){sUrl="./lib/Search/SearchQuarto_check.php?type=getPhrase&terms="+c+"&setName="+this.limitName+"&CASE="+this.exactMatch;var e={success:function(f){sb=f.argument[0];data=f.responseText.split("\n");sb.lBox.listenForPhrase(data);},failure:function(f){},argument:[this]};var b=document.createElement("div");b.appendChild(document.createTextNode("Loading..."));this.lBox.DOM.appendChild(b);this.lBox.items[this.lBox.items.length]=b;var a=YAHOO.util.Connect.asyncRequest("GET",sUrl,e);},closeWin:function(c,b){var a=YAHOO.util.Dom.getStyle(b.DOM,"display");if(a=="block"){YAHOO.util.Dom.setStyle(b.DOM,"display","none");YAHOO.util.Event.removeListener(document,"keypress",b.handleKeypress);b.closed.fire();}else{if(a=="none"){b.limiterBox.handleAvailable(b.limiterBox);YAHOO.util.Dom.setStyle(b.DOM,"display","block");YAHOO.util.Dom.setStyle(b.DOM,"z-index","990");YAHOO.util.Event.addListener(document,"keypress",b.handleKeypress,b);}}}};listBox=function(){this.DOM=document.createElement("ul");YAHOO.util.Dom.generateId(this.DOM,"listBox");this.id=this.DOM.id;this.DOM.className="listBox";this.items=new Array();this.notifyListItemClicked=new YAHOO.util.CustomEvent("notifyListItemClicked");};listBox.prototype={listenForPhrase:function(b){if(this.DOM.firstChild){temp=this.DOM.firstChild;while(temp.nextSibling){this.DOM.removeChild(temp.nextSibling);}this.DOM.removeChild(this.DOM.firstChild);}this.items=[];el=document.createElement("div");el.className="fileitem";if(b=="Overflow"){el.appendChild(document.createTextNode("Too many results; please try refining your search by expanding the word or phrase or using the Limits to the right."));this.DOM.appendChild(el);}else{total=(b[0]=="")?0:(b.length-1);el.appendChild(document.createTextNode("Total: "+total+" results"));this.DOM.appendChild(el);for(d=0;d<b.length;d++){record=b[d].split("%");if(record[8]){var a=new listPhrase(record);this.items[a.id]=a.DOM;this.DOM.appendChild(a.DOM);a.phrasePick.subscribe(function(g,f,c){c.notifyListItemClicked.fire(f[0]);},this);}}}}};searchText=function(){this.DOM=document.createElement("input");YAHOO.util.Dom.generateId(this.DOM,"searchText");this.DOM.value="";this.id=this.DOM.id;this.DOM.className="searchText";this.TIMEOUT=1000;this.typing=false;this.searchNow=new YAHOO.util.CustomEvent("searchNow");};searchText.prototype={keyWait:function(b){var a=setTimeout(function(){b.goDo(b);},b.TIMEOUT);},goDo:function(b,a){a.searchNow.fire();}};listPhrase=function(a){this.DOM=document.createElement("li");YAHOO.util.Dom.generateId(this.DOM,"listItem");this.id=a[0];this.DOM.className="listItem";this.values=a;this.page=this.findPage(this.values[5]);this.divMeta=document.createElement("div");this.divMeta.className="listMeta";this.divMeta.appendChild(document.createTextNode("Act: "+a[2]+" Scene: "+a[3]+" Page: "+this.page));this.divMeta.appendChild(document.createElement("br"));this.divMeta.appendChild(document.createTextNode("Speaker: "+a[4]));this.divMeta.appendChild(document.createElement("br"));this.divMeta.appendChild(document.createTextNode("Quarto: "+a[8]));this.divMeta.appendChild(document.createElement("br"));this.divMeta.appendChild(document.createTextNode(a[7]));this.DOM.appendChild(this.divMeta);this.manifestPrefix="./manifest/";YAHOO.util.Event.addListener(this.DOM.id,"click",this.selectPhrase,this);this.phrasePick=new YAHOO.util.CustomEvent("phrasePick");};listPhrase.prototype={selectPhrase:function(b,a){pbid=a.values[5].split("-");page=pbid[5];manParts=a.values[5].split("-");manParts[5]="manifest.xml";doc=a.manifestPrefix+manParts.join("-");bibInfo=a.values[8];a.phrasePick.fire({readyPage:a.page,manifest:doc,bibInfo:bibInfo});},findPage:function(a){pbArr=a.split("-");page=pbArr[5];if((page.indexOf("a")>0)||(page.indexOf("b")>0)){page=page.substring(0,3);while(page.indexOf(0)=="0"){page=page.substring(1);}}else{while(page.indexOf(0)=="0"){page=page.substring(1);}}return page;}};