
function check( aField )
{
	found = checkButtons.length == 0;
	if( !found ) {
		for( i = 0;  i < checkButtons.length;  i ++ ) {
			if( aField.value == checkButtons[i] ) {
				found = true;
				break;
			}
		}
	}
	if( found ) {
		aForm = aField.form;
		elem = Array();
		isRadio = Array();
		for( i = 0;  i < aForm.elements.length;  i ++ ) {
			with( aForm.elements[i] )  {
				if( type != 'radio' || checked == true ) {
					elem[name] = value;
				}
				isRadio[name] = type == 'radio';
			}
		}
		for( i = 0;  i < reqList.length;  i ++ )
		{
			with( reqList[i] )
			{
				val = elem[field];
				if( !val || !val.match( pattern ))
				{
					alert( message );
					if( isRadio[field] )
						eval( "aForm."+field+"[0].focus()" );
					else
						eval( "aForm."+field+".focus()" );
					return false;
				}
			}
		}
	}
	return true;
}

function fixAddr( url )
{
	if( url.match( /^www./i )) {
		url = "http://" + url;
	}
	url = url.replace( /^http:\/\/www.avsparta.net/i, "" );
	if( url == '' )
		url = '/';
	return url;
}

function insCode( input, fieldname )
{
	eval( "field = input.form."+fieldname+";" );
	hdr = "";
	appText = "";
	appPara = "";
	if( input.type == 'image' ) {
		testval = input.name;
	} else {
		testval = input.value;
		input.selectedIndex = 0;
	}
	switch( testval ) {

		case "Page" :
			hdr = '!';
		case "Section" :
			hdr += '!';
		case "Paragraph" :
			if( hdr == '' ) {
				hdr = '!_';
			}
			aText = prompt( 'Enter text in heading', '' );
			if( aText )
				appPara = hdr + aText;
			break;

		case "bold" :
			aText = prompt( 'Enter text to make bold', '' );
			if( aText )
				appText = '*' + aText + '*';
			break;

		case "italics" :
			aText = prompt( 'Enter text to make italics', '' );
			if( aText )
				appText = '#' + aText + '#';
			break;

		case "linebreak" :
			appText = '%%%%\n';
			break;

		case "hyperlink" :
			addr = prompt( 'Enter link address or page number', '' );
			if( addr ) {
				addr = fixAddr( addr );
				desc = prompt( 'Enter link description', '' );
				if( !desc )
					desc = addr;
				appText = "[" + desc + "|" + addr + "]";
			}
			break;

		case "mailto" :
			addr = prompt( 'Enter e-mail address', '' );
			addr = addr.replace( /^mailto:/, "" );
			if( addr ) {
				desc = prompt( 'Enter name or description', '' );
				if( !desc )
					desc = addr;
				appText = "[" + desc + "|" + addr + "]";
			}
			break;

		case "image" :
			addr = prompt( 'Enter image number or address', '' );
			dprompt = 'Enter image description';
			if( addr ) {
				if( addr.match( /^\d+$/ )) {
					addr = "img=" + addr;
					dprompt += " (leave empty for default)";
				} else {
					addr = fixAddr( addr );
				}
				desc = prompt( dprompt, '' );
				appText = "[>" + desc + "|" + addr + "]";
			}
			break;

		case "numbered" :
		case "bullets" :
			bchar = testval == "numbered" ? "# " : "* ";
			dprompt = 'Enter a list item\nLeave empty or press Cancel when finished';
			anItem = prompt( dprompt, '' );
			while( anItem ) {
				appPara += bchar + anItem + "\n";
				anItem = prompt( dprompt, '' );
			}
			break;

		case "quote" :
			aText = prompt( 'Enter quoted text', '' );
			if( aText )
				appPara = ":" + aText;
			break;

	}
	if( appText.match( /^[#*]/) && !field.value.match( /[^\n]$/ )) {
		appText = '\\\\' + appText;
	}
	field.value += appText;
	if( appPara != '' ) {
		if( field.value != '' ) {
			field.value += "\n\n";
		}
		field.value += appPara + "\n\n";
		field.value = field.value.replace( /(\\r?\n){3,}/g, "\n\n" );
	}
	field.focus();
}
