function ebscoHostSearchParse(ebscohostsearchtext,ebscohostsearchmode) {
 var sT=ebscohostsearchtext.match(/(\(|\)|[^"^\s^)]+)\s*|"([^"]+)"\s*/gi); var sQ=''; var bP=0; var fP=0; var nP=0;
 for(var i = 0;i<sT.length;i++) { sT[i]=sT[i].replace(/\s+$/,""); switch (sT[i].toUpperCase()) {
 case 'TX': case 'AU': case 'TI': case 'SU': case 'SO': case 'IS': if (sQ.length>nP) if (bP==0) sQ+=ebscohostsearchmode; if (fP==1) sQ+=sT[i]+'\+AND\+'; else if (fP==2) sQ+=sT[i]+'\+'; else sQ+=sT[i]+'\+(\+'; if (fP!=2) fP=1; bP=1; break;
 case 'AA': case 'AB': case 'AC': case 'AD': case 'AE': case 'AF': case 'AG': case 'AI': case 'AK': case 'AL': case 'AM': case 'AN': case 'AO': case 'AP': case 'AR': case 'AS': case 'AT': case 'AV': case 'AW': case 'AZ': case 'BA': case 'BC': case 'BD': case 'BK': case 'BM': case 'BN': case 'BP': case 'BR': case 'BS': case 'BT': case 'CA': case 'CB': case 'CC': case 'CD': case 'CE': case 'CF': case 'CH': case 'CI': case 'CL': case 'CM': case 'CN': case 'CO': case 'CP': case 'CR': case 'CS': case 'CT': case 'CU': case 'CX': case 'CY': case 'DB': case 'DC': case 'DD': case 'DE': case 'DF': case 'DG': case 'DI': case 'DM': case 'DN': case 'DO': case 'DP': case 'DR': case 'DS': case 'DT': case 'DU': case 'DX': case 'EB': case 'EC': case 'ED': case 'EF': case 'EG': case 'EL': case 'EM': case 'EN': case 'ER': case 'ES': case 'ET': case 'EV': case 'FA': case 'FC': case 'FD': case 'FF': case 'FG': case 'FI': case 'FK': case 'FL': case 'FM': case 'FQ': case 'FR': case 'FS': case 'FT': case 'GB': case 'GC': case 'GD': case 'GE': case 'GI': case 'GL': case 'GN': case 'GR': case 'GS': case 'GT': case 'GV': case 'HC': case 'HJ': case 'HS': case 'HT': case 'HY': case 'IA': case 'IB': case 'IC': case 'ID': case 'II': case 'IM': case 'IN': case 'IP': case 'IR': case 'IV': case 'JI': case 'JN': case 'JS': case 'JT': case 'KK': case 'KT': case 'KW': case 'KY': case 'LA': case 'LB': case 'LC': case 'LE': case 'LG': case 'LH': case 'LI': case 'LL': case 'LN': case 'LS': case 'LT': case 'LV': case 'LW': case 'LY': case 'MA': case 'MB': case 'MC': case 'MD': case 'ME': case 'MF': case 'MH': case 'MI': case 'MJ': case 'MM': case 'MN': case 'MO': case 'MP': case 'MQ': case 'MR': case 'MS': case 'MT': case 'MV': case 'MW': case 'NA': case 'NB': case 'NC': case 'ND': case 'NE': case 'NF': case 'NI': case 'NM': case 'NN': case 'NO': case 'NP': case 'NR': case 'NS': case 'NT': case 'NU': case 'OA': case 'OC': case 'OD': case 'OG': case 'OL': case 'OP': case 'OS': case 'OT': case 'PA': case 'PB': case 'PC': case 'PD': case 'PE': case 'PG': case 'PH': case 'PI': case 'PL': case 'PM': case 'PN': case 'PO': case 'PP': case 'PR': case 'PS': case 'PT': case 'PU': case 'PY': case 'PZ': case 'QT': case 'RA': case 'RC': case 'RD': case 'RE': case 'RF': case 'RJ': case 'RL': case 'RN': case 'RO': case 'RP': case 'RR': case 'RS': case 'RT': case 'RV': case 'RW': case 'SA': case 'SB': case 'SC': case 'SD': case 'SE': case 'SG': case 'SH': case 'SI': case 'SJ': case 'SK': case 'SL': case 'SM': case 'SN': case 'SP': case 'SQ': case 'SS': case 'ST': case 'SX': case 'SY': case 'TA': case 'TC': case 'TD': case 'TH': case 'TK': case 'TL': case 'TM': case 'TN': case 'TP': case 'TR': case 'TS': case 'TT': case 'TU': case 'TY': case 'UC': case 'UD': case 'UI': case 'UP': case 'UR': case 'UT': case 'VC': case 'VI': case 'VS': case 'VT': case 'XN': case 'XY': case 'YR': case 'ZL': case 'AA1': case 'AG1': case 'AG2': case 'AG3': case 'AG4': case 'CC4': case 'CE3': case 'CE5': case 'CI2': case 'DE3': case 'DT1': case 'EB1': case 'EC1': case 'EC2': case 'EC3': case 'FC3': case 'FC5': case 'FM3': case 'GN1': case 'GN3': case 'GR2': case 'JN1': case 'LA1': case 'LA10': case 'LA14': case 'LA20': case 'LA5': case 'LA6': case 'LV4': case 'LX': case 'LX1': case 'LX10': case 'LX11': case 'LX12': case 'LX5': case 'LX6': case 'LX9': case 'MH1': case 'MX1': case 'PB1': case 'PF1': case 'PG1': case 'PG4': case 'PT1': case 'PT10': case 'PT100': case 'PT102': case 'PT103': case 'PT11': case 'PT12': case 'PT15': case 'PT16': case 'PT2': case 'PT35': case 'PT61': case 'PT68': case 'PT69': case 'PT70': case 'PT71': case 'PT78': case 'PT79': case 'PT80': case 'PT81': case 'PT82': case 'PT83': case 'PT88': case 'PZ1': case 'PZ26': case 'PZ7': case 'PZ8': case 'PZ9': case 'QL1': case 'SB1': case 'SB8': case 'SC2': case 'SC3': case 'SE5': case 'SL1': case 'SU1': case 'SX1': case 'TL2': case 'TS1': case 'TW': case 'TY2': if (sQ.length>nP) if (bP==0) sQ+=ebscohostsearchmode; if (fP==1) sQ+=sT[i]+ebscohostsearchmode; else if (fP==2) sQ+=sT[i]+'\+'; else sQ+=sT[i]+'\+'; if (fP!=1) fP=2; bP=1; break;
 case '(': if (sQ.length>nP && bP==0) { if (fP!=2) sQ+=ebscohostsearchmode; else sQ+='\+'; } if (fP!=1) sQ+='(\+'; bP=1; nP+=1; break; 
 case ')': sQ+='\+)'; if(fP==1) sQ+='\+)'; bP=1; fP=0; nP-=1; break;
 case 'AND': case 'OR': case 'NOT': if (sQ.length>nP && fP==1 && nP<1) sQ+='\+)'; sQ+='\+'+sT[i].toUpperCase()+'\+'; bP=1; fP=0; break;
 case '&': case '+': break;
 default: if (sT[i].toLowerCase().search(/^w([01]?\d\d?|2[0-4]\d|25[0-5])$/)!=-1||sT[i].toLowerCase().search(/^n([01]?\d\d?|2[0-4]\d|25[0-5])$/)!=-1) { sQ+='\+'+sT[i]+'\+'; bP=1; break; } else { if (sQ.length>nP && bP==0) { if (fP!=2) sQ+=ebscohostsearchmode; else sQ+='\+'; } sT[i]=sT[i].replace(/\+/g,"%2b"); sQ+=sT[i]; bP=0; } } }
 if (fP==1) sQ+='\+)'; sQ=sQ.replace(/\"/g,"%22"); sQ=sQ.replace(/ /g,"+"); sQ=sQ.replace(/,/g,"%2c"); sQ=sQ.replace(/&/g,"%26"); return sQ;
}


function ebscoHostSearchGo(form) {
 var ebscohostsearchtext=chkObject('ebscohostsearchtext','');
 var ebscohostkeywords=chkObject('ebscohostkeywords','');
 var ebscohostsearchsrc=chkObject('ebscohostsearchsrc','');
 var ebscohostsearchmode=chkObject('ebscohostsearchmode','\+AND\+');
 var ebscohostwindow=chkObject('ebscohostwindow',0);
 var ebscohosturl=chkObject('ebscohosturl','http://search.ebscohost.com/login.aspx?');

 var strAlert="";

 if (ebscohostsearchsrc == "db" || ebscohostsearchsrc == "dbgroup") {
  var ebscohostdatabases = getSelectedDatabases(form.cbs,ebscohostsearchsrc);
  if (ebscohostdatabases==-1) strAlert+="Please select one or more databases.\n";
  ebscohosturl+=ebscohostdatabases; }

 if (ebscohostsearchtext=="") strAlert+="Please enter search term(s).\n";

 if (strAlert == "") {
  if(ebscohostkeywords!="") ebscohostkeywords=ebscoHostSearchParse(ebscohostkeywords,ebscohostsearchmode)+'\+AND\+';
  ebscohosturl=ebscohosturl+'&bquery=('+ebscohostkeywords+ebscoHostSearchParse(ebscohostsearchtext,ebscohostsearchmode)+')';
 
  if (ebscohostwindow == 1) window.open(ebscohosturl,'EBSCOhost');
  else document.location=ebscohosturl;
 } else alert(strAlert);

 return false;
}

function getSelectedDatabases(ob,src){
 var databases = getMultiple(ob)
 if(databases == "") return -1;

 var dbInputAry = databases;
 var dbList = "";
 for(var i=0;i<dbInputAry.length; i++) {
  var db = dbInputAry[i];
  dbList += "&" + src + "=" + db;
 }
 return dbList;
}

function getMultiple(ob) { 
 var arSelected = new Array(); 
 for (var i = 0; i < ob.length; i++)
  if (ob[ i ].checked) arSelected.push(ob[ i ].value);
 return arSelected;
}

function highlight(id, currentClass, checkboxId) {
 var checkbox_element = findObj(checkboxId);
 var row_element = findObj(id);
 row_element.className = checkbox_element.checked ? 'selected' : currentClass;
 if(checkbox_element.checked==false) findObj('cball').checked=false;
}

function SelectAllCheckBoxes(form) {
 var state = form.cball.checked;
 for(i = 0; i < form.cbs.length; i++) {
  form.cbs[i].checked = state;
  highlight('tr'+[i+1], (i % 2) ? 'two' : 'one', 'cb'+[i+1])
 }
}

function findObj(n, d) {
 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
 d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
 if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function chkObject(f,d) {
 if (findObj(f) != null) return findObj(f).value;
 else return d;
}