/*
   name - name of the cookie
   value - value of the cookie
   [expires] - expiration date of the cookie
     (defaults to end of current session)
   [path] - path for which the cookie is valid
     (defaults to path of calling document)
   [domain] - domain for which the cookie is valid
     (defaults to domain of calling document)
   [secure] - Boolean value indicating if the cookie transmission requires
     a secure transmission
   * an argument defaults when it is assigned null as a placeholder
   * a null placeholder is not required for trailing omitted arguments
*/

function setCookie(name, value, expires, path, domain, secure) {
   var cval = getCookie (name);
   if (cval != null) {
      document.cookie = name + "=" + value;
   }
   else {
     var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
     document.cookie = curCookie;
   }     
}


/* check to see if the location is the a-z default or citation-linker, if neither, set cookie
*/
function setsfxlinkcookie() {
   var inLocation = unescape(window.location);
   if ((inLocation.indexOf('a-z/default') == -1) && (inLocation.indexOf('cgi/core/citation-linker.cgi') == -1)) {
      setCookie('sfxlink', inLocation);
   }      
}

function queryString(inUE_URL, s)
/* returns search string value from URL.  Pass in field and returns value
   for example: http://xyz.com/test.htm?a=alpha&b=beta
   QueryString(unescapedURL, 'a') returns 'alpha'
*/   
{
  var searchString = "&" + unescape(inUE_URL).slice(1) + "&";
  var searchValueStart =  searchString.indexOf(s + "=");
  
  if (searchValueStart == -1) {return '';}

  searchValueStart += s.length + 1; // was set to 2, but it's missing the first digit  
  return searchString.slice(searchValueStart, searchString.indexOf("&", searchValueStart));
}


/*
  name - name of the desired cookie
  return string containing value of specified cookie or null
  if cookie does not exist
*/

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } 
  else {
    begin += 2;
  }    
  var end = document.cookie.indexOf(";", begin);
  if (end == -1) {
    end = dc.length;
  }    
  return unescape(dc.substring(begin + prefix.length, end));
}

function cookielink(defaultLocation) {
   var theCookieLink = getCookie('sfxlink');
   if ((theCookieLink != null) && (theCookieLink != '')) {
      window.location = theCookieLink;
   }      
   else {
      setsfxlinkcookie();
      theCookieLink = getCookie('sfxlink')
      if (theCookieLink != null) {
         window.location = theCookieLink
      }
      else {
         window.location = defaultLocation;
      }         
   }
}   
