   var req  = false;
   var currentlogin = '';
   var CurrentReferrer = '';
   function makePOSTRequest(url, parameters) {
	req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest && !(window.ActiveXObject)) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	if(req) {
		req.onreadystatechange = alertContents;
		req.open("POST", url, true);
      		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      		//req.setRequestHeader("Content-length", parameters.length);
      		//req.setRequestHeader("Connection", "close");
      		req.send(parameters);
	}
}



      
   function alertContents() {
      if (req.readyState == 4) {
	currentlogin = '';
         if (req.status == 200) {
            result = req.responseText;
	    var lines = result.split("\n");
	    var attempts;
	    var session;
	    var user;
	    var success = 0;
	    var resume = "";
	    for (linen in lines) {
		var line = lines[linen];
		if (typeof(line) != 'string') {
			continue;
		}	
		if (line.indexOf("Success") ==0) {
			//window.alert("success");
			success =1;
		}
		else if (line.indexOf("Error:") ==0) {
			//window.alert(line);
			window.alert("Error: login incorrect.");
		}
		else if (line.indexOf("Attempts:") == 0) {
			//window.alert("attempts");
			attempts = line.substr(9);
		}
		else if (line.indexOf("SessionId:") == 0) {
			//window.alert("session");
			session = line.substr(11);
		}
		else if (line.indexOf("UserId:") == 0) {
			//window.alert("user");
			user = line.substr(8);
		}
		else if (line.indexOf("wdk_check_auth:") == 0) {
			wdk=line.substr(16);
		}
		else if (line.indexOf("resume:") == 0) {
			resume = line.substr(8);
		}
	    }
	    if (success == 1) {
		if (user != 'WORLD') {
		   setCookies(user,session,attempts);
		   createCookie('wdk_check_auth',wdk,0);
		// Page is refreshed after login, so no need to update display
	/*
		   setLoginClass("hidelogin");
		   var userdisplay = document.getElementById('userdisplay');
		   var userdisplayname = getFullUserName(user);
		   userdisplay.innerHTML = userdisplayname;
	*/
		   var qstring = window.location.search;
		   // query string takes precedence
		   var rindex = qstring.indexOf("?resume=");
		   if (rindex >=0) {
			resume = qstring.substring(rindex+8);
			var n = resume.indexOf("&");
			if (n>=0) {
				resume = resume.substring(0,n);
			}
		   }
		   if (resume != '') {
			resume = unescape(resume);
			var cred = "setSession="+document.getElementById("username").value+"&setId="+user;
			if (resume.indexOf('?') >=0) {
				resume += '&'+cred;
			}
			else {
				resume += '?'+cred;
			}
			document.location = resume;
		   }
		   else if ((CurrentReferrer != '')) { 
			document.location = CurrentReferrer;
		   }
		   // If there is no referrer and no resume, and
		   // the login is from homepage, redirect to repository
		   else {
			var lc = document.location.pathname;
			if ((lc == '/') || (lc == '/index.shtml')) {
				document.location="/cgi-bin/repository/repository.pl";
			}
			else {
				window.location.reload();
			}
		   }
		}
	    }
	    else {
		setCookies('','',attempts);
	    }
         } else {
            alert('There was a problem with the request.'+req.status);
         }
      }
   }
   
   function get(obj,type,ref) {
      if (currentlogin == '') {
	   currentlogin = 1;
           var poststr = "user=" + encodeURI( document.getElementById("username").value ) +
                    "&pass=" + encodeURI( document.getElementById("password").value ) +
		    "&type="+type +
		    "&jslogin=yes";
	   if ((ref)&&(ref != ""))  {
			poststr += "&referrer="+ref;
			CurrentReferrer = ref;
		}

		//var posturl = "/"+StanfordJavaContextRoot + "/tbdbLogin";
		var posturl = '/cgi-bin/login.pl/initialpost';
      		makePOSTRequest(posturl, poststr);
      }
      setTimeout(clearlogin, 300);
      return false;
   }

   function clearlogin() {
	currentlogin = '';
   }

   function logout() {
	gplogout();
	if (StanfordJavaContextRoot == 'tbdb') {
		invalidateUrl();
	}
	else if (StanfordJavaContextRoot == 'smd') {
		document.location.href="/gp/logout";
		return;
	}
	setLoginClass("showlogin");
	deleteCookies();
	//var logoutUrl = "/"+StanfordJavaContextRoot+"/tbdbLogin?logout=logout";
	//document.location.href = logoutUrl;
	//window.location.reload();
	//document.write('<iframe style="width:0px; height:0px; border: 0px" src="/gp/logout" ></iframe>');
	document.location.href="/";
   }

   function setLoginClass(newclass) {
	var login = document.getElementById("login");
	login.className = newclass;
  }

function addLoadEvent(func) { 
	  var oldonload = window.onload; 
	  if (typeof window.onload != 'function') { 
	    window.onload = func; 
	  } else { 
	    window.onload = function() { 
	      oldonload(); 
	      func(); 
	    } 
	  } 
	}  
	
function showlogin() {
	var lform = document.getElementById('login');
	lform.className="loggingin";
}

// check for logout
function checklogout() {
var qs = window.location.search;
if (qs&&qs.indexOf('?')==0) {
	qs = qs.substring(1);
	var params = qs.split('&');
	var resume = "";
	var logout = false;
	for (var param in params) {
		var kv = params[param].split('=');
		if (kv[0] == 'logout') {
			logout = true;
		}
		if (kv[0] == 'resume') {
			resume = unescape(kv[1]);
		}
	}
	
	if (logout) {
		deleteCookies();
		if ((resume == "")) {
			if ((document.referrer)&&(document.referrer != "")) {
				resume = document.referrer;
			}
			else {
				resume = "/";
			}
		}
		document.location.href=resume;
	}
   }
}

function createCookie(name,value,hours) {
	if (hours) {
		var date = new Date();
		date.setTime(date.getTime()+(hours*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; domain="+TBDBCOOKIEDOMAIN+"; path=/";
}
function setCookies(user, sessionid, attempts) {
	createCookie(TBDBCOOKIENAME+'_USERID',user,2);
	createCookie(TBDBCOOKIENAME+'_SID',sessionid,2);
	createCookie(TBDBCOOKIENAME+'_ATTEMPTS',attempts,2);
}

function deleteCookies() {
	createCookie(TBDBCOOKIENAME+'_USERID','',-1);
	createCookie(TBDBCOOKIENAME+'_SID','',-1);
	createCookie(TBDBCOOKIENAME+'_ATTEMPTS','',-1);
	createCookie('wdk_check_auth','',-1);
}
function getFullUserName(name) {
	if (name != 'WORLD') {
		name = name+'';
	}
	return name;
}

	function invalidateUrl() {
		var ifr = document.createElement('iframe');
		ifr.setAttribute("style",'width:0px; height: 0px; border: 0px');
		ifr.setAttribute("src",TBDBINVALIDATEURL);
		//ifr.setAttribute("onload","window.location.href='/'");
		//ifr.setAttribute("onload","window.alert('done');");
		var insertdiv  = document.getElementById('wrapper');
		insertdiv.appendChild(ifr);
	}
		
	function gplogout() {
		var ifr = document.createElement('iframe');
		ifr.setAttribute("style",'width:0px; height: 0px; border: 0px');
		ifr.setAttribute("src","/gp/logout");
		var insertdiv  = document.getElementById('wrapper');
		insertdiv.appendChild(ifr);
	}
		

window.onload=checklogout;

