

var schemaList;
var schemaListNum;
var COOKIETEST = "COOKIETEST";
var LISTNAME = "SCHEMALIST";
var MAX	= 10;



// create a list of 'num' elements
function getList(num)
{
	this.length = num;
	for(var i = 1; i <= num; i++)
		this[i] = 0;

	return(this);
}

// lookup in orderList and return index
function schemaLookUp(name)
{
	for(var i = 1; i <= schemaListNum; i++)
		if(schemaList[i] == name)
			return(i);

	return(0);
}

function isEnabled() 
{
	setCookie(COOKIETEST,"x");
	if(getCookie(COOKIETEST).length == 0)
		return false;
	else
		return true;
}

function loadSchema(target,fname,Name) 
{
	var k = target.document.forms.length;
	var i,j,l;
	var val;
	if(!schemaLookUp(Name))
		return;

	for(i = 0; i < k; i++) {
		if(target.document.forms[i].name != fname)
			continue;
		l = target.document.forms[i].elements.length;
		for(j = 0; j < l; j++) {
			val = getValueFromCookie(Name,target.document.forms[i].elements[j].name);
			if (target.document.forms[i].elements[j].type == "radio") {
				if (val == target.document.forms[i].elements[j].value) {
					target.document.forms[i].elements[j].checked = true;
				} else {
					target.document.forms[i].elements[j].checked = false;
				}
			} else if (target.document.forms[i].elements[j].type == "checkbox") {
				if (val == "true") {
					target.document.forms[i].elements[j].checked = true;
				} else {
					target.document.forms[i].elements[j].checked = false;
				}
			} else {
				target.document.forms[i].elements[j].value = val;
			}
		}
	}
}

function saveSchema(target,fname,Name) 
{
	var k = target.document.forms.length;
	var i,j,l;
	var s = "";

	if(!schemaLookUp(Name)) {
		if(schemaListNum >= MAX)
			return;
		schemaList[++schemaListNum] = Name;
	}

	for(i = 0; i < k; i++) {
		if(target.document.forms[i].name != fname)
			continue;
		l = target.document.forms[i].elements.length;
		for(j = 0; j < l; j++) {
			if(s.length)
				s += ";";

			if (target.document.forms[i].elements[j].type == "radio") {
		
				if (target.document.forms[i].elements[j].checked) {
					s += target.document.forms[i].elements[j].name + "=";
					s += target.document.forms[i].elements[j].value;
				}
			} else if (target.document.forms[i].elements[j].type == "checkbox") {
				s += target.document.forms[i].elements[j].name + "=";
				s += target.document.forms[i].elements[j].checked;
			} else {
				s += target.document.forms[i].elements[j].name + "=";
				s += target.document.forms[i].elements[j].value;
			}
		}
	}
	setCookie(Name,s);
}

function deleteSchema(Name)
{
	var i = schemaLookUp(Name);
	var	j;

	if(i > 0 && i <= schemaListNum) {
		for(var j = i; j < schemaListNum; j++)
			orderList[j] = schemaList[j + 1];
		schemaListNum--;
	}
}

function loadSchemaList() 
{
	var val;
	
	schemaList = new getList(MAX);
	schemaListNum = 0;

	for(var i = 1; i <= MAX; i++) {
		val = getValueFromCookie(LISTNAME,i);
		if(val.length == 0)
			break;
		schemaList[++schemaListNum] = val;
	}
}

function saveSchemaList() 
{
	var list = "";
	for(var i = 1; i <= schemaListNum; i++) {
		if(i > 1)
			list += ";";
		list += (i + "=" + schemaList[i]);
	}
	setCookie(LISTNAME,list);
}

function getSchemaListNum()
{
	return(schemaListNum);
}

function getSchemaList(i) 
{
	return(i > 0 && i <= schemaListNum ? schemaList[i] : "");
}

function getFormatedSchema(Name,delimiter)
{
	var s;
	var t;
	var i;
	var len;

	t = "";
	if(schemaLookUp(Name)) {
		s = getCookie(Name);
		len = s.length;
		for(i = 0; i < len; i++) {
			if(s.charAt(i) == ';')
				t += delimiter;
			else
				t += s.charAt(i);
		}		
	}

	return (t);
}

function printList(schemaTarget,target,fname)
{
	target.document.writeln("<Form name=\"schemalist\">");
	target.document.writeln("<Select name=\"schema\" onChange=\"" + schemaTarget + ".loadSchema(self,'" + fname + "',this.options[this.selectedIndex].text)\">");
	for(var i = 1; i <= schemaListNum; i++) {
		if (i==1) {
			target.document.writeln("<option selected>" + schemaList[i]);
		} else {
			target.document.writeln("<option>" + schemaList[i]);
		}
	}
	target.document.writeln("</Select></Form>");
}

function setCookie(Name,Val) 
{
	var s = (Name + "=" + escape(Val));
	var today = new Date();
	var expires = new Date();

	expires.setTime(today.getTime() + 1000*60*60*24*365);
	document.cookie = s + ";expires=" + expires.toGMTString();
}
	
function getCookie(Name) 
{   
	var search = Name + "=";
	if (document.cookie.length > 0) { 					// if there are any cookies
        offset = document.cookie.indexOf(search);
	    if (offset != -1) { 							// if cookie exists          
			offset += search.length;					// set index of beginning of value
        	end = document.cookie.indexOf(";", offset);	// set index of end of cookie value         
			if (end == -1)             
				end = document.cookie.length;
	        return unescape(document.cookie.substring(offset, end));
		}
	}

	return("");
}

function getValueFromCookie(Name,name)
{
	var s = getCookie(Name);
	var x = name + "=";

	//alert("getValueFromCookie:" + Name+"#"+name);
	if (s.length > 0) { 		
        offset = s.indexOf(x);
	    if (offset != -1) { 			        
			offset += x.length;        
        	end = s.indexOf(";", offset);          
			if (end == -1)             
				end = s.length;
			//alert("getValueFromCookie:" + s.substring(offset, end));
	        return (s.substring(offset, end));
		}
	}

	return("");
}