// Brain Atlas Image Viewer Application -- preferences.js
// Version: @BuildVersion@
// Date: @DATE@ -- @TIME@
// Copyright (c) 2006 Vulcan, Inc. All Rights Reserved.

var cookieMap = new Array();
var preferencesMap = new Array();

function setPreference(name,value) {
	preferencesMap[name] = value;
	writePreferences();
}

function getPreference(name) {
	return preferencesMap[name];
}

function deletePreference(name) {
	delete preferencesMap[name];
}

function togglePreference(name) {
	preferencesMap[name] =
		(preferencesMap[name] == 't') ?
		't' :
		'f' ;
	writePreferences();
}	

function parseList(splitString,outerSeparator,innerSeparator) {
	var map = new Object();
	var pairs = splitString.split(outerSeparator);

	for (index = 0; index < pairs.length; index++) {
		var nameValue = pairs[index].split(innerSeparator);

		map[nameValue[0]] = nameValue[1];
	}
	
	return map;
}

function stripQuotes(value) {
	if (value.charAt(0) == '"' &&
	    value.charAt(value.length-1) == '"') { 
		value = value.substring(1,value.length - 2); 
	}

	return value;
}

function parseCookies() {
	cookieMap = parseList(document.cookie,'; ','=');
	for (var cook in cookieMap) {
		cookieMap[cook] = stripQuotes(cookieMap[cook]);
	}
}

function parsePreferences() {
	parseCookies();
	if (cookieMap['preferences'] != null)
	{
	    preferencesMap = parseList(cookieMap['preferences'],'|',':');
	}
	else
	{
	    preferencesMap = new Array();
	}
}

function joinList(joinee,outerseparator,innerseparator) {
	var pairs = new Array();
	
	for (cook in joinee) {
		pairs.push(cook + innerseparator + joinee[cook]);
	}
	
	return pairs.join(outerseparator);
}

function writePreferences() {
	cookieMap['preferences'] = joinList(preferencesMap,'|',':');
	var d = new Date();
	    d.setFullYear(d.getFullYear()+10);
	document.cookie = 'preferences=' + cookieMap['preferences'] + '; expires=' + d.toUTCString();
}	

var valCount = 0;
for (elem in preferencesMap)
{
    valCount++;
}

function initPreferences()
{
    //then load the array with values found in the cookie
    var cook = document.cookie.toString();
    var start = cook.indexOf("preferences=") + 12;
    if (start == -1)
    {
	return;
    }
    cook = cook.substring(start);
    var finish = cook.indexOf(";");
    var pref = cook.substring(0, finish);
    if (pref.length == 0) return;
    if (pref.indexOf("|") == -1)
    {
    	//there is only one preference set
    	setPreference(pref.split(":")[0],pref.split(":")[1]);
    	return;
    }
    var aPref = pref.split("|");
    for (elem in aPref)
    {
    	setPreference(aPref[elem].split(":")[0],aPref[elem].split(":")[1]);
    }
}

if (valCount == 0)
{
    initPreferences();
}
