// FILE: persist.js
// GOAL: To define functions to initialize support for Taipan Trader game

// Begin

// Setup initial variables
var c_cash;
var c_debt;
var c_payment;
var c_hong;
var c_locus;
var c_last_locus;
var c_place;
var c_ship;
var c_damage;
var c_gun;
var c_cargo;
var c_tonnage;
var c_jade_quant;
var c_silk_quant;
var c_arm_quant;
var c_rice_quant;
var c_gen_quant;
var c_selection;
var c_price;
var c_quant;


////////////////////////////////////////   BEGIN INITIALIZATION CODE    ////////////////////////////////


// FUNCTION: addToCookieExpiring
// PURPOSE:  To add a name=value pair to the cookie with an expiration date set
function addToCookieExpiring(name, value) {
	// Set expiration date for today + 32 days
	var exp = new Date();
	exp.setTime(exp.getTime() + 32*24*60*60*1000);	// 32 days
	var expDate = exp.toGMTString();

	// Now set the cookie value
	document.cookie = name + "=" + value + ";expires=" + expDate + "; ";
	return true;
}


// FUNCTION: addToCookie
// PURPOSE:  To add a name=value pair to the cookie
function addToCookie(name,value) {
	// Set expiration date for today + 32 days
	var exp = new Date();
	exp.setTime(exp.getTime() + 32*24*60*60*1000);	// 32 days
	var expDate = exp.toGMTString();

	document.cookie = name + "=" + value + ";expires=" + expDate + "; ";
	return true;
}

// FUNCTION: getCookieValue
// PURPOSE: To get value to the specific cookie value
function getCookieValue(name)  {
	var start=0;
	var end=0;
	cookieyes=false;
	var cookietext= document.cookie;
	var i=0;
	templen = name.length

	while ( i<= cookietext.length)
	{
		start = i;
		end  = start + templen;
		if (cookietext.substring(start, end )== name) 
		{
			cookieyes = true;
			break;
		}
		
		// Increment along the cookie text 
		i++
	}
	
	if (cookieyes==true)
	{
		start = end + 1;
		end=document.cookie.indexOf(";", start);
		if (end < start)
			end=document.cookie.length;
		result = document.cookie.substring(start, end);
	}
	else
	{
		result = "NA";
	}
	
	return result;
}


// Initialize cookie for the first time
function initcookie()
{
	// Setup initial data
	addToCookieExpiring("game", "taipan");
	
	addToCookie("c_cash", c_cash);
	addToCookie("c_debt", c_debt);
	addToCookie("c_payment", c_payment);

	addToCookie("c_hong", c_hong);
	addToCookie("c_locus", c_locus);
	addToCookie("c_last_locus", c_last_locus);
	addToCookie("c_place", c_place);
	addToCookie("c_ship", c_ship);
	addToCookie("c_damage", c_damage);
	addToCookie("c_gun", c_gun);
	addToCookie("c_cargo", c_cargo);
	addToCookie("c_tonnage", c_tonnage);
	addToCookie("c_jade_quant", c_jade_quant);
	addToCookie("c_silk_quant", c_silk_quant);
	addToCookie("c_arm_quant", c_arm_quant);
	addToCookie("c_rice_quant", c_rice_quant);
	addToCookie("c_gen_quant", c_gen_quant);

	addToCookie("c_selection", c_selection);
	addToCookie("c_price", c_price);
	addToCookie("c_quant", c_quant);
}


// FUNCTION: parse_cookie
// PURPOSE:  To parse the cookie, extracting various values
function parse_cookie()
{
	c_cash=parseFloat(getCookieValue("c_cash"));
	c_debt=parseFloat(getCookieValue("c_debt"));
	c_payment=parseFloat(getCookieValue("c_payment"));
	c_hong=getCookieValue("c_hong");
	c_locus=parseInt(getCookieValue("c_locus"));
	c_last_locus=parseInt(getCookieValue("c_last_locus"));
	c_place=getCookieValue("c_place");
	c_ship=parseInt(getCookieValue("c_ship"));
	c_damage=parseFloat(getCookieValue("c_damage"));
	c_gun=parseInt(getCookieValue("c_gun"));
	c_cargo=parseInt(getCookieValue("c_cargo"));
	c_tonnage=parseInt(getCookieValue("c_tonnage"));
	c_jade_quant=parseInt(getCookieValue("c_jade_quant"));
	c_silk_quant=parseInt(getCookieValue("c_silk_quant"));
	c_arm_quant=parseInt(getCookieValue("c_arm_quant"));
	c_rice_quant=parseInt(getCookieValue("c_rice_quant"));
	c_gen_quant=parseInt(getCookieValue("c_gen_quant"));
	c_selection=parseInt(getCookieValue("c_selection"));
	c_price=parseFloat(getCookieValue("c_price"));
	c_quant=parseInt(getCookieValue("c_quant"));
}


// FUNCTION: setup_screen
// PURPOSE:  To set the screen input fields
function setup_screen()
{
	document.holding.i_cash.value=c_cash;
	document.holding.i_debt.value=c_debt;
	document.holding.i_payment.value=c_payment;
	document.holding.i_hong.value=c_hong;
	document.holding.i_locus.value=c_locus;
	document.holding.i_last_locus.value=c_last_locus;
	document.holding.i_place.value=c_place;
	document.holding.i_ship.value=c_ship;
	document.holding.i_damage.value=c_damage;
	document.holding.i_gun.value=c_gun;
	document.holding.i_cargo.value=c_cargo;
	document.holding.i_tonnage.value=c_tonnage;
	document.holding.i_jade_quant.value=c_jade_quant;
	document.holding.i_silk_quant.value=c_silk_quant;
	document.holding.i_arm_quant.value=c_arm_quant;
	document.holding.i_rice_quant.value=c_rice_quant;
	document.holding.i_gen_quant.value=c_gen_quant;
	document.holding.i_selection.value=c_selection;
	document.holding.i_price.value=c_price;
	document.holding.i_quant.value=c_quant;
}


////////////////////////////////////////////////   FINAL CODE    ///////////////////////////////////////

// FUNCTION: reloadUser
// PURPOSE:  To Reload User data on subsequent pages
function reloadUser()
{
	// Alert
	// alert('Now reloading cookie values');
	
	// Parse the current cookie
	parse_cookie();
	
	// Load the values on screen
	setup_screen();
	bSetupComplete=true;
	
}


// FUNCTION: saveUser
// PURPOSE:  To save the user settings
function saveUser()
{
	// Capture current data in the cookie
	c_cash=parseFloat(document.holding.i_cash.value);
	c_debt=parseFloat(document.holding.i_debt.value);
	c_payment=parseFloat(document.holding.i_payment.value);
	c_hong=document.holding.i_hong.value;
	c_locus=parseInt(document.holding.i_locus.value);
	c_last_locus=parseInt(document.holding.i_last_locus.value);
	c_place=document.holding.i_place.value;
	c_ship=parseInt(document.holding.i_ship.value);
	c_damage=parseFloat(document.holding.i_damage.value);
	c_gun=parseInt(document.holding.i_gun.value);
	c_cargo=parseInt(document.holding.i_cargo.value);
	c_tonnage=parseInt(document.holding.i_tonnage.value);
	c_jade_quant=parseInt(document.holding.i_jade_quant.value);
	c_silk_quant=parseInt(document.holding.i_silk_quant.value);
	c_arm_quant=parseInt(document.holding.i_arm_quant.value);
	c_rice_quant=parseInt(document.holding.i_rice_quant.value);
	c_gen_quant=parseInt(document.holding.i_gen_quant.value);
	c_selection=parseInt(document.holding.i_selection.value);
	c_price=parseFloat(document.holding.i_price.value);
	c_quant=parseInt(document.holding.i_quant.value);
	
	// Recreate the cookie
	addToCookieExpiring("game", "taipan");
	
	addToCookie("c_cash", c_cash);
	addToCookie("c_debt", c_debt);
	addToCookie("c_payment", c_payment);

	addToCookie("c_hong", c_hong);
	addToCookie("c_locus", c_locus);
	addToCookie("c_last_locus", c_last_locus);
	addToCookie("c_place", c_place);
	addToCookie("c_ship", c_ship);
	addToCookie("c_damage", c_damage);
	addToCookie("c_gun", c_gun);
	addToCookie("c_cargo", c_cargo);
	addToCookie("c_tonnage", c_tonnage);
	addToCookie("c_jade_quant", c_jade_quant);
	addToCookie("c_silk_quant", c_silk_quant);
	addToCookie("c_arm_quant", c_arm_quant);
	addToCookie("c_rice_quant", c_rice_quant);
	addToCookie("c_gen_quant", c_gen_quant);

	addToCookie("c_selection", c_selection);
	addToCookie("c_price", c_price);
	addToCookie("c_quant", c_quant);
}


// FUNCTION: updateUser
// PURPOSE:  To update the user settings in the cookie only
function updateUser()
{
	// Recreate the cookie
	addToCookieExpiring("game", "taipan");
	
	addToCookie("c_cash", c_cash);
	addToCookie("c_debt", c_debt);
	addToCookie("c_payment", c_payment);

	addToCookie("c_hong", c_hong);
	addToCookie("c_locus", c_locus);
	addToCookie("c_last_locus", c_last_locus);
	addToCookie("c_place", c_place);
	addToCookie("c_ship", c_ship);
	addToCookie("c_damage", c_damage);
	addToCookie("c_gun", c_gun);
	addToCookie("c_cargo", c_cargo);
	addToCookie("c_tonnage", c_tonnage);
	addToCookie("c_jade_quant", c_jade_quant);
	addToCookie("c_silk_quant", c_silk_quant);
	addToCookie("c_arm_quant", c_arm_quant);
	addToCookie("c_rice_quant", c_rice_quant);
	addToCookie("c_gen_quant", c_gen_quant);

	addToCookie("c_selection", c_selection);
	addToCookie("c_price", c_price);
	addToCookie("c_quant", c_quant);
}


//  End


