//****************************************************************
// Purpose: Trim off SPACES (not any other whitespace chars) at the beginning and end of sToTrim
// Inputs:  sToTrim: String to trim
// Returns: Trimmed COPY of sToTrim (input string)
//****************************************************************
function TrimStr(sToTrim)
{
    var s = new String(sToTrim);
    while (s.substring(0,1) == " ") s=s.substring(1);
    while (s.length > 0 && s.substring(s.length-1,s.length) == " ") s=s.substring(0,s.length-1);
    return s;
}
function clearCookies(){
	var argv = clearCookies.arguments;    
	var argc = clearCookies.arguments.length;
	if(argc > 0){    
		for(var i=0;i<argc;i++){
			var sName = argv[i];
			DeleteCookie(sName);
		}
	}else{//delete all cookies
		var aCookie = document.cookie.split('; ');
		//alert(aCookie.join('\n'));//return;
		for (var i=0; i < aCookie.length; i++){
			// a name/value pair (a crumb) is separated by an equal sign
			var aCrumb = aCookie[i].split('=');
			//alert(TrimStr(unescape(aCrumb[0])));
			if(aCrumb[0] != "ASP.NET_SessionId"){
				DeleteCookie(TrimStr(aCrumb[0]));
			}
		}
	}
	/*
	aCookie = document.cookie.split('; ');
	if(msg){
		msg.innerHTML = aCookie.join('<br>')
	}
	//alert(aCookie.join('\n'));
	*/
}
// "Internal" function to return the decoded value of a cookie   
//   
function getCookieVal (offset) {
 var endstr = document.cookie.indexOf (";", offset); 
  if (endstr == -1)       
   endstr = document.cookie.length;    
  return unescape(document.cookie.substring(offset, endstr));
  //return document.cookie.substring(offset, endstr);   
}    
// "Internal" function to return the path of a cookie   
//   
function getCookiePath (offset) {
 offset = document.cookie.indexOf ("path=", offset); 
 if (offset == -1)       
   offset = document.cookie.length; 
 var endstr = document.cookie.indexOf (";", offset); 
  if (endstr == -1)       
   endstr = document.cookie.length; 
 if(offset==endstr){
	return null;
 }   
  //return unescape(document.cookie.substring(offset, endstr));
  return document.cookie.substring(offset, endstr);   
}    
//  Function to return the value of the cookie specified by "name".    
//  name - String object containing the cookie name. 
//  returns - String object containing the cookie value, or null if  
//  the cookie does not exist.  
//   
function GetCookie (name) {     
 var arg = name + "=";     
 var alen = arg.length;   
 var clen = document.cookie.length;    
 var i = 0;     
 while (i < clen) {      
  var j = i + alen;      
  if (document.cookie.substring(i, j) == arg)         
   return getCookieVal (j);       
  i = document.cookie.indexOf(" ", i) + 1;    
  if (i == 0) break; 
 }    
 return null; 
}   
//  Function to return the path of the cookie specified by "name".    
//  name - String object containing the cookie name. 
//  returns - String object containing the cookie path, or null if  
//  the cookie does not exist.  
//   
function GetCookiePath (name) {     
 var arg = name + "=";     
 var alen = arg.length;   
 var clen = document.cookie.length;    
 var i = 0;     
 while (i < clen) {      
  var j = i + alen;      
  if (document.cookie.substring(i, j) == arg)         
   return getCookiePath (j);       
  i = document.cookie.indexOf(" ", i) + 1;    
  if (i == 0) break; 
 }    
 return null; 
}   
//  Function to delete a cookie. (Sets expiration date to current date/time)    
//    name - String object containing the cookie name 
// 
function DeleteCookie (name) {      
	var exp = new Date();  
	exp.setTime (exp.getTime() - 1); 
    // This cookie is history     
    var cval = GetCookie (name);  
    //document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString()+"; path="+APP_DIR;
    //document.cookie = name + "=" + escape(cval) + "; expires=" + exp.toGMTString()+"; path="+APP_DIR;
    document.cookie = name + "=" + escape(cval) + "; expires=" + exp.toGMTString()+"; path=/";
}
//  Function to create or update a cookie.    
//  name - String object object containing the cookie name.
//    value - String object containing the cookie value.  May contain
//      any valid string characters.    
//    [expires] - Date object containing the expiration data of the cookie.  If 
//      omitted or null, expires the cookie at the end of the current session.   
//    [path] - String object indicating the path for which the cookie is valid.  
//      If omitted or null, uses the path of the calling document.   
//   [domain] - String object indicating the domain for which the cookie is  
//      valid.  If omitted or null, uses the domain of the calling document.   
//    [secure] - Boolean (true/false) value indicating whether cookie transmission  
//      requires a secure channel (HTTPS).      
//    
//  The first two parameters are required.  The others, if supplied, must 
//  be passed in the order listed above.  To omit an unused optional field,  
//  use null as a place holder.  For example, to call SetCookie using name,   
//  value and path, you would code: 
//  
//    SetCookie ("myCookieName", "myCookieValue", null, "/");   
//   
//  Note that trailing omitted parameters do not require a placeholder. 
//   
//  To set a secure cookie for path "/myPath", that expires after the 
//  current session, you might code: 
//  
//    SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true);   
// 
function SetCookie (name, value) {  
  var argv = SetCookie.arguments;    
  var argc = SetCookie.arguments.length;    
  var expires = (argc > 2) ? argv[2] : null;   
  var path = (argc > 3) ? argv[3] : null;   
  var domain = (argc > 4) ? argv[4] : null;  
  var secure = (argc > 5) ? argv[5] : false; 
  document.cookie = name + "=" + escape (value)
     + ((expires == null) ? "" : ("; expires=" + expires.toGMTString()))
     + ((path == null) ? "" : ("; path=" + path)) 
     + ((domain == null) ? "" : ("; domain=" + domain))
     + ((secure == true) ? "; secure" : ""); 
}   

var newwindow;
function popup(url)
{
	newwindow=window.open(url,'name','height=200,width=400');
	if (window.focus) {newwindow.focus()}
}
function ShowTimeoutWarning ()
{
    window.alert( "You will be automatically logged out in five minutes!  Please save you vote. This will also reset your login!" );
}
