
 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
 //                                                                        \\
 //  Memorise a form so we can go back to it.                              \\
 //                                                                        \\
 //\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\

var form_mem = [];
var have_memory=false;

function clear_forms_mem()
{
   form_mem=[];
   have_mem=false;
}

function remember_forms(doc)
{
var i,j;

// alert("remember");

for(i=0; i<doc.forms.length; i++)
    {
	var form=doc.forms[i];
	for(j=0; j<form.elements.length; j++)
	    {
		var el = form.elements[j];
		var name=el.name;
		var val = null;
		var type = el.type;
		if (type == "select-one") {
		    //alert("getval:"+i+","+name+"{{"+el+"}}"+el.type+":"+el.options+":"+el.selectedIndex);
		    if (el.options != null && el.selectedIndex > 0) {
			val = el.options[el.selectedIndex].value;
		    }
		}
		else if (type == "checkbox")
                    val=el.checked;
		else
		    val=el.value;
		form_mem[i+":"+name]=val;
//		alert("save:"+i+","+name+":"+val);
	    }
    }
have_memory=true;
}

function restore_forms(doc)
{
var i,j;

// alert("restore");

for(i=0; i<doc.forms.length; i++)
    {
	var form=doc.forms[i];
	for(j=0; j<form.elements.length; j++)
	    {
		var el = form.elements[j];
		var name=el.name;
		val=form_mem[i+":"+name];
		var type=el.type;
		var oldval=null;
		if (val==null) continue;
//		if (el.options != null && el.selectedIndex != null)
		if (type=="select-one")
		    {
		    var k;
		    var v = null;
		    oldval = el.options[el.selectedIndex].value;
	            for (k=0; k< el.options.length; k++)
			{
			    if (el.options[k].value == val) {
				v = val;
				break;
			    }
			}
//			alert("restore:"+i+","+name+":"+val+":"+k);
                    if (v) {
			//                        alert("got " + k + " with val " + v); 
			el.selectedIndex=k;
		    }
		    }
		else if (type == "checkbox")
		  {
		    oldval = el.checked;
                    el.checked=val;
		  }
		else
		    {
//		    alert("restore:"+i+","+name+":"+val);
		      oldval = el.value;
		      el.value=val;
		    }

		if (oldval != val)
		  {
		    if (el.onclick != null)
		      el.onclick();
		    if (el.onchange != null)
		      el.onchange();
		    if (el.onselect != null)
		      el.onselect();
		  }

	    }
    }
}






