

	// for ajax callbacks
	var contextId;

	var panels = new Array();

	var helpWindow;
	
	var IE = 'MSIE';
	var SAFARI = 'Safari';
	
	function showView(view) {
		var showAdvanced = 'ADVANCED' == view;
		var basicView = document.getElementById('basicFieldsBlock');
		var advancedView = document.getElementById('advancedFieldsBlock');
		var hideFirst=advancedView;
		var showNext=basicView;
		if ( showAdvanced ) {
			hideFirst=basicView;
			showNext=advancedView;
		}
		hideFirst.style.display = "none";
		showNext.style.display = "block";
	}
	
	function isBrowser(browser)
	{
	    var userAgent = navigator.userAgent;
	    // alert("[checking:"+browser+"] in userAgent:"+userAgent);
		var ieIdx = userAgent.indexOf( browser );
		return ( ieIdx >= 0 );
	}
	
	function stripViewDescriptor(fieldId) {
		if ( fieldId.startsWith( "BASIC_" )) {
			return fieldId.substring( "BASIC_".length );
		} else {
			return fieldId.substring( "ADVANCED_".length );
		}
	}
	
	function setOtherFieldValue(inputField) {
    	var fieldId = stripViewDescriptor(inputField.id);
		var otherField;
		if ( inputField.id.startsWith( "BASIC_" )) {
			otherField = document.getElementById( "ADVANCED_"+fieldId );
		} else {			
			otherField = document.getElementById( "BASIC_"+fieldId );
		}
		if ( otherField ) {
			otherField.value = inputField.value;
		}
	}
    function keyPressed(evt, product, base, displayLvl)
    {
        var key = (evt.keyCode) ? evt.keyCode : evt.keyChar;
        // alert("code:"+evt.keyCode + " char:" + String.fromCharCode(key) + ".");
        if ( key == 13 ) { // enter
            return getAvailable(product,base,displayLvl);
        } else {
        	var inputField = evt.currentTarget;
        	setOtherFieldValue(inputField);
        }
        return false;
    }
    
    function RowInfo(row, num)
    {
        this.row = row;
        this.rowNum = num;
    }
    
    function setBtnImg(btn, imgSrc)
    {
        var nodeNum = isBrowser( IE ) ? 0 : 1;
        // FF counts empty text as nodes, so the <img> tag is at position 1 instead of 0 as in IE.
        btn.childNodes[nodeNum].src = imgSrc;
    }

	function resetForm(formName) {
		var form = document.forms[formName];
		if ( form ) {
			form.reset();
			var elements = form.elements;
			if ( !elements ) {
				return;
			} else {
    			for ( var i = 0; i < elements.length; i++ ) {
					var field = elements[i];
					if ( field.id.indexOf("val_") >= 0 ) {
						field.value = "";
					} else if ( field.id.indexOf( "comp_" ) >= 0 ) {
						field.value = "EQ";
					}
    			}
    		}
		}
	}
	
	function showHelp()
	{
	    if ( !helpWindow || helpWindow.closed ) {
	        var settings="scrollbars,resizable"+
	                     ",width="+600+
	                     ",height="+700;
		    helpWindow = window.open("/spade/doc/spade_help.html#fields",
		                             "spade_help", settings);
		}
	    helpWindow.focus();
	}

	function showStats(event, id, encodedField)
	{
		// alert("event:"+event);
		contextId=id;
		var url = "stats?field=" + encodedField.substring("help_".length);
		checkBrowser();
		sendIt(url);
	}
	
	function showResponse(text) {

		var id = "helpPnl";

		var header = "Field statistics";
		var body = text;
		// var footer = form["footer"].value;

		var visible = true;

		var constrain = true;
		// var useIframe = form["iframe"].checked;

		var fixedcenter = false;

		var modal = false;
		var close = true;
		var draggable = true;

		var context = contextId;
		var contextArg = new Array();
		if (context) {
			contextArg[0] = context;
			contextArg[1] = "tl";
			contextArg[2] = "br";
		}

		var underlay = "shadow";

		var args = {};
		args.visible = visible;

		args.constraintoviewport = constrain;

		// args.iframe = useIframe;

		args.fixedcenter = fixedcenter;

		args.draggable = draggable;
		args.modal = modal;
		args.underlay = underlay;
		args.close = close;

		if (contextArg.length > 0) {
			args.context = contextArg;
		}

		var newMod;
		var isNew = true;

		if (panels[id]) {
			newMod = panels[id];
			newMod.cfg.applyConfig(args);
			isNew = false;
		} else {
			newMod = new YAHOO.widget.Panel(id, args);
			panels[id] = newMod;
		}

		if (header) {
			newMod.setHeader(header);
		}
		if (body) {
			newMod.setBody(body);
		}
		// if (footer) {
			// newMod.setFooter(footer);
		// }

		if (isNew) {
			newMod.render(document.body);
		} else {
			newMod.render();
		}
	}

function clearStats() {
	var stats = panels['helpPnl'];
	if ( stats ) {
		stats.hide();
	}
}


function handleResponse()
{
	if ( request.readyState == 4 ) {
		showResponse( request.responseText );
	}
}

function checkBrowser()
{
	if ( window.XMLHttpRequest ) {
		request=new XMLHttpRequest();
	}
	else {
		if ( window.ActiveXObject ) {
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if ( !request ) {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		if ( !request ) {
			alert("No XMLHttpRequest object!  Cannot make request.");
		}
	}
	if ( request ) {
		request.onreadystatechange=handleResponse;
	}
}

function sendIt(url)
{
	// alert("url:"+url);
	request.open("GET", url,true);
	request.send(null);
}

function setCheckBoxes(checkbox, boxName) {
	var versionChecks = document.getElementsByName(boxName);
	for ( var i = 0; i < versionChecks.length; i++ ) {
		versionChecks[i].checked = checkbox.checked;
	}
}
