// functions to get/set/remove cookies

// setting a server spanning cookie
function setCookie(name, value)
{
	var url = document.location + "";
	var urlStart = url.substring(url.indexOf(".")) + "";
	var domain = urlStart.substring(0, urlStart.indexOf("/"));
	
	if(domain.indexOf(":") != -1){
		domain = domain.substring(0, domain.indexOf(":"));
	}
//	alert("setCookie Domain: "+ domain);
	// QN 01.10.07: remove the pipe.  Only prepend it when adding another value to an existing cookie
	//document.cookie = name +"="+ value +"|";	//";path=/;domain=" + domain ;
	document.cookie = name +"="+ value;	//";path=/;domain=" + domain ;
}

function setCategoryCookie(name,value)
{
	var url = document.location + "";
	var urlStart = url.substring(url.indexOf(".")) + "";
	var domain = urlStart.substring(0, urlStart.indexOf("/"));
	
	if(domain.indexOf(":") != -1){
		domain = domain.substring(0, domain.indexOf(":"));
	}
//	alert("setCookie Domain: "+ domain);
	document.cookie = name +"="+ value +"#";//";path=/;domain=" + domain ;
//	alert("setCat Cookie END " + document.cookie);
}
// get cookie and return fallback value if not found or empty
function getCookie(name, fallback)
{//	alert("in getCookie "+ name);
	
	cookies = document.cookie +";@";       // ensure terminator
	//alert("Full Cookie: "+ cookies);
	valStart = cookies.indexOf(name+"=")  // look for cookie
	if(valStart < 0) return fallback;     // if not found return fallback
	valEnd = cookies.lastIndexOf("|"); // find end of value
	if(valStart + name.length + 1 == valEnd) return fallback; // for my dear Netscape, which puts ='s
	return cookies.substring(valStart + name.length + 1, valEnd); // return value part except |
}
//gets the Cookie Category Name

function getCookieCategory(name, fallback)
{
//	alert("in getCookieCategory Name "+ name);
	cookies = document.cookie +";*";       // ensure terminator
//	alert("Full Cookie Category: "+ cookies);
	valStart = cookies.indexOf(name+"=");  // look for cookie
	if(valStart < 0) return fallback;     // if not found return fallback
	valEnd = cookies.indexOf("#", valStart); // find end of value
	if(valStart + name.length + 1 == valEnd) return fallback; // for my dear Netscape, which puts ='s
	return cookies.substring(valStart + name.length + 1, valEnd); // returns only the category of value part excluding # 
}


// removes cookie by emptying its value
function removeCookie(name)
{
	document.cookie = name + "=" + "" + "; expires=-1";
	setCookie(name, "");
}

function removeCookieSKU(name,skuName)
{
//	alert("IN REMOVE COOKIE");
	fallback="EMPTY";
	cookieVal=getCookie(name)+"|";
//	alert("RMV COOKIE:cookieVal: "+ cookieVal);
	valStartSKU = cookieVal.indexOf(skuName+"|");
	valEndSKU= valStartSKU + skuName.length;
	valLen=valEndSKU+1
//	alert("valLen "+ valLen+" cVAl len: "+cookieVal.length);
	if(valEndSKU+1==cookieVal.length)
		tempVal=cookieVal.substring(0,valStartSKU-1);
	else	
		tempVal=cookieVal.substring(0,valStartSKU)+ cookieVal.substring(valEndSKU+1,cookieVal.length-1);
		
//	alert("new tempVal: "+ tempVal);
	setCookie(name,tempVal);
//	alert("REmove result: "+ document.cookie);	
	return document.cookie;
	
}

// acts like getCookie but prints the value on the document
function printCookie(name, fallback)
{
	document.write(getCookie(name, fallback));
}


// Added for customer cookie to display the user name and value.
// User cookie will be SY_REC always
function removeUserCookie()
{
  deleteCookie("SY_REC");
}

// This will remove the cookie by setting expires as past time
function deleteCookie ( cookieName )
{
  var cookieDate = new Date ();  // current date & time
  cookieDate.setTime ( cookieDate.getTime() - 1 );
  document.cookie = cookieName += "=; expires=" + cookieDate.toGMTString();
}


function getUserCookieValue(keyName)
{
 var cookieValue = getCookie("SY_REC");
  if ( cookieValue == null )
 	return null;
 var  nameDelimiter = "~~~" ;
 var pairDelimiter = "```" ;	 	
 var results = cookieValue.match ( keyName + nameDelimiter + '(.*?)(' + pairDelimiter +')');
  if ( results )
    return ( unescape ( results[1] ) );
  else
    return null;
}

function getCookie ( cookieName )
{
  var results = document.cookie.match ( cookieName + '=(.*?)(;|$)' );
  if ( results )
    return ( unescape ( results[1] ) );
  else
    return null;
}

function getUserIdFromWCCookie(c_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name);
	  	if (c_start!=-1)
	    { 
	    	c_start=c_start + c_name.length; 
	    	c_end=document.cookie.indexOf("=",c_start);
	    	if (c_end==-1) c_end=document.cookie.length;
	    	return unescape(document.cookie.substring(c_start,c_end));
	    } 
	}
	return "";
}

function checkForValidCookies(remember)
{
	/* START 10/8/08: compare the userId in custom cookie with userId in WC cookie, if diff, kill custom cookies */
	var userIdInSession = getUserIdFromWCCookie('WC_USERACTIVITY_');
	var userIdInCookie = getUserCookieValue('USERS_ID');
	
	if (remember != '1' && (userIdInSession != userIdInCookie) && getCookie("SY_REC") != null)
	{
		/*
		removeCookie('SY_REC');
		removeCookie('SY_REC_LOGON');
		*/
	}
	/* End 10/8/08 */
}

/* QN 10/15/08: using the SY_REC_LOGON to determine if this user is fully authenticated */
function isUserLoggedIn()
{
	var loggedIn = false;
    var logonCookie = getCookie('SY_REC_LOGON');
    if (logonCookie != null && logonCookie == "true") 
    	loggedIn = true;  
    
    return loggedIn;	
}

/* QN 10/20/08: using the SY_REC to determine if user is an EPP user */
function isUserInEpp()
{
	var inEpp = false;
	var eppToken = getUserCookieValue('EPP');
	if (eppToken != null && eppToken != '')
		inEpp = true;
		
	return inEpp;
}


function isCRMUser()
{
	var URL_RELOGIN = "reLogonURL";
	var CRM_PORTAL_HOME="CRMPortalHome";
	var REDIRECT_VIEW = "TimeOutRedirectView";
	var CRM_LOGON_FORM = "CRMLogonForm";
	var COOKIE_VALUE_DELIMITER = "$";
	var COOKIE_NAME_VALUE_SEPARATOR = "=";
	
	var redirectCookieVal = unescape(getCookie(REDIRECT_VIEW));
	
	if(redirectCookieVal != "" && redirectCookieVal.length > 0)
	{
		var cookieValTokens = redirectCookieVal.split(COOKIE_VALUE_DELIMITER);
		if(cookieValTokens.length > 1)
		{
			var logonTokens = cookieValTokens[0].split(COOKIE_NAME_VALUE_SEPARATOR);
			if(logonTokens!= undefined && logonTokens.length > 1)
			{
				if(logonTokens[0] == URL_RELOGIN && logonTokens[1] == CRM_LOGON_FORM )
				{
					return true;					
				}			
			}
		}		
	}
	
	return false;
}


