// fnGetArgs(query)						Parses a HTML-style search string; returns name/value pairs in object
// fnUp(s)										Moves selected item up one position in HTMO select-multiple control
// fnDown(s)									Moves selected item down one position in HTMO select-multiple control
// fnNotYet()									Return "under construction" msg
// OptionUnshift(a, o)				Insert Option o at base of Options array a 
// Array.prototype.shift			Attempt to manually add shift/unshift methods to Array object on non-support browsers
// Array.prototype.unshift		Doesn't appear to work on Netscape 4

function fnGetArgs(query) {
	var args = new Object();
	if (query == null) return args;
	var pairs = query.split('&');
	for (var i=0; i<pairs.length && (pairs[i].indexOf('=') != -1); i++) {
		var pair = pairs[i].split("=");
		args[pair[0]] = unescape(pair[1]);
	}
	return args;
}

function fnPutArgs(args) {
	var s = new Array();
	for (var i=0; i<args.length; i++) s[s.length] = args[i].name + '=' + args[i].value;
	return s.join('&');
}

function fnUp(s) {
	if (s.selectedIndex != -1 && s.selectedIndex != 0) {
		var val = s.options[s.selectedIndex].value;
		var txt = s.options[s.selectedIndex].text;
		s.options[s.selectedIndex].value = s.options[s.selectedIndex-1].value;
		s.options[s.selectedIndex].text = s.options[s.selectedIndex-1].text;
		s.options[s.selectedIndex-1].value = val;
		s.options[s.selectedIndex-1].text = txt;
		s.selectedIndex -= 1;
	}
}

function fnDown(s) {
	if (s.selectedIndex != -1 && s.selectedIndex != s.length-1) {
		var val = s.options[s.selectedIndex].value;
		var txt = s.options[s.selectedIndex].text;
		s.options[s.selectedIndex].value = s.options[s.selectedIndex+1].value;
		s.options[s.selectedIndex].text = s.options[s.selectedIndex+1].text;
		s.options[s.selectedIndex+1].value = val;
		s.options[s.selectedIndex+1].text = txt;
		s.selectedIndex += 1;
	}
}

function fnNotYet() { 
	alert('Feature under construction.'); 
	return false;
}

function fnOffline() { 
	alert('Feature temporarily unavailable.'); 
	return false;
}

function OptionUnshift(a, o) {
	for (var i=a.length; i>0; i--) a[i] = new Option(a[i-1].text, a[i-1].value);
	a[0] = o;
	return a.length;
}

Array.prototype.unshift = function(v) {
	for(var i=this.length; i>0; i--) this[i] = this[i-1];
	this[0] = v;
	return this.length;
}

Array.prototype.shift = function() {
	for (var i=0; i<this.length; i++) this[i] = this[i+1];
	return (this.length = this.length-1);
}

function fnFormTest(a) {
	//alert(a);
	var x = a.split('?');
	var f = document.forms['NextLink']
	f.action = x[0];
	//alert(f.action);
	//alert(x[1]);
	var args = fnGetArgs(x[1]);
	for (arg in args) f[arg] = args[arg];
	f.submit()
}

