//EXH 3.25.08 ----------------------------------------------------------------
// call BrowserSniff(); from browsercheck.js
// the problem in Safari is that this file, cookiefunct.js is called BEFORE browsercheck.js!
// so all of the variables are not known
// Do this for ALL BROWSERS, not just safari
//if (navigator.userAgent.indexOf('Safari') != -1){
// BRD 12/1/2009 -- only do this if BrowserSniff() is undefined. This way, it wont call
// the file if browsercheck.js has already been called. (aicc24.html is at root and causes errors in the logs because of the path, they browsercheck.js has already been called)
	//alert("BrowserSniff = " + typeof(BrowserSniff))
	if (typeof(BrowserSniff) == "undefined") {	
		var bcheck = "../../common/assets/js/browsercheck.js"
		document.write('<script type="text/javascript" src="' + bcheck + '"></script>');
	}
//}


// COOKIE FUNCTIONS
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();
}

function GetCookie (name)

// reads a cookie

{
	var p = name + "=[^;]*";
	var r = new RegExp();
	r.compile(p);
	var f = r.exec(document.cookie);
	if (f) {
		return unescape(f[0].split("=")[1])
	} else {
		return null;
	}	
}




function SetCookie (name, value)
	
	{
		
		var argv = SetCookie.arguments;
		var argc = SetCookie.arguments.length;
	

				
		// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			
		// BRD Addition 7/24/2009 for persistant cookie below in IE8 local mode only
		// Hmmm. Since Local mode is only supported in IE, why not just set it to all Local Mode.
		
		if (GetCookie("Local") == "true") {
			
			// && navigator.userAgent.indexOf('IE 8') != -1)
	
			// BRD addition 7/24/2009 for local mode in IE8 -- set all cookies to persistant cookies
			// Difference between a session and persistant cookie is setting the expire date
			
			// periodType        "years","months","days","hours", "minutes"
	        // offset            Number of units specified in periodType
	        // BRD setting persistant cookie to 8 hours default -- enough for one day's demo at a convention or conference
	        
			var expireDate = new Date ();
			  offset = 8 / 1;
			  
			  var myPeriodType = "hours";
			  switch (myPeriodType.toLowerCase()) {
			    case "years": 
			     var year = expireDate.getYear();     
			     // Note some browsers give only the years since 1900, and some since 0.
			     if (year < 1000) year = year + 1900;     
			     expireDate.setYear(year + offset);
			     break;
			    case "months":
			      expireDate.setMonth(expireDate.getMonth() + offset);
			      break;
			    case "days":
			      expireDate.setDate(expireDate.getDate() + offset);
			      break;
			    case "hours":
			      expireDate.setHours(expireDate.getHours() + offset);
			      break;
			    case "minutes":
			      expireDate.setMinutes(expireDate.getMinutes() + offset);
			      break;
			    default:
			      alert ("Invalid periodType parameter for writePersistentCookie()");
			      break;
			  } 
			
			  
			  var expires = expireDate;
			  
			  
			// end BRD addition
			// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

		} else {
			var expires = (argc > 2) ? argv[2] : null;
		}
		
		//var path = GetCookie("CookiePath")
		//var path = "";
		var path = "/";
		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" : "");
	}




function MultiCookieInit (mname)

// Initializes the specified multicookie.

{
	SetCookie (mname, "");
}


function MultiCookieSet (mname, name, value)

// Adds or updates the specified  name/value pair in the specified multicookie

{
	var s = GetCookie (mname);
	if (s == null || s == "null") {
		s = "";
	}
	
	var lPattern = "#" + name + "=[^#]*";
	var regobj = new RegExp()
	regobj.compile(lPattern, "");
	var lFoundArray = regobj.exec(s);

	if (lFoundArray) {
		var lCookieArray = lFoundArray[0].split("=");
		var lNewEntry = lCookieArray[0] + "=" + value;
		var lNewString = s.replace(regobj, lNewEntry);
	} else {
		var lNewString = s + "#" + name + "=" + value;		
	}

	SetCookie (mname, lNewString)
}

function CookieMonsterSet(mname, namearray, valuearray) 

{
	var lCookie = GetCookie (mname);
	if (lCookie == null || lCookie == "null") {
		var lCookie = "";
	}
	
	for (var i=0; i < namearray.length; i++) {		
	
		var lPattern = "#" + namearray[i] + "=[^#]*";
		var regobj = new RegExp()
		regobj.compile(lPattern, "");
		var lFoundArray = regobj.exec(lCookie);
		
		if (lFoundArray) {
			var subCookieName = lFoundArray[0].split("=")[0];
			var lNewEntry = subCookieName + "=" + valuearray[i];
			var lCookie = lCookie.replace(regobj, lNewEntry);
		} else {
			lCookie += "#" + namearray[i] + "=" + valuearray[i];		
		}			
	}	
	SetCookie (mname, lCookie)
}

function MultiCookieGet (mname, name)

// Retrieves the specified value from specified multicookie

{
	var s = GetCookie (mname);
	if (s == null || s == "null" || s == "") {
		return "null";
	}

	var lPattern = "#" + name + "=[^#]*"
	var regobj = new RegExp()
	regobj.compile(lPattern, "i");
	var lFoundArray = regobj.exec(s)
	if (lFoundArray) {
		return lFoundArray[0].split ("=")[1]
	} else {
		return "null"
	}	
}

function CookieMonsterGet (mname, namearray, evalarray)

// Retrieves the specified value from specified multicookie

{

	var lCookie = GetCookie (mname);
	if (lCookie == null || lCookie == "null" || lCookie == "") {
		return "null";
	}

	for (var i=0; i < namearray.length; i++) {		
		var lPattern = namearray[i] + "=[^#]*"
		var regobj = new RegExp()
		regobj.compile(lPattern, "");
		var lFoundArray = regobj.exec(lCookie);
		
		if (lFoundArray) {
			q = (evalarray[i]) ? "" : "'";			 
			eval(namearray[i] + " = " + q + lFoundArray[0].split ("=")[1] + q);			
		} else {
			eval(namearray[i] + " = 'null'");
		}	
	}
}

function MultiCookieDelete (mname, name)

// Deletes the specified name/value pair from the specified multicookie

{
	var s = GetCookie (mname);
	if (s != null || s != "null" || s != ""){
		var found = "No";
		if (s != ""){			
			var lPattern = "#" + name + "=[^#]*"
			var regobj = new RegExp()
			regobj.compile(lPattern, "");
			var lFoundArray = regobj.exec(s)			
		}
		
		if (lFoundArray) {
			var lNewString = s.replace(regobj, "");
			SetCookie (mname, lNewString);
		} else {
			return "null"
		}					
	}
}
