function resetCookies()
{
  // threshhold value ( 1 is always, 0 is never )
  var THRESHHOLD = 1.000 ;
  var DOMAIN     = getDomain() ;

  // cookie object
  function MyCookie(name,enabled,version_parameter,version,threshhold)
  {
    this.name = name ;
    this.enabled = enabled ;
    this.version_parameter = version_parameter ;
    this.version = version ;
    this.threshhold = threshhold ;
  }

  function setCookie(name, value, expires, path, domain, secure)
  {
    document.cookie = name + "=" + escape(value) +
      ((expires) ? " ; expires=" + expires : "") +
      ((path) ? " ; path=" + path : "") +
      ((domain) ? " ; domain=" + domain : "") +
      ((secure) ? " ; secure" : "") ;
  }

  function manyYearsAgo()
  {
    var nowDate = new Date();
    // change number for # of years
    nowDate.setYear(nowDate.getFullYear() - 3);
    return ( nowDate.toGMTString() );
  }

  function getCookie(name)
  {
    var cookie = " " + unescape(document.cookie) ;
    var search = " " + name + "=" ;
    var setStr = null ;
    var offset = 0 ;
    var end = 0 ;

    if (cookie.length > 0)
    {
      offset = cookie.indexOf(search) ;
      if (offset != -1)
      {
        offset += search.length ;
        end = cookie.indexOf(";", offset)

        if (end == -1)
          end = cookie.length ;

        setStr = cookie.substring(offset, end) ;
      }
    }
    return(setStr) ;
  }

  function arePersistentCookiesOn()
  {
    setCookie("test","on","","/",DOMAIN) ;
    var value = getCookie("test") ;
  
    if ( getCookie("test") == "on" )
    {
      return true ;
      setCookie("test","on",manyYearsAgo(),"/",DOMAIN) ;
    }
    else
      return false ;
  }
  
  function isWebLogicUp()
  {
    return weblogic_up ;
  }
  
  function isThreshholdMet(threshhold)
  {
    var random = Math.random() ;
    var proceed = ( random <= threshhold ) ;
    if ( random == 0 )
      proceed = false
  
    return proceed ;
  }
  
  function hasAValue(user)
  {
    if ( user == null || user == "" || user == "null" )
      return false ;
    else
      return true ;
  }
  
  function isACookieableUser()
  {
    var user_type   = "" ;
  
    var explicit = getCookie("abqjournal") ;
    var implicit = getCookie("abqjournal") ;
  
    if ( hasAValue(explicit) )
    {
      //var logout = getCookie("logout") ;
      //if ( hasAValue(logout) && logout == "false" )
      //{
        user_type = "explicit" ;
        user_cookie = "abqjournal" ;
        user_value = explicit ;
      //}
    }
    if ( !user_type && hasAValue(implicit) )
    {
      user_type = "implicit" ;
      user_cookie = "ABQJUCID" ;
      user_value = implicit ;
    }
  
    if ( user_type )
      return true ;
    else
      return false ;
  
  }
  
  function callServletIfNecessary()
  {
    function hasInsufficientVersion(value,version_parameter,required_version)
    {

      function getVersioning(value,version_parameter)
      {
        var re1 = new RegExp("(:|^)("+version_parameter+"=([^:]+))","g") ;
  
        if ( value.match(re1) )
          return RegExp.$2 ;
        else
          return false ;
      } // end function getVersioning
  
      function getVersion(value,version_parameter)
      {
        var re1 = new RegExp("(:|^)("+version_parameter+"=([^:]+))","g") ;
  
        if ( value.match(re1) )
          return RegExp.$3 ;
        else
          return "" ;
      } // end function getVersion

      /**************************************************************************/
      /* BEGIN MAIN PART OF hasInsufficientVersion()                            */
      /**************************************************************************/

      var insufficient = false ;
      var versioning = getVersioning(value,version_parameter) ;
  
      if ( versioning )
      {
        var version = getVersion(value,version_parameter) ;
        if ( version == required_version)
          insufficient = false ;
        else if ( isNaN(version) || isNaN(required_version) )
          insufficient = true ;
        else if ( version < required_version )
          insufficient = true ;
      }
      else
        insufficient = true ;

      return insufficient ; 

    } // end function hasInsufficientVersion()
  
    /**************************************************************************/
    /* BEGIN MAIN PART OF callServletIfNecessary()                            */
    /**************************************************************************/

    for( var i=0; i<cookies_reset_ary.length ; i++ )
    {
      var callServlet = false ;

      var biscuit = cookies_reset_ary[i] ;
      var name = biscuit.name ;
      var enabled = biscuit.enabled ;
      var version_parameter = biscuit.version_parameter ;
      var required_version = biscuit.version ;
      var threshhold = biscuit.threshhold ;
      var value = getCookie(name) ;
  
      if ( enabled && isThreshholdMet(threshhold) )
      {
        // if no cookie, set the new one
        if (! hasAValue(value) )
          callServlet = true ;
        // if cookie, but wrong version, set the new one
        else if ( hasInsufficientVersion(value,version_parameter,required_version) )
          callServlet = true ;
      }

      if ( callServlet )
      {
        var servletUrl = "http://abqjournal.com/ac2/wp-dyn/CookieDeliveryServlet" ;
        var query = "?" ;
        query += 'cookie='+name ;
        query += '&' ;
        query += user_cookie+'='+user_value ;
        query += '&' ;
        query += 'type=js' ;
 
        //document.write('&lt;s\cript src="'+servletUrl+query+'"&gt;&lt;/s\cript&gt;') ;
        document.write('<s\cript src="'+servletUrl+query+'"></s\cript>') ;
        document.write('<p>') ;
      }
  
    } // end for cookies_reset_ary
  
  } // end function callServletIfNecessary()

  function getDomain()
  {
    var domain = document.domain ;
    var domains = new Array(".abqjournal.com") ;

    for ( var i=0; i<domains.length; i++ )
    {
      if ( domain.indexOf(domains[i]) != -1 )
        return domains[i] ;
    }
    return domains[0] ;

  } // end function getDomain

  /**************************************************************************/
  /* BEGIN MAIN PART OF resetCookies()                                      */
  /**************************************************************************/

  // cookies to reset
  var cookies_reset_ary = new Array(
    new MyCookie( "abqjournal",true,"VS",2,1.0 )
  ) ;

  if ( arePersistentCookiesOn() )
  {
    if ( isWebLogicUp() )
    {
      if ( isThreshholdMet(THRESHHOLD) )
      {

        var user_cookie = "" ;
        var user_value  = "" ;

        // this function also sets the above two values
        if ( isACookieableUser() )
        {
          callServletIfNecessary() ;
        } // end if isACookieableUser()
      } // end if isThreshholdMet()
    } // end if weblogic_up
  } // end if arePersistentCookiesOn()

} // end function resetCookies()

function manyYearsFromNow()
{
  var nowDate = new Date();
  // change number for # of years
  nowDate.setYear(nowDate.getFullYear() + 5);
  return ( nowDate.toGMTString() );
}
