Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};

if (typeof dissSelected == 'undefined') {
  dissSelected = [];
}
var available_results = new Array();
var supp_filename ;

function clickDissertation() {
 if (this.checked) {
   dissSelected.push(this.value);
 } else {
   for(x=0;x<dissSelected.length;x++) {
     if (this.value == dissSelected[x]) {
       dissSelected.remove(x);
     }
   }
 }
}

var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May',
    'June', 'July', 'August', 'September', 'October', 'November',
    'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug',
    'Sep', 'Oct', 'Nov', 'Dec');
var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday',
    'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu',
    'Fri', 'Sat');
function LZ(x) {
  return (x < 0 || x > 9 ? "" : "0") + x
}
var currentPage = 1;
//var search = getSearch();

jQuery.fn.fillYears = function(startYear, endYear, options) {
  return $.each(this, function(startYear, endYear, options) {

    var opts = $.extend(jQuery.fn.fillYears.options, options, {
      startYear :startYear ? startYear - 1 : undefined,
      endYear :endYear
    });

    return function() {
      var years = "";
      for ( var year = opts.endYear; year > opts.startYear; year--) {
        years += "<option value=" + year + ">" + year + "</option>";
      }
      $(this).html(years);
    }
  }(startYear, endYear, options))
}

jQuery.fn.fillYears.options = {
  startYear :1975,
  endYear :(new Date()).getFullYear()
}

function formatDate(date, format) {
  format = format + "";
  var result = "";
  var i_format = 0;
  var c = "";
  var token = "";
  var y = date.getYear() + "";
  var M = date.getMonth() + 1;
  var d = date.getDate();
  var E = date.getDay();
  var H = date.getHours();
  var m = date.getMinutes();
  var s = date.getSeconds();
  var yyyy, yy, MMM, MM, dd, hh, h, mm, ss, ampm, HH, H, KK, K, kk, k;
  // Convert real date parts into formatted versions
  var value = new Object();
  if (y.length < 4) {
    y = "" + (y - 0 + 1900);
  }
  value["y"] = "" + y;
  value["yyyy"] = y;
  value["yy"] = y.substring(2, 4);
  value["M"] = M;
  value["MM"] = LZ(M);
  value["MMM"] = MONTH_NAMES[M - 1];
  value["NNN"] = MONTH_NAMES[M + 11];
  value["d"] = d;
  value["dd"] = LZ(d);
  value["E"] = DAY_NAMES[E + 7];
  value["EE"] = DAY_NAMES[E];
  value["H"] = H;
  value["HH"] = LZ(H);
  if (H == 0) {
    value["h"] = 12;
  } else if (H > 12) {
    value["h"] = H - 12;
  } else {
    value["h"] = H;
  }
  value["hh"] = LZ(value["h"]);
  if (H > 11) {
    value["K"] = H - 12;
  } else {
    value["K"] = H;
  }
  value["k"] = H + 1;
  value["KK"] = LZ(value["K"]);
  value["kk"] = LZ(value["k"]);
  if (H > 11) {
    value["a"] = "PM";
  } else {
    value["a"] = "AM";
  }
  value["m"] = m;
  value["mm"] = LZ(m);
  value["s"] = s;
  value["ss"] = LZ(s);
  while (i_format < format.length) {
    c = format.charAt(i_format);
    token = "";
    while ((format.charAt(i_format) == c) && (i_format < format.length)) {
      token += format.charAt(i_format++);
    }
    if (value[token] != null) {
      result = result + value[token];
    } else {
      result = result + token;
    }
  }
  return result;
}

function popUp(nameOfpage) {
  var newwin = window
      .open(nameOfpage, "cart_window",
          "toolbar=no,menubar=no,scrollbars=yes,status=1,width=665,height=600,resizable=1");
  if (newwin != null && newwin.opener == null) {
    newwin.opener = self;
  }
}
function addToShoppingCart() {
  if (dissSelected.length == 0) {
    alert("No dissertations selected to add to cart!");
  } else {
    var d = "&d=" + $('#domestic_sel')[0].value;
    var a = "&a=" + ($('#academic_sel')[0].checked ? "1" : "2");
    var track = "&track=" + (username != "" ? "dxill" : "dxweb");
    defaultPay = "&pt=" + ($('#payment_type')[0].checked ? "1" : "3");
    popUp(host + '/dissertations/cart?add=' + dissSelected + '&dlnow=1' + track + a
        + d + defaultPay + '&u=' + escape(username));
  }
}

function getHeader() {
  return '<div class="header_row">'
      + '<div style="float: left; width: 50px; font-size: 12px; height: 1em; padding-bottom: 0.5em;" class="header_sel_col">  </div>'
      + '<div style="border-bottom: 2px solid rgb(236, 236, 236);" id="header_col">'
      + '<span style="font-size: 16px;" class="bold"> Citations</span></div>'
      + '</div>';
}

function createPages() {
  var page = 1;
  if (hitCount > 10) {
     $(".floatRight", this).html("Result Pages: <span class=\"pageSelector "+(currentPage == page?"currentPage":"")+"\" onclick='showPage(1)'>1</span>");
  }
  page++;
  while (hitCount > 10) {
    $(".floatRight", this).append("<span class=\"pageSelector "+(currentPage == page?"currentPage":"")+"\" onclick='showPage("+page+")'>"+page+"</span>");
     hitCount-=10;
     page++;
  }   
}

function displaySearch(){
	var search_key = getKeyword();
	search_key = unescape(search_key);
	search_key = search_key.replace(/"/g,"&#34;");
	var pubno = getPubno();
	var title = getTitle();
	var author = getAuthor();
	$('#search_display')[0].innerHTML =
	'<table>'
	+'<tbody><tr>'
	+'</tr><tr>'
	+'<td align="right"> <b>Search terms:</b></td>'
	+'<td><input type="text" id="keyword" name="pubno" size="36" value="'+search_key+'"/>'
	+' <a class="history button" href="#results">Search</a></td>'
	+'</tr>'
	+'<tr><td colspan="2">&nbsp;</td></tr>'
	+'<tr>'
	+'<td align="right">More Options:</td>'
	+'<td> &nbsp;</td>'
	+'</tr>'
	+'<tr>'
	+'<td align="right"><b>Author:</b></td>'
	+'<td><input type="text" id="author" name="author" size="30" maxlength="100" value="'+author+'"/></td>'
	+'</tr>'
	+'<tr>'
	+'<td align="right"><b>Title:</b></td>'
	+'<td><input type="text" id="title" name="title" size="30" maxlength="200" value="'+title+'"/></td>'
	+'</tr>'
	+'<tr><td align="right"><b>UMI Publication Number:</b></td>'
	+'<td><input type="text" id="pubno" name="pubno" size="7" maxlength="7" value="'+pubno+'"/></td>'
	+'</tr>'
	+'<tr><td align="right">&nbsp;<br><br></td>'
	+'<td>'
	+'<a class="history button" href="#results">Search</a></td>'
	+'</td>'
	+'</tr>'
	+'</tbody></table>';
	
}




function getLinkData(){
	var backurl = getBackUrl();
	var searchurl = getSearchUrl();
	//searchurl = unescape(searchurl);
	

	return('<div style="float:right">'
	    + '<span style="font-size: 12px; font_weight: normal">'
	    +'<a href="'+backurl+'"style="text-decoration:none"><img src="/themes/default/img/view_shopping_cart.gif"/></a>'
	    +'&nbsp;&nbsp;'
	    +'<a  href="'+searchurl+'" onclick="reloadPage();">'
	    +'<img src="/themes/default/img/return_to_search.gif" border=0 alt="[return_to_search]"/></a>'
	    +'</div></span>');	
}
function reloadPage(){
	var w_loc = window.location.toString();
    if (w_loc.indexOf('#results') > 0) {
    	window.location = getSearchUrl();
    	window.location.reload(true);
     //tloc = tloc.substring(tloc.indexOf('#')+1);
     //  pageload(tloc);
    }
}
function downloadPdf(){
	var pubno = getDownloadPubno();
	$('#downloadPdf')[0].innerHTML =
		'<p> With Dissertation Express, you can read the full text of open access dissertations and theses free of charge.</br></br>'
        +'<iframe width="100%" height="1255px" src="http://pqdtopen.proquest.com/jsonMw?&act=download&pubno='+pubno+'&format=application/x-pageimage">'
        +'Sorry, your browser doesn\'t support iframes. </iframe>';
}

function downloadSuppUrl(data){
	$('#downloadSupp')[0].innerHTML =
		"<p> With Dissertation Express, you can download the supplemental files of open access dissertations and theses free of charge.</br></br>";
	var pubno = getDownloadPubno();
	var suppFileList =getSuppFileNameList(data);
	for ( var numSuppFiles = 0; numSuppFiles < suppFileList.length; numSuppFiles++){
		$('#downloadSupp')
        .append(
        "<a href='#download?&type=suppurl&dpubno="+pubno+"&resourceId="
        +(numSuppFiles+1)+"' onclick=\"window.open(this.href);return false;\"> "+suppFileList[numSuppFiles]+"</a></br>");
		
	}
}

function getSuppFileNames(data){
	  var loc1 = data.indexOf("<name>");
	  var loc2 = data.indexOf("</name>");
	  if(loc1 > 0 && loc2 > 0){
		  return( data.substring(loc1+6,loc2));
	  } else {
		  return "";	
	  }
}

function getSuppFileNameList(data){
	var loc1=0;
	var loc2=0;
	var result = new Array();
	var count = 0;
	while(loc1 >= 0){
	  loc1 = data.indexOf("<name>");
	  loc2 = data.indexOf("</name>");
	  if(loc1 > 0 && loc2 > 0 ){
		  result[count] = data.substring(loc1+6,loc2);	
		  data = data.substring(loc2+7);
	  }
	  count ++;
    }
    return result;
}


function displaySuppDetails(){
	var pubno = getDownloadPubno();
	var count=0;
	$
    .ajax( {
    	url :"/dxweb/retrieveSuppDetails?query=" + pubno,
    	success :downloadSuppUrl,
      error : function(obj, message) {
        $('#downloadSupp')[0].innerHTML = "There was an error getting the supplemental details. Please try again.";
        global_search = "";
      }
    });
}

function displaySuppUrls(){
	var pubno = getDownloadPubno();
	var resourceId = getResourceId();
	$
    .ajax( {
    	url :"/dxweb/retrieveSuppUrl?query=" +pubno+"&resourceId="+ resourceId,
    	success :displayEachSuppUrl,
      error : function(obj, message) {
        $('#downloadSupp')[0].innerHTML = "There was an error getting the supplemental urls. Please try again.";
        global_search = "";
      }
    });	
}

function displayEachSuppUrl(data){
$('#downloadSupp')[0].innerHTML = 
	'<iframe width="1255px" height="600px" src="'+data+'"> Sorry, your browser doesn\'t support iframes. </iframe>';
}

function displayResults(data) {
	var search = getSearch();
	if(!available_results[search+currentPage]){
		available_results[search+currentPage] = data;
	}
	results_data = data;
	var linkData = getLinkData();
	$('#show_links_top')[0].innerHTML = linkData;
	$('#show_links_bottom')[0].innerHTML = linkData;
	
	$('#results_container')[0].innerHTML = "<div id='results_table'>"
      + getHeader() + "</div>";
  
  data = eval("("+data+")");
  if (data.hitCount == 0) {
    $('#hit_count')[0].innerHTML = "Your search resulted in 0 hits.";
  } else if (data.hitCount < 40) {
    $('#hit_count')[0].innerHTML = "Your search resulted in " + data.hitCount
        + " hit" + ((data.hitCount > 1) ? "s" : "")
        + ", which are listed below.";
        
  } else {
    $('#hit_count')[0].innerHTML = "Your search hit the limit of 40 hits, which are listed below.";
  }
  hitCount = data.hitCount > 40 ? 40 : data.hitCount;
  $('.pagerContainer').each(createPages);
  $('.shopping_link').show();
  /*
  var hitCount = data.hitCount;
  var x = 1;
  if (hitCount > 10) {
    <span class="pageSelector currentPage"><a href="">1</a></span>
  }
  while (hitCount > 10) {
  }

<div class="pagerContainer">
 <div class="floatRight">
  Result Pages:
  <span class="pageSelector currentPage"><a href="">1</a></span>
  <span class="pageSelector"><a href="">2</a></span>
  <span class="pageSelector"><a href="">3</a></span>
  <span class="pageSelector"><a href="">4</a></span>
 </div>
</div>
*/

  resultsContainOpenPublication = false;
  $('#results_table').hide();
  $.each(data.results, displayResultItem_new);
  if (resultsContainOpenPublication) {
   $('#results_table').append('<div style="margin:2px;padding: 5px;border-bottom:solid 1px gold;font-weight: bold;font-size:110%"><img src="/images/dxopen.png"> indicates an open dissertation.</div>');
  }  
  $('#results_table').show();
}

var resultsContainOpenPublication = false;

function displayResultItem(i, item) {
  if (item.canpurchase == "true") {
    item.checkboxTemplate = "<input class='pub_chk' type='checkbox' value='"
        + item.pubno + "'>";
    item.msg = "";
  } else {
    item.checkboxTemplate = " &nbsp; ";
    item.msg = "<br />Not available for purchase at this time.";
  }
  if (item.open == 'true') {
    resultsContainOpenPublication = true;
  }
  t = $
      .template("<div class='result_row'>"
          + "<div class='select_col'> {checkboxTemplate} "+(item.open == 'true' ? "<img src='/images/dxopen.png'>" : "") + "</div>"
          + "<div class='result_col'>"
          +
          // "<div style=''>"+
          "<span class='bold'>{title}</span><br>by <span class='italic'>{author}</span>, <span class='bold'>{school}</span>, {year}, {pagecount} pages; AAT {pubno} {msg}"
          +
          // "</div>"+
          "</div>" + "</div>");

  $("#results_table").append(t, item);
}

function getBackUrl(){
/**
	if(search == null || search==""){
	 search = getSearch();
	} **/
	var search = getSearch();
	search = unescape(search);
	search = escape(search);
	var track = makeObjFromHashParm().track;
	if(track == null || track ==""){
		track="DxWeb";		
	}
	var back_url = istore_url+"/OA_HTML/pqdtibeCScpViewA.jsp?sitex=10020:22372:US&track="
	+track+"&rpath=";
	return(back_url+escape(dxweb_url+"?&query="+search+"&page="+currentPage));
}

function getSearchUrl(){
	var search = getSearch();
	search = unescape(search);
	search = escape(search);
	return(dxweb_url+"#search?&query="+search);
}

function displayResultItem_new(i, item) {

	var search = getSearch();
	search = unescape(search);
	search = escape(search);
	var track = makeObjFromHashParm().track;
	if(track == null || track ==""){
		track="DxWeb";		
	}
	var return_url = escape(dxweb_url+"?&query="+search+"&page="+currentPage);
	var start_count = (currentPage-1)*10;
	/**
	  if (item.canpurchase == "true") {
	    item.checkboxTemplate = "<input class='pub_chk' type='checkbox' value='"
	        + item.pubno + "'>";
	    item.msg = "";
	  } else {
	    item.checkboxTemplate = " &nbsp; ";
	    item.msg = "<br />Not available for purchase at this time.";
	  }
	  if (item.open == 'true') {
	    resultsContainOpenPublication = true;
	  } ***/
	  //if(i >= start_count && i < start_count+10){
	  t = $
	      .template(		    		 
	    	  //"<div class='select_col'>"+ (i+1) +" {checkboxTemplate} "
	    	  "<div class='select_col'>"+ (i+1+start_count) +" {checkboxTemplate} "		  
	          +"</div>"	          
	          + "<div class='result_col'>"
	          +"<span  class='bold' >{title}</span><br>by <span class='italic'>{author}</span>, <span class='bold'>{school}</span>, {year}, {pagecount} pages; AAT {pubno} {msg}"
	          + (item.supplemental == 'true' ? "<br>*Supplemental files are available" : "")
	          + "<div class='result_col'>" 	          
	          + "<a class='history button'  style='float:right' href='"+istore_url+"/OA_HTML/pqdtibeCCtpItmDspRte.jsp?item="+item.pubno+"&sitex=10020:22372:US&track="+track+"&rpath="+return_url+"'>Order a copy</a>" 
	          +(item.open == 'true' ? "<a class='history button' style='float:right' href='#download?&type=pdf&dpubno="+item.pubno+"' target=new>Download FullText/PDF</a>" : "")
	          +(item.supplemental == 'true' && item.open == 'true' ? "<a class='history button' style='float:right' href='#download?&type=supp&dpubno="+item.pubno+"' target=new>Download Supplemental Files</a>" : "")
              +"</div>"
	          +"</div>"
	          +"<div class='result_row'></div>");
	  $("#results_table").append(t, item);
	  //}
	}
function onAccountDataReceived(data) {
  $('#accountInfo').thtml("accountInfoTmpl", this.data);
}

function onUsageSummaryDataReceived(data) {
  $('#year').html($('#usageSummarySelector')[0].value);
  if (this.data.length > 0)
    $('#usageSummary').thtml("usageSummaryTmpl", this.data);
  else
    $('#usageSummary').html(
        "<tr><td colspan=3><h2>No data for this year.</h2></td></tr>");
}

function onUsageSearchDataReceived(data) {
  if (this.data != null) {
    $('#usageSearchResultsTotal').html(
        "<h2>" + this.data.totalCount + " records found. ("
            + this.data.records.length + " shown)</h2>");
    if (this.data.records.length == 0) {
      $('#usageSearchResultsTable').hide();


      return;
    }
    $('#usageSearchResultsTable').show();
    $('#usageSearchResults').thtml("usageSearchTmpl", this.data.records);
    setupClickableLinks('#usageSearchResults');

  }
}

function setupClickableLinks(context) {
  $("a.history", context).each( function() {
    // hey, have we already done this?
      if (this.href == "javascript:void(0)") {
        return;
      }
      this.url = this.href;
      this.href = "javascript:void(0)";
      $(this).click( function() {
        if (this.url.substring(0, 4) == "http")
          this.url = this.url.substring(this.url.indexOf("#") + 1);
        $.historyLoad(this.url);
      });
    });
}

function performUsageSearch() {
  $('#usageSearchDataSource').setDatasourceUrl(
      '/ap/?ta=be&act=getOrdersByCustomerName&limit=1000&sort=entry_date&year='
          + $('#usageSearchSelector').val()
          + '&dir=DESC&callback=?&un=' + username
          + '&__customer_name%25=%25' + escape($('#tfUsageSearch')[0].value) + '%25' 
          + '&__patron_name%25=%25' + escape($('#tfUsageSearch').val()) + '%25', {
        busySelector :"#busyUsageSearch"
      });
  $('#usageSearchDataSource').refresh();
  return false;
}

function updateUsageSummary() {
  $('#usageSummaryDataSource').setDatasourceUrl(
      "/ap/?ta=be&act=getOrderSummary&callback=?&un=" + username
          + "&year=" + $('#usageSummarySelector').val(), {
        busySelector :"#busyUsageSummary"
      });
  $('#usageSummaryDataSource').refresh();
}

function login() {
  $.ajax( {
    url :"/ap/?ta=be&act=getAuth&callback=?&un=" + $('#username')[0].value
        + "&pw=" + $('#pw')[0].value,
    success :processLoginResults(data),
    error : function(obj, message) {
      $("#login_error").text("Error performing login.");
    }
  });
}

function processLoginResults(data) {
  data = eval(data);
  if (data == null) {
    $("#login_error").text("Username not valid.");
  } else {
    username = data.login_name;
    window.location = "#menu";
  }
}

/*
 * PageLoad function This function is called when: 1. after calling
 * $.historyInit(); 2. after calling $.historyLoad(); 3. after pushing "Go Back"
 * button of a browser
 *
 * The parameter "hash" does not contain the first # character.
 */

var oldhash = null;
function pageload(hash) {
  if (hash.substring(0, 4) == "http") {
      if (hash.indexOf('#') != -1) {
       hash = hash.substring(hash.indexOf('#')+1);
       } else {
       hash = "";
       }
  }

  if (hash == oldhash)
    return;
  oldhash = hash;
  // When restoring ajax loaded state, we make this a blank slate
  // TODO: use a css selector to call each div instead of being explicit
  $('#order_method').hide();
  $('#landing').hide();
  $('#login').hide();
  $('#search').hide();
  $('#results').hide();
  $('#about_cookies').hide();
  $('#menu').hide();
  $('#usage_menu').hide();
  $('#usage_summary').hide();
  $('#usage_download').hide();
  $('#usage_detail').hide();
  $('#usage_search').hide();
  $('#account').hide();
  hashSplit = hash.split("?");
  hash = hashSplit[0];
  parm = hashSplit[1];

  if ((!hash) || (hash == '')){
    if (dxILLinURL()){
      hash = "menu";
    }
    else {
   
      var search = getSearch();  
      if(search != null && search !=""){
    	  $('#results_container')[0].innerHTML = "<div id='results_table'> <img src='/themes/default/img/srchanim.gif' style='margin:auto auto'> ... Your search results are loading ... "+search+"</div>";
    	  hash= "results";
      }
      else{
        //hash = "landing";
    	hash = "search";
      }
    }
  }
  if (hash == "results") {
	var search = getSearch(); 
	if(search != null && search !=""){
		currentPage = 1;
		var page = makeObjFromHashParm().page;
		if(page !=null){
			currentPage = page;
		} 
	    dissSelected = [];
	    $('.pagerContainer div').html("");
	    doSearch();
	} else{		
		window.location ="/dxweb"
	}
  }

  if (hash == "search" ) {	 
	 displaySearch();
	 //window.location ="/dxweb#search" 
	 // window.location ="/dxweb#search"
     //$(document).unbind('keydown', 'return');
     //$(document).bind('keydown', 'return', doSearchAndShowPage);
     //isbound = true;
  }
  
  if(hash== "download"){
	  var type = getDownloadType();
	  if(type =="pdf")
	      downloadPdf();
	  else if(type=="supp"){
		  displaySuppDetails();
	  }	 
	  else if(type=="suppurl"){
		  displaySuppUrls();
	  } 
	  //$('#download').refresh();
  }
  if (hash == "account") {
    // set up the data source.
    $('#accountDataSource').refresh();
  }

  if (hash == "usage_summary") {
    $('#usageSummaryDataSource').setDatasourceUrl(
        "/ap/?ta=be&act=getOrderSummary&callback=?&un=" + username
            + "&year=" + $('#usageSummarySelector').val(), {
          busySelector :"#busyUsageSummary"
        });
    $('#usageSummaryDataSource').refresh();
  }

  if (hash == "usage_search") {
    // $(document).unbind('keydown', 'return');
    // $(document).bind('keydown', 'return', performUsageSearch);
    $('#tfUsageSearch').val('');
    $('#usageSearchDataSource').setDatasourceUrl(
        '/ap/?ta=be&act=getOrdersByCustomerName&sort=order_id&dir=DESC&limit=1000&year='
            + $('#usageSearchSelector').val() + '&callback=?&un='
            + username, {
          busySelector :"#busyUsageSearch"
        });
    $('#usageSearchDataSource').refresh();
  }

  if (hash == "usage_detail") {
    // $('#usageDetailSource').url
    // $('#usageDetailSource').refresh();
    showDetail(parm);
  }
 

  $('#' + hash).show();
  window.scroll(0,0);
}

function makeObjFromHashParm(parm) {
  if (!parm) {
    // parm = window.location.hash.split("?")[1];
    loc = window.location.toString();
    parm = loc.substring(loc.indexOf('?') + 1);
  }
  if (!parm)
    return {};
  parms = parm.split("&");
  var obj = {};
  for ( var x = 0; x < parms.length; x++) {
    fieldVal = parms[x].split('=');
    obj[fieldVal[0]] = fieldVal[1];
  }
  return obj;
}

function showDetail(parm) {
  parm = makeObjFromHashParm(parm);

  var data;
  if (!parm.id)
    data = null;
  else {
    id = $('#usageSearchDataSource')[0].data.records[parm.id].order_id;
    $('#usageDetails')
        .html(
            "<h3>Retrieving details... <img src='/themes/default/img/srchanim.gif'></h3>");
    $.ajax( {
      url :"/ap/?ta=be&act=getDetailedOrderListByName&un=" + username
          + "&__pqdd_order.order_id=" + id,
      success : function(data) {
        data = eval("(" + data + ")");
        if (data != null) {
          $('#usageDetails').thtml('detailOrderReportTmpl',
              data.records[0]);
          $('#orderItemDetail').tappend('orderItemDetailTmpl',
              data.records)
          setupClickableLinks();
        }

      }
    });
  }
}

function doSearchAndShowPage() {
  if ($.browser.msie) {
    $('#search').hide();

    currentPage = 1;
    dissSelected = [];
    $('.pagerContainer div').html("");
    doSearch();
    oldhash = "results";
    $('#results').show();
    window.scroll(0,0);

  } else
    window.location = "#results";
}

function showPage(page) {
  currentPage = page;
  $('.shopping_link').hide();
  $('.pagerContainer div').html("");
  doSearch();
}

function doSearch() {

  var search = getSearch();
  search = unescape(search);
  if(newSearch() == true){  
      showSearch_new();
  } else{
	  showSearch()
  }
    var available_search = available_results[search+currentPage];
    if(available_search != null){
    	displayResults(available_search);
    } else{
    $
        .ajax( {
          url :"/dxweb/performSearch?query=" + search + "&l=10&s="+(currentPage-1)*10,
            //	url :"/dxweb/performSearch?query=" + search + "&l=40&s=0",
          success :displayResults,
          error : function(obj, message) {
            $('#results_container')[0].innerHTML = "<div id='results_table'>There was an error performing your search. Please try again.</div>";
            global_search = "";
          }
        });
    }
  return false;
}


function buildSearch(searchParms) {
  var search = "";
  if (searchParms.keyword)
    search = search + (search != "" ? " AND " : "") + searchParms.keyword;
  if (searchParms.query)
	    search = search + (search != "" ? " AND " : "") + searchParms.query;
  if (searchParms.pubno)
    search = search + (search != "" ? " AND " : "") + "DISPUB("
        + searchParms.pubno + ")";
  if (searchParms.author)
    search = search + (search != "" ? " AND " : "") + "AU("
        + searchParms.author + ")";
  if (searchParms.title)
    search = search + (search != "" ? " AND " : "") + "TI("
        + searchParms.title + ")";
  return search;
}


function getSearch() {
  var searchParms = makeObjFromHashParm();
  if (searchParms.keyword || searchParms.pubno || searchParms.author
      || searchParms.title)
    return buildSearch(searchParms);
  else if ($('#keyword').val() != "" ||
		  $('#pubno').val() != "" ||
		  $('#author').val() != "" ||
		  $('#titl').val() != ""){
    if ($('#keyword').val() != "")
      searchParms.keyword = $('#keyword').val();
    if ($('#pubno').val() != "")
      searchParms.pubno = $('#pubno').val();
    if ($('#author').val() != "")
      searchParms.author = $('#author').val();
    if ($('#title').val() != "")
      searchParms.title = $('#title').val();
    searchParms.l = 10;
    searchParms.s = 10 * currentPage;
    return buildSearch(searchParms);
  }
  else if(searchParms.query){
		return buildSearch(searchParms);	
  }
  return "";
}

function getAuthor() {
	  var searchParms = makeObjFromHashParm();
	  var author ="";
	  var query = searchParms.query;
	  if (query){
		  query = unescape(query);
		  var start = query.indexOf("AU(");
		  if(start >= 0){
		    var new_string = query.substring(start+3);		  
		    var end =new_string.indexOf(")");
		    author=new_string.substring(0,end);
		  }
	  }
	  return author;
	}
function getPubno() {
	  var searchParms = makeObjFromHashParm();
	  var pubno ="";
	  var query = searchParms.query;
	  if (query){
		  query = unescape(query);
		  var start = query.indexOf("DISPUB(");
		  if(start >= 0){
		     var new_string = query.substring(start+7);
		     var end =new_string.indexOf(")");
		     pubno=new_string.substring(0,end);
		  }
	  }
	  return pubno;
	}

function getDownloadPubno() {
	  var searchParms = makeObjFromHashParm();
	  var pubno ="";
	  if(searchParms.dpubno){
		  return searchParms.dpubno;
	  }
	  return pubno;
	}

function getResourceId() {
	  var searchParms = makeObjFromHashParm();
	  var result ="";
	  if(searchParms.resourceId){
		  return searchParms.resourceId;
	  }
	  return result;
	}
function getDownloadType() {
	  var searchParms = makeObjFromHashParm();
	  var type ="";
	  if(searchParms.type){
		  return searchParms.type;
	  }
	  return type;
	}

function getTitle() {
	  var searchParms = makeObjFromHashParm();
	  var title ="";
	  var query = searchParms.query;
	  if (query){
		  query = unescape(query);
		  var start = query.indexOf("TI(");
		  if(start >= 0){
		     var new_string = query.substring(start+3);
		     var end =new_string.indexOf(")");
		     title=new_string.substring(0,end);
	      }
	  }
	  return title;
	}

function getKeyword() {
	  var searchParms = makeObjFromHashParm();
	  var query = searchParms.query;	  
	  var start = -1;
	  var start_1 =-1;
	  var start_2 =-1;
	  var start_3=-1;
	  
	  if (query){
		  query = unescape(query);
		  var filtered_query = "";
		  var start = query.indexOf(" AND ");
		  if(start > 0 ){
			  filtered_query =  query.substring(0,start);
		  } else{
			  filtered_query = query;
		  }
		  start_1 = filtered_query.indexOf("DISPUB(");
		  start_2 = filtered_query.indexOf("TI(");
		  start_3 = filtered_query.indexOf("AU(");
		  if(start_1 >= 0 || start_2 >= 0 || start_3 >= 0){
			  /**
			      var pos = min(start_1,start_2,start_3)
			      if(pos >0){
				     return filtered_query.substring(0,pos);
			      } **/
			  return "";
		  }else {
				  return filtered_query;	
		  }
	  }else {
		  return "";
	  }
	}


function min(a, b, c){
	var min = a;
	if(b < a){
		min = b;
	} 
	if(c < min){
		min = c;		
	}
	if(min > 0){
		return min
	}
	return 0;
}
function showSearch() {

  var search = getSearch();
  $('#results_container')[0].innerHTML = "<div id='results_table'> <img src='/themes/default/img/srchanim.gif' style='margin:auto auto'> ... Your search results are loading ... </div>";
  $('#hit_count')[0].innerHTML = "Searching...";
  // everyTime(interval : Integer | String, [label = interval : String], fn :
  // Function, [times = 0 : Integer], [belay = false : Boolean])
  $('#search_params')[0].innerHTML = "Search Performed:";
  if ($('#keyword').val() != '')
    $('#search_params')
        .append(
            '<table><tr><td align=right>&nbsp;</td><td>' + $('#keyword')[0].value + '</td></tr></table>');    
  if ($('#pubno').val() != '')
    $('#search_params')
        .append(
            '<table><tr><td align=right><b>Order Number:</b></td><td>' + $('#pubno')[0].value + '</td></tr></table>');
  if ($('#author').val() != '')
    $('#search_params')
        .append(
            '<table><tr><td align=right><b>Author:</b></td><td>' + $('#author')[0].value + '</td></tr></table>');
  if ($('#title').val() != '')
    $('#search_params')
        .append(
            '<table><tr><td align=right><b>Title:</b></td><td>' + $('#title')[0].value + '</td></tr></table>');
}

function newSearch(){
	if(getKeyword() || getPubno() || getAuthor() || getTitle() ){
		return true;
	} else {
		return false;
	}
}
function showSearch_new() {
	  var searchParms = makeObjFromHashParm();
	  $('#results_container')[0].innerHTML = "<div id='results_table'> <img src='/themes/default/img/srchanim.gif' style='margin:auto auto'> ... Your search results are loading ... </div>";
	  $('#hit_count')[0].innerHTML = "Searching...";
	  // everyTime(interval : Integer | String, [label = interval : String], fn :
	  // Function, [times = 0 : Integer], [belay = false : Boolean])
	  $('#search_params')[0].innerHTML = "Search Performed:";
	  if(getKeyword()){		  
		  var search_key = unescape(getKeyword());
		    $('#search_params')
		        .append(
		        		'<table><tr><td align=right>&nbsp;</td><td>'+search_key+'</td></tr></table>');
	  }
	  

	  if (getPubno())
	    $('#search_params')
	        .append(
	            '<table><tr><td align=right><b>Order Number:</b></td><td>' + getPubno() + '</td></tr></table>');
	  
	  if(getAuthor())
	    $('#search_params')
	        .append(
	            '<table><tr><td align=right><b>Author:</b></td><td>' + getAuthor() + '</td></tr></table>');
	  if(getTitle())
		    $('#search_params')
		        .append(
		            '<table><tr><td align=right><b>Title:</b></td><td>' + getTitle() + '</td></tr></table>');
	  
	}

function historyClick() {

  var hash = this.href;
  hash = hash.replace(/^.*#/, '');
  // moves to a new page.
  // pageload is called at once.
  $.historyLoad(hash);

  return false;
}
function downloadCsv() {
  window.location = "/ap/?ta=csv&act=getOrderListByNameReport&sort=pqdd_order.order_id&dir=DESC&un="
      + username + "&limit=1000&year=" + $("#csvYear").val();
}

function dxILLinURL() {
  // we consider dxweb/login to be dxill
  return (window.location.pathname.toString().match(/\/dxweb\/login/) || (window.location.pathname
      .toString().match(/\/dxill/) && (!username || (username == ''))));
}

function dxWebInURL() {
  return ((!window.location.pathname.toString().match(/\/dxweb\/login/)) && (window.location.pathname
      .toString().match(/^\/dxweb/)));

}

var global_search;
$(document)
    .ready( function() {
      if (dxILLinURL()) {
        //window.location = "/dxill/login";
    	var dll_url = escape(dxweb_url+"?&track=DxILL");
        window.location = istore_url+"/OA_HTML/pqdtibeCAcdLogin.jsp?sitex=10020:22372:US&ref="+dll_url;
        return;
      }

      // if logged into dxill, but pointed at dxWeb, redirect to dxill
      /**
        if (dxWebInURL()) {        	
          if (username) {        	  
            window.location = "/dxill#menu";
            return;
          } 
        }
       ***/
        $('#accountDataSource').setDatasourceUrl(
            "/ap/?&ta=be&act=getAccountInfo&un=" + username
                + "&callback=?");
        $('#accountDataSource').bind("onDataReceived",
            onAccountDataReceived); // creates a datareceived event
        // for the data object.

        $('#usageSummaryDataSource').setDatasourceUrl(
            "/ap/?ta=be&act=getOrderSummary&callback=?&un="
                + username + "&year="
                + $('#usageSummarySelector').val(), {
              busySelector :"#busyUsageSummary"
            });
        $('#usageSummaryDataSource').bind("onDataReceived",
            onUsageSummaryDataReceived); // creates a
        // datareceived event
        // for the data object.

        $('#usageSearchDataSource')
            .setDatasourceUrl(
                '/ap/?ta=be&act=getOrderListByName&sort=order_id&dir=DESC&limit=100&callback=?&un=' + username,
                {
                  busySelector :"#busyUsageSearch"
                });
        $('#usageSearchDataSource').bind("onDataReceived",
            onUsageSearchDataReceived); // creates a datareceived
        // event for the data
        // object.

        // Initialize history plugin.
        // The callback is called at once by present location.hash.
        $('#usageSummarySelector, #usageSearchSelector, #csvYear')
            .fillYears()
        $.historyInit(pageload);


        var tloc = window.location.toString();
          if (tloc.indexOf('#')) {
           tloc = tloc.substring(tloc.indexOf('#')+1);
             pageload(tloc);
          }

        setupClickableLinks();

        $(".return_to_search").click(historyClick);

        $(".return_to_search").click(function() {
            $('#results').hide();
            $('#search').show();
        });
/*
        $(".search").click(function() {
            doSearch();
            $('#search').hide();
            $('#results').show();

        });
*/

        $('.select_col input').live('click', clickDissertation);

        $("#downloadUsageCsv").click(downloadCsv);
        $("#tfUsageSearch").kbind("return", performUsageSearch);
        $("#keyword,#author,#title,#pubno").kbind("return",
            doSearchAndShowPage);
        //$('.shopping_link').attr('href', getBackUrl());
        //$('.shopping_link').attr('href', "javascript:void(0)");
        //$('.shopping_link').click(addToShoppingCart);

      });




