<!-- Paste this code into an external JavaScript file named: saveRestore.js  -->

/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: Tony Davis :: http://www.tdavisconsulting.com */

// -----------------------------------------------------//
// SAVE FORM FIELD SELECTIONS IN COOKIES 		//
// formcookie_saverestore.js				//
// Written by Tony Davis, T. Davis Consulting, Inc.	//
// Date written: September 27, 2005			//
// Email: tony@tdavisconsulting.com			//
// Web site: http://www.tdavisconsulting.com		//
// -----------------------------------------------------//

// instructions:
// ------------
// Change <BODY>
// to <BODY onunload="saveSelections(document.forms[0])"> and
// Change </FORM>
// TO </FORM><SCRIPT language=JavaScript type="">loadSelections(document.forms[0]);</SCRIPT>
// see a working example at: http://www.tdavisconsulting.com/formcookie
//

// Strip of any flags or options after the url
function trimURL()
{
	var URL = window.location.href;
	var i = URL.indexOf("?");

    if (i > 0)
	    return URL.substr(0, i);

    return URL;
}

function resetForm()
{
    // clear the form contents
	clearSelections(document.forms[0]);
	window.location.href=trimURL();
}

//
// ------------------------------------------------
// This function will concatentate all the fields in
// in the form into one string, delimited by a PIPE
// symbol, into one cookie. The cookie name is the
// same name as the form name. ALL fields are saved.
// ------------------------------------------------
//

function saveSelections(frm,minutes) {
		var setvalue;
		var fieldType;
		var index;

    	// Expire cookie in 999 days.
		var today = new Date();
		var exp   = new Date(today.getTime()+minutes*60*1000);

		var string = "formname=" + frm.name + "|";
		var cookieName = frm.name;

		//alert(exp);
		//alert(frm.name);

		var n = frm.length;
		for (var i = 0; i < n; i++)
		{
            var value = "";

            name = frm[i].name;
			fieldValue  = frm[i].value;
			fieldType   = frm[i].type;

           // alert("Saving " + i + ": name=" + name + ", value="+fieldValue+", tpye ="+fieldType);
 			//alert(e);
			//alert(fieldType);
			//alert(fieldValue);

			//
			// RADIO BUTTON
			//
			if (fieldType == "radio")
            {
                // save the form index that has the radio on
                if (frm[i].checked)
					   value = i;
			}

			//
			// MULTI-SELECT
			//
			else if (fieldType == "select-multiple")
            {
                for (var j = 0; j < frm[i].length; j++)
                {
                     if (frm[i].options[j].selected)
                    {
                         value = value + "1\+";
                     }
                      else {
                           value = value + "0\+";
                     }
                }
            }
			//
			// TEXT, TEXTAREA, and DROPDOWN and HIDDEN
			//
			else if ((fieldType == "text") ||
			    (fieldType == "textarea") ||
			    (fieldType == "select-one") ||
                (fieldType == "hidden"))
			{
		    	value = fieldValue;
			}

			//
			// CHECKBOX
			//
			else if (fieldType == "checkbox")
			{
				value = (frm[i].checked==true)?"1":"0";
			}

            //
            // PASSWORD,BUTTON and UNKNOWN
            //
            // DO NOTHING - default to value = "";
			string = string + value + " \|";
		}

    //alert(string);
    setCookie(cookieName, string, exp);
}


function clearSelections(frm)
{
	var string = "formname=" + frm.name + "\|";
	var cookieName = frm.name;

	// Expire cookie in 999 days.
	var today = new Date();
	var exp   = new Date(today.getTime()-1*60*1000);

	setCookie(cookieName, string, exp);
    loadSelections(frm);
}
//
// LOAD FORM FIELD SELECTIONS FROM SAVED COOKIES
//

function loadSelections(frm) {
    var z;
    var x;
    var fieldValue;
    var cookieName;
    var fieldValue;
    var filedValues;
    var fieldArray;
    var fieldType;
    var empty = false;

    cookieName  = frm.name;
    fieldValues = getCookie(cookieName);
    if (fieldValues == null)
    {
        //alert("Load - empty cookie")
        empty = true;
    }

    if (!empty)
    {
        fieldArray  = fieldValues.split("\|");
    }

	var n = frm.length;
	for (i = 0; i < n; i++)
    {
			fieldType  = frm[i].type;

            if (!empty)
            {
			    fieldValue = fieldArray[i+1];
                // trim the padded space at the end so the split works properly
                fieldValue = fieldValue.substr(0,fieldValue.length-1);
            }
            else
                fieldValue = "";

		    //alert("Loading " + i + ": name=" + frm[i].name + ", value=" + fieldValue + ", type=" + fieldType);

			//
			// TEXT, TEXTAREA, and DROPDOWN
			//
			if ((fieldType == "text") ||
			    (fieldType == "textarea") ||
                (fieldType == "hidden"))
			{
		    	frm[i].value = fieldValue;
			}

            else if (fieldType == "select-one")
            {
                if (!empty)
                {
                    //alert("select-one = " + fieldValue);
                    frm[i].value = fieldValue;
                }
                else
                    frm[i].value = frm[i].options[0].value;
            }
			// MULTI_SELECT
			//
			else if (fieldType == "select-multiple")
			{
                var selected = fieldValue.split("\+");

                for ( j = 0; j <frm[i].length; j++ )
                {
                    var select="0";

                    if (!empty)
                        select = selected[j];

                    frm[i].options[j].selected = (select == "1")?true:false;
                 }
			}

			// CHECKBOX
			//
			else if (fieldType == "checkbox")
			{
				if (fieldValue == "1")
                  frm[i].checked = true;
			}

			// RADIO BUTTON
			//
			else if (fieldType == "radio")
            {
				if (fieldValue==i)
                    frm[i].checked = true;
			}

            //
            // PASSWORD, BUTTON
            //
	}
}

/// COOKIE FUNCTIONS

function setCookie(name, value, expires, path, domain, secure) {
document.cookie= name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}

function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}


// <!-- Paste this code into the HEAD section of your HTML document.
//    You may need to change the path of the file.  -->
//
// <script type="text/javascript" src="saveRestore.js"></script>

