function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


function FWTMGetObj(prefix, suffix)
{
	if (document.getElementById)
	 	return document.getElementById(prefix + suffix);
	else if (document.all)
	 	return document.all[prefix + suffix];
	else
		return null;
}

function FWSMHideShowTree(idSuffix, isCorner, openfolder, endcloser, closer, folder, endopener, opener, open, genCookies)
{
	var subTree = FWTMGetObj("subTree", idSuffix);
	var imgNode = FWTMGetObj("imgNode", idSuffix);
	var imgLeaf = FWTMGetObj("imgLeaf", idSuffix);

document.getElementById('subTreeFS21').style.display = 'none';
document.getElementById('subTreeFS20').style.display = 'none';
document.getElementById('subTreeFS15').style.display = 'none';
document.getElementById('subTreeFS14').style.display = 'none';
document.getElementById('subTreeFS13').style.display = 'none';


eraseCookie('links');
createCookie('links',idSuffix,7);
ck = readCookie('links');

	// open folder
	if (subTree)
	{
		if (subTree.style.display == "none")
		{
			subTree.style.display = "block";
			if (imgNode)
			{
				if (isCorner)
					imgNode.src = endcloser;
				else
					imgNode.src = closer;
			}
			if (imgLeaf)
				imgLeaf.src = openfolder;
		}
		else if (!open)	// close folder
		{
			subTree.style.display = "none";
			if (imgNode)
			{
				if (isCorner)
					imgNode.src = endopener;
				else
					imgNode.src = opener;
			}
			if (imgLeaf)
				imgLeaf.src = folder;
		}
	}
	else if (imgNode || imgLeaf)
	{
		if (imgNode)
		{
			if (isCorner)
			{
				var img = new Image();
				img.src = endopener;
				
				if (imgNode.src == img.src)
				{
					imgNode.src = endcloser;
					if (imgLeaf)
						imgLeaf.src = openfolder;
				}
				else
				{
					imgNode.src = endopener;
					if (imgLeaf)
						imgLeaf.src = folder;
				}
			}
			else
			{
				var img = new Image();
				img.src = opener;

				if (imgNode.src == img.src)
				{
					imgNode.src = closer;
					if (imgLeaf)
						imgLeaf.src = openfolder;
				}
				else
				{
					imgNode.src = opener;
					if (imgLeaf)
						imgLeaf.src = folder;
				}
			}
		}
		else
		{
			var img = new Image();
			img.src = folder;
			
			if (imgLeaf.src = img.src)
				imgLeaf.src = openfolder;
			else
				imgLeaf.src = folder;
		}
	}

	if (genCookies && folder && subTree)
		FWTMSetCookie(idSuffix, subTree.style.display, 1);
}

function FWSMLoadCookie(idSuffix, isCorner, openfolder, endcloser, closer)
{
	var subTree = FWTMGetObj("subTree", idSuffix);
	if (subTree && FWTMGetCookie(idSuffix) == 1 && subTree.style.display == "none")
		FWSMHideShowTree(idSuffix, isCorner, openfolder, endcloser, closer);
}

function FWFindLayer(lay)
{
	if (lay)
	{
		if (document.layers) 
			return document[lay];
		else if (document.getElementById)
			return document.getElementById(lay).style;
		else if (document.all) 
			return document.all[lay].style;
	}
	return null;
}

function FWShowHideLayer(lay, vis, ch)
{
	if (ch && lay != "") 
	{
		vis = (vis) ? "visible" : "hidden";
		var obj = FWFindLayer(lay);
		if (obj && obj.visibility != vis) 
			obj.visibility = vis; 
	}
}

fwLoad = new Object;
function FWLoad(image)
{
	if (!document.images)
		return null;
	if (!fwLoad[image])
	{
		fwLoad[image]=new Image;
		fwLoad[image].src=image;
	}
	return fwLoad[image].src;
}
function FWPreload(){FWLoad("Resources/endcloser.gif");FWLoad("Resources/endopener.gif");FWLoad("Resources/corner.gif");FWLoad("Resources/openfolder.gif");FWLoad("Resources/folder.gif");FWLoad("Resources/page.gif");FWLoad("Resources/line.gif");FWLoad("Resources/closer.gif");FWLoad("Resources/opener.gif");FWLoad("Resources/branch.gif");FWLoad("Resources/homea.gif");FWLoad("Resources/tellfriend1a1a1a.gif");FWLoad("Resources/tellfriend2.gif");FWLoad("Resources/bookmark1a1a1a.gif");FWLoad("Resources/bookmark2.gif");FWLoad("Resources/webmaster1a1a1a.gif");FWLoad("Resources/webmaster2.gif");FWLoad("Resources/profile1a.gif");FWLoad("Resources/1_profile2.gif");FWLoad("Resources/management1.gif");FWLoad("Resources/1_management2.gif");FWLoad("Resources/investors1.gif");FWLoad("Resources/1_investors2.gif");FWLoad("Resources/careers1.gif");FWLoad("Resources/1_careers2.gif");FWLoad("Resources/services1a.gif");FWLoad("Resources/2_services2.gif");FWLoad("Resources/training1.gif");FWLoad("Resources/2_training2.gif");FWLoad("Resources/federal1.gif");FWLoad("Resources/3_federal2.gif");FWLoad("Resources/runningit1.gif");FWLoad("Resources/3runningit2.gif");FWLoad("Resources/metadata1.gif");FWLoad("Resources/3_metadata2.gif");FWLoad("Resources/component1.gif");FWLoad("Resources/3_component2.gif");FWLoad("Resources/model1.gif");FWLoad("Resources/3_model2.gif");FWLoad("Resources/entint1.gif");FWLoad("Resources/3_entint2.gif");FWLoad("Resources/partner1.gif");FWLoad("Resources/4_partner2.gif");FWLoad("Resources/solution1.gif");FWLoad("Resources/4_solution2.gif");FWLoad("Resources/technology1.gif");FWLoad("Resources/4_technology2.gif");FWLoad("Resources/cubutton.gif");FWLoad("Resources/cu2_button.gif");FWLoad("Resources/lbutton.gif");FWLoad("Resources/l2_button.gif");FWLoad("Resources/ebutton.gif");FWLoad("Resources/e2_button.gif");FWLoad("Resources/nbutton.gif");FWLoad("Resources/n2_button.gif");FWLoad("Resources/csbutton.gif");FWLoad("Resources/cs2_button.gif");}
var fwIsNetscape = navigator.appName == 'Netscape';

fwRestore = new Object;
function FWRestore(msg,chain) 
{
	if (document.images) 
		for (var i in fwRestore)
		{
			var r = fwRestore[i];
			if (r && (!chain || r.chain==chain) && r.msg==msg)
			{
				r.src = FWLoad(r.old);
				fwRestore[i]=null;
			}
		}
}

function FWLSwap(name,msg,newImg,layer,chain,trigger) 
{
	var r = fwRestore[name];
	if (document.images && (!r || r.msg < msg)) 
	{
		var uselayers = fwIsNetscape && document.layers && layer != '';
		var hld = (uselayers) ? document.layers[layer].document : document;
		var im = hld[name];
		if (!im.old) im.old = im.src;
		im.msg = msg;
		im.chain = chain;
		im.trigger = trigger;
		if (newImg) im.src = FWLoad(newImg);
		fwRestore[name] = im;
	}
}

function FWCallHit(func,targNum,msg)
{
	if(func)
		for (var i in func)
			func[i](targNum,msg);
}
function FW_Hit(frameset,chain,targNum,msg)
{
	if (frameset && frameset.length)
		for (var i=0 ; i <frameset.length ; i++)
		{
			FW_Hit(frameset[i].frames,chain,targNum,msg);
			FWCallHit(top["FT_"+chain],targNum,msg);
			FWCallHit(frameset[i].window["FT_"+chain],targNum,msg);
		}
	else
		FWCallHit(window["FT_"+chain],targNum,msg);
}

fwHit = new Object;
function FWSlave(frameset,chain,targNum,msg)
{
	if (msg==1) fwHit[chain]=targNum;
	FW_Hit(frameset,chain,targNum,1);
}

function FWSRestore(frameset,chain)
{
	var hit=fwHit[chain];
	if (hit)
		FW_Hit(frameset,chain,hit,0);
	fwHit[chain]=null;
}




//document.getElementById('subTreeFS15').style.display = 'none';
//xhttp = new xhttp();
//jsoc = new JSOC();
//jsoc = new JSOC(); // JavaScript Object Cache
//if(jsoc.get("test") == undefined){
//var cacheItem = eval(cName);
//alert('success'+cacheItem);
//}

//xhttp = new xhttp();

function setCache(n,v){
var respCode = jsoc.set(n, v);
alert('Data containing ' + n + ' was fetched and cached!');
}

function clearCacheItem(n){
var respCode = jsoc.remove(n);
alert('Data containing ' + n + ' is no longer cached.');
}


function cacheStuff(cName){

jsoc = new JSOC(); // JavaScript Object Cache
if(jsoc.get(cName) == undefined){
cacheName = cName; // set the global cacheName so that it's in scope for the call-back function.
loc = 'http://www.californiafantasies.com/cache.txt';
xhttp.fetch(loc, 'responseProxy', {'method':'POST','type':'text'});
}else{
var cacheItem = eval(cName);
alert(cName + ' = ' + cacheItem);
}}

function responseProxy(response){
var x = eval("("+ response+")");
setCache(cacheName, cacheName, x.articles[17].article.body); // this is where cache is set as mentioned above.
}






