///////////////////////// Cookie Functions /////////////////////////////////

//////////////////////// Functions exposed to child frame //////////////////
function readCookie(name) {
	if(m_cookiesEnabled)
	{
		return loadFromCookieStorage(name);
	}
	else
	{
		var value = unescape(loadFromFlashStorage(name));
		
		if (value == null) value = "";
		return value;
	}
}
function writeCookie(name,value,cookiePath,expires) 
{
	if(m_cookiesEnabled)
	{
		saveToCookieStorage(name,value,cookiePath,expires)
	}
	else	
	{
		saveToFlashStorage(name,escape(value));
	}
	return value;
}

function deleteCookie(name) 
{
	if(m_cookiesEnabled)
	{
		document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
	else
	{
		deleteFromFlashStorage(name);
	}
	
}

function writeSessionCookie(name,value) {
	if(m_cookiesEnabled)
	{
		document.cookie = name+"="+escape(value);
		return value;
	}
	else
	{
		saveToFlashStorage(name,escape(value));
	}
}

///////////////////
function saveToCookieStorage(name,value,cookiePath,expDate)
{
	if(expDate==null)
	{
		var expDays = 365; // number of days the cookie should last
		expDate = new Date();
		expDate.setTime(expDate.getTime() +  (24 * 60 * 60 * 1000 * expDays)); 
	}

	document.cookie = name + "=" + escape(value) + ((cookiePath) ? '; path=' + cookiePath : '') + "; expires=" + expDate.toGMTString() ;

}
function loadFromCookieStorage(name)
{
	var cookies = document.cookie;
	var start = cookies.indexOf(name+"=");
	if (start == -1) return "";
	
	start = cookies.indexOf("=",start) + 1;
	var end = cookies.indexOf(";",start);
	
	if (end == -1) end = cookies.length;
	
	var value = unescape(cookies.substring(start,end));
	
	if (value == null) value = "";
	return value;

}

var m_cookiesEnabled = false;
var val = Math.floor(Math.random()*100000);
saveToCookieStorage("ivtCT",val,"/");
m_cookiesEnabled = loadFromCookieStorage("ivtCT")==val;

///////////////////////////////// Flash Local Storage /////////////////////////////////////

var project_url = "";
var qStr = "";
var qmark = location.href.indexOf("?");
if (qmark!=-1) 
{
	qStr = location.href.substr(qmark)
	project_url = location.href.substr(0,qmark);
}
else 
	project_url = location.href;
var slash = project_url.lastIndexOf("/");
if(slash!=-1)
	project_url = project_url.substr(0,slash);
slash = project_url.lastIndexOf("/");
if(slash!=-1)
	project_url = project_url.substr(0,slash);
	
function saveToFlashStorage(keyName,keyValue)
{
//alert(project_url);
	try
	{
	    var fls = getFlashStorage()
		fls.SetVariable("keyName", keyName);
		fls.SetVariable("keyValue", keyValue);
 		fls.SetVariable("keyPath", project_url);
    
		// tell Flash they have changed so they can be stored
		fls.TCallLabel("/storageBehavior", "put");
//alert("Writing to Flash "+keyName+":"+keyValue);
	}
	catch(e) {alert("Save error"+e)}
}

function loadFromFlashStorage(keyName)
{
	try
	{
	    var fls = getFlashStorage()
		// set the value to get
		fls.SetVariable("keyName", keyName);
		fls.SetVariable("keyPath", project_url);
    
		// tell Flash to get this value
		fls.TCallLabel("/storageBehavior", "get");
    
		// get the results of this 'Get'
		var results = fls.GetVariable("keyValue");
		return results;
	}
	catch(e) {alert("Load error "+e)}
	return "";
}

function deleteFromFlashStorage(keyName)
{
 	try
	{
	    var fls = getFlashStorage()
	    fls.SetVariable("keyName", keyName);
	    fls.SetVariable("keyValue", "");
		fls.SetVariable("keyPath", project_url);
	  	fls.TCallLabel("/storageBehavior", "clear");
	}
	catch(e) {}
}

var storageFailed = false;
function getFlashStorage()
{
	var m_flashStorage = document.getElementById("flashStorage");
	if(m_flashStorage==null)
		m_flashStorage=document.embeds["flashStorage"];
	return m_flashStorage;
}
function storageReady()
{
//alert(m_cookiesEnabled+":"+(getFlashStorage()!=null)+":"+GetSwfVer())
	if(m_cookiesEnabled)
		return true;

    var fls = getFlashStorage()
	if(fls==null || GetSwfVer()==-1)
	{
		alert("You must either allow this site to use cookies or install Flash player to use this application");
		storageFailed = true;
		return true;
	}
	try
	{
		fls.SetVariable("keyName", "test");
		fls.SetVariable("keyPath", project_url);
    
		// tell Flash to get this value
		fls.TCallLabel("/storageBehavior", "get");
    
		// get the results of this 'Get'
		var results = fls.GetVariable("keyValue");
		return true;
	}
	catch(e) {}
	return false;
		
}
