var jsFile="/js/forms.js";
var callingForm='';
var wegotit='';
var questionType='';
var fCnt='0';
var ndel='ndel';

function loadURL(surl) {
	window.location.href=surl;
	}

function managedb(surl,rurl) {
	var nurl=surl+'&RURL='+rurl;
	window.location.href=nurl;
	}

function chkDelButton(f,val) {
	if ( val == '' || val == null ) {
		val=ndel;
		}
	f.fdf.value=val;
	f.submit();
	}

function unpubForm(f) {
	var text="Are you sure you want to unpublish this form? ALL DATA WILL BE LOST! If you only want to hide the form, click \"Cancel\" and uncheck the \"Show\" checkbox in the Attributes dialog box on FileNet/Egrail.";
	var dresp=window.confirm(text);
	if ( dresp  ) {
		f.subt.value="Unpublish";
		f.jsact.value="Unpublish";
		f.submit();
		}
	else {
		return false;
		}
	}

function displayForm(furl) {
	var nwin2=window.open(furl,'','fullscreen,resizable=yes,scrollbars=yes');
	}

function retFormId(f,meth,fid) {
	if(meth == 'egrail'){
		var wo=eval('opener.document.wizardform');
		if ( wo.objectcode_acu_form ) {
		wo.objectcode_acu_form.value=fid;
		}
	}else if(meth == 'collage'){
		try{
			window.opener.setFID(fid);
		}catch(err){
			alert("Your browser does not support this function.\n \
				Your Form ID is:\n \n    \t " + fid +
				"\n \nYou can enter it manually on the MetaData page.");
		}
	}
	window.close();
	}

function chooseForm(curl,purl) {
	if ( ! curl || ! purl ) {
		alert('Generate URLs were not passed.');
		return false;
		}
	var nwin=window.open('','','resizable=yes,scrollbars=yes,width=400,height=100,left=100,top=100,screenX=100,screenY=200');
	var n=nwin.document;
	n.write('<html>');
	n.write('<head>');
	n.write('<SCRIPT src='+jsFile+'></SCRIPT>');
	n.write('</head>');
	n.write('<body>');
	n.write('<form>');
	n.write('The presently two versions of this form.  The currently modified version and ');
	n.write('the non-modified published version.  Which version would you like to see?');
	n.write('<br>');
	n.write('<input type=radio onClick=\"window.close();displayForm(\''+curl+'\')\">Modified Version');
	n.write('<input type=radio onClick=\"window.close();displayForm(\''+purl+'\')\">Published Version');
	n.write('<br>');
	n.write('</form>');
	n.write('</body>');
	n.write('</html>');
	}

function formDel(f) {
	var dresp=window.confirm("Do you really want to delete this form?");
	if ( dresp  ) {
		f.jsact.value='delete';
		f.submit();
		}
	else {
		return false;
		}
	}

function addNewQ(f) {
	var wegotit='';
	var i;
	var cform=f;
	callingForm=f;
	for (i=0;i<f.elements['addtype'].length;i++){
		if (f.elements['addtype'][i].checked==true){
			wegotit=f.elements['addtype'][i].value;
			f.elements['addtype'][i].checked=false;
			}
		}
	if ( wegotit == '' ) {
		alert('No Question type was chosen.');
		}
	else {
		questionType=wegotit;
		if ( wegotit == 'radio' ) {
			addRadioCheckList(cform);
			}
		else if ( wegotit == 'stext' ) {
			addShortLong(cform);
			}
		else if ( wegotit == 'ltext') {
			addShortLong(cform);
			}
		else if ( wegotit == 'cbox' ) {
			addRadioCheckList(cform);
			}
		else if ( wegotit == 'lbox' )  {
			addRadioCheckList(cform);
			}
		else {
			alert("Type '"+wegotit+"' is not a valid type");
			return false;
			}
		}
	}

function addRadioCheckList(form) {
	var defS;
	var defD;
	var descD;
	var maxS;
	var treqV;
	var tmsV;
	var tincV;
	var taV='';
	var desc='';
	var mode='Add';
	var bt='Add Question';
	var sepr=form.sepr.value;
	var subuser;
	callingForm=form;

	var meth;
	if ( form.meth ) {
		meth=form.meth.value;
		}

	if ( questionType == null || questionType == '' ) {
		questionType=form.jstype.value;
		}

	if ( form.desc && form.desc.value != '' ) {
		bt='Save Changes';
		mode='Edit';
		desc=form.desc.value;
		if ( form.inc.checked ) {
			tincV='checked';
			}
		var ts=form.rbut.value;
		var ta=ts.split(sepr);
		for (var i=0;i < ta.length ; i++ ) {
			taV+=ta[i]+'\n';
			}
		}
		
	if ( questionType == 'lbox' ) {
		if ( form.ms.value ) {
			tmsV='checked';
			}
		if ( form.siz  ) {
			defS=form.siz.value;
			}
		else {
			defS=70;
			}
		if ( form.dsiz  ) {
			defD=form.dsiz.value;
			}
		else {
			defD=10;
			}
		}
	if ( form.req.checked ) {
		treqV='checked';
		}

	if ( form.descs ) {
		descD=form.descs.value;
		}
	else {
		descD=70;
		}

	if ( form.wip001set ) {
		subuser=form.wip001set.value;
		}

	var nwin=window.open('','','resizable=yes,scrollbars=yes,width=800,height=400,left=100,top=100,screenX=300,screenY=400');
	var n=nwin.document;
	n.write('<html>');
	n.write('<head>');
	n.write('<SCRIPT src='+jsFile+'>');
	n.write('</SCRIPT>');
	n.write('</head>');
	n.write('<body onload=\"document.ast_form.desc.focus();\">');
	n.write('<form name=ast_form>');
	n.write('<input type=hidden name=mode value=\"'+mode+'\">');
	n.write('<input type=hidden name=from value=\"'+questionType+'\">');
	n.write('<input type=hidden name=sepr value=\"'+sepr+'\">');
	if ( subuser != null  || subuser != '' ) {
		n.write('<input type=hidden name=wip001Set value=\"'+subuser+'\">');
		}
	if ( meth != null  || meth != '' ) {
		n.write('<input type=hidden name=meth value=\"'+meth+'\">');
		}
	n.write('<table>');
	n.write('<tr>');
	n.write('<td>Display Text: </td><td><input type=text size='+descD+'  name=desc value=\"'+desc+'\"></td></tr>');
	if ( mode == 'Edit' ) {
		n.write('<tr>');
		n.write('<td>Include this Field?</td><td>Yes <input type=checkbox name=inc value=Yes '+tincV+'></td></tr>');
		}
	n.write('<tr>');
	n.write('<td>Is this Field required?</td><td>Yes <input type=checkbox name=req value=Yes '+treqV+'></td></tr>');
	if ( questionType == 'lbox' ) {
		n.write('<tr>');
		n.write('<td>Allow Multiple Select?</td><td>Yes <input type=checkbox name=ms value=Yes '+tmsV+'></td></tr>');
		}
	n.write('</table><table>');
	n.write('<tr><td>Enter your choices:<br>(one per line)</td></tr>');
	n.write('<tr><td><textarea name=tach column=80 rows=30>'+taV+'</textarea></td></tr>');
	n.write('</table><table>');
	n.write('<tr><td><input type=button name=astsub value=\"'+bt+'\" onClick=valRbCbLb(this.form,form)></td>');
	n.write('<td><input type=button name=astsub value=\"Reset Form\" onClick=\"reset()\"></td>');
	n.write('<td><input type=button name=astsub value=\"Cancel\" onClick=\"self.close()\"></td></tr>');
	n.write('<tr><td> </td></tr>');
	n.write('</table>');
	n.write('</form>');
	n.write('</body>');
	n.write('</html>');
	}

function addShortLong(form) {
	var defS=20;
	var defD=20;
	var descD;
	var maxS=70;
	var maxD=70;
	var sizP;
	var dsizP;
	var mode='Add';
	var bt='Add Question';
	var descV='';
	var subuser;
	callingForm=form;
	if ( form.desc && form.desc.value != '' ) {
		bt='Save Changes';
		mode='Edit';
		descV=form.desc.value;
		if ( form.inc.checked ) {
			tincV='checked';
			}
		}

	var meth;
	if ( form.meth ) {
		meth=form.meth.value;
		}

	if ( questionType == null || questionType == '' ) {
		questionType=form.jstype.value;
		}


	if ( form.wip001set ) {
		subuser=form.wip001set.value;
		}

	if ( callingForm.defs ) {
		defs=callingForm.defs.value;
		}
	if ( callingForm.defd ) {
		defd=callingForm.defd.value;
		}

	if ( callingForm.siz  ) {
		sizP=callingForm.siz.value;
		}
	else {
		sizP=defS;
		}
	if ( callingForm.dsiz  ) {
		dsizP=callingForm.dsiz.value;
		}
	else {
		dsizP=defD;
		}
	if ( callingForm.descs ) {
		descD=callingForm.descs.value;
		}
	else {
		descD=20;
		}
	if ( callingForm.maxs ) {
		maxS=callingForm.maxs.value;
		}
	if ( callingForm.maxd ) {
		maxD=callingForm.maxd.value;
		}

	if ( sizP > maxS ) {
		sizP=maxS;
		}
	if ( dsizP > maxD ) {
		dsizP=maxD;
		}
	var nwin=window.open('','','resizable=yes,scrollbars=yes,width=800,height=400,left=100,top=100,screenX=300,screenY=400');
	var n=nwin.document;
	n.write('<head>');
	n.write('<SCRIPT src='+jsFile+'>');
	n.write('</SCRIPT>');
	n.write('</head>');
	n.write('<body onLoad=\"formFocus()\">');
	n.write('<form name=ast_form>');
	n.write('<input type=hidden name=maxs value='+maxS+'>');
	n.write('<input type=hidden name=maxd value='+maxD+'>');
	n.write('<input type=hidden name=mode value=\"'+mode+'\">');
	n.write('<input type=hidden name=from value=\"'+questionType+'\">');
	if ( subuser != null  || subuser != '' ) {
		n.write('<input type=hidden name=wip001Set value=\"'+subuser+'\">');
		}
	if ( meth != null  || meth != '' ) {
		n.write('<input type=hidden name=meth value=\"'+meth+'\">');
		}
	n.write('<table>');
	n.write('<tr>');
	n.write('<td>Display Text: </td><td><input type=text size='+descD+'  name=desc value=\"'+descV+'\"></td></tr>');
	n.write('<tr>');
	if ( mode == 'Edit' ) {
		n.write('<tr>');
		n.write('<td>Include this Field?</td><td>Yes <input type=checkbox name=inc value=Yes '+tincV+'></td></tr>');
		}
	n.write('<td>Is this Field required?</td><td>Yes <input type=checkbox name=req value=Yes></td></tr>');
	if ( questionType == 'stext' ) {
		n.write('<tr><td>Size of field (less than '+maxS+')</td><td><input type=text value=\"'+sizP+'\" size=4 name=size></td></tr>');
		n.write('<tr><td>Display size of field (less than '+maxD+')</td><td><input type=text value=\"'+dsizP+'\" size=4 name=dsize></td></tr>');
		}
	if ( questionType == 'ltext' ) {
		n.write('<tr><td>Width(no. of chars.)</td><td><input type=text value='+sizP+' size=4 name=size></td></tr>');
		n.write('<tr><td>Height(no. of chars.)</td><td><input type=text value='+dsizP+' size=4 name=dsize></td></tr>');
		}
	n.write('</table><table>');
	n.write('<tr><td><input type=button name=astsub value=\"'+bt+'\" onClick=valStLt(this.form)></td>');
	if ( questionType == 'ltext' ) {
		n.write('<td><input type=button name=astsub value=\"Preview\" onClick=\"prevLbox(this.form)\"></td>');
		}
	n.write('<td><input type=button name=astsub value=\"Reset Form\" onClick=\"reset()\"></td>');
	n.write('<td><input type=button name=astsub value=\"Cancel\" onClick=\"self.close()\"></td></tr>');
	n.write('<tr><td> </td></tr>');
	n.write('</table>');
	n.write('</form>');
	n.write('</body>');
	}

function valRbCbLb(f,fc) {
	var outln='';
	var from=f.elements['from'].value;
	var mode=f.elements['mode'].value;
	var desc=f.elements['desc'].value;
	var req=f.elements['req'];
	if ( mode == 'Edit' ) {
		var inc=f.elements['inc'];
		}
	if ( from == 'lbox' ) {
		var ms=f.elements['ms'];
		}
	var tach=f.elements['tach'].value;
	var sepr=f.elements['sepr'].value;
	var ctach=convEOL(tach,sepr);
	if ( desc.length < 1 ) {
		outln+='\n--> You need to enter Display text.';
		}
	if ( tach.length < 1 ) {
		outln+='\n--> You need to enter choices.';
		}
		
		
	if ( outln ) {
		alert('Please fix these errors:\n ' +outln);
		return false;
		}


	if ( mode == 'Add' ) {
		if ( req.checked ) {
			window.opener.callingForm.req.value='1';
			}
		if ( from == 'lbox' && ms.checked ) {
			window.opener.callingForm.ms.value='1';
			}
		window.opener.callingForm.rbut.value=ctach;
		window.opener.callingForm.desc.value=desc;
		window.opener.callingForm.WORK.value='add_cff';
		window.opener.callingForm.qtype.value=from;
		window.opener.callingForm.submit();
		}
	else {
		var ns='';
		if ( req.checked != window.opener.callingForm.req.checked ) {
			ns+='req:';
			window.opener.callingForm.req.checked=req.checked;
			}
		if ( inc.checked != window.opener.callingForm.inc.checked ) {
			ns+='inc:';
			window.opener.callingForm.inc.checked=inc.checked;
			}
		if ( from == 'lbox'  ) {
			var tms=(ms.checked) ? true : false;
			if ( tms && (window.opener.callingForm.ms.value == '') ) {
				ns+='ms:';
				window.opener.callingForm.ms.value='1';
				}
			if ( ! tms && (window.opener.callingForm.ms.value != '') ) {
				ns+='ms:';
				window.opener.callingForm.ms.value='';
				}
			}
		if ( desc != window.opener.callingForm.desc.value ) {
			ns+='desc:';
			}
		if ( ctach != window.opener.callingForm.rbut.value ) {
			ns+='rbut:';
			}
		if ( ns == '' || ns == null ) {
			alert('No changes were made to the form.');
			}
		else {
			window.opener.callingForm.rbut.value=ctach;
			window.opener.callingForm.desc.value=desc;
			window.opener.callingForm.jstype.value=from;
			window.opener.callingForm.jslist.value=ns;
			window.opener.callingForm.jsact.value='editcff';
			window.opener.callingForm.submit();
			}
		}
	self.close();
	}

function valStLt(f) {
	var outln='';
	var from=f.elements['from'].value;
	var mode=f.elements['mode'].value;
	var req=f.elements['req'];
	if ( mode == 'Edit' ) {
		var inc=f.elements['inc'];
		}
	var desc=f.elements['desc'].value;
	var size=f.elements['size'].value;
	var dsize=f.elements['dsize'].value;
	var maxs=f.elements['maxs'].value;
	var maxd=f.elements['maxd'].value;
	if ( desc.length < 1 ) {
		outln+='\n--> You need to enter Display text.';
		}
	if ( from == 'stext' ) {
		++size;
		--size;
		++maxs;
		--maxs;
		++maxd;
		--maxd;
		++dsize;
		--dsize;
		if ( size > maxs || size < 3 ) {
			outln+='\n--> Size is greater than '+maxs+'';
			}
		if ( dsize > maxd || dsize < 3 ) {
			outln+='\n--> Display Size is greater than '+maxd+'';
			}
		if ( size < dsize ) {
			outln+='\n--> Size must be equal to or greater than Display Size';
			}
		}
	if ( from == 'ltext' ) {
		if ( size < 0 ) {
			outln+='\n--> No size entered for Columns';
			}
		if ( size > maxs ) {
			outln+='\n--> Width is greater than '+maxs+'';
			}
		if ( dsize < 0 ) {
			outln+='\n--> No size entered for Rows';
			}
		if ( dsize > maxd ) {
			outln+='\n--> Height is greater than '+maxd+'';
			}
		}
		
	if ( outln ) {
		alert('Please fix these errors:\n ' +outln);
		return false;
		}
	
	if ( mode == 'Add' ) {
		if ( req.checked ) {
			window.opener.callingForm.req.value='1';
			}
		window.opener.callingForm.desc.value=desc;
		window.opener.callingForm.siz.value=size;
		window.opener.callingForm.dsiz.value=dsize;
		window.opener.callingForm.WORK.value='add_cff';
		window.opener.callingForm.qtype.value=from;
		window.opener.callingForm.submit();
		}
	else {
		var ns='';
		if ( req.checked != window.opener.callingForm.req.checked ) {
			ns+='req:';
			window.opener.callingForm.req.checked=req.checked;
			}
		if ( inc.checked != window.opener.callingForm.inc.checked ) {
			ns+='inc:';
			window.opener.callingForm.inc.checked=inc.checked;
			}
		if ( desc != window.opener.callingForm.desc.value ) {
			ns+='desc:';
			}
		if ( size != window.opener.callingForm.siz.value ) {
			ns+='siz:';
			}
		if ( dsize != window.opener.callingForm.dsiz.value ) {
			ns+='dsiz:';
			}
		if ( ns == '' || ns == null ) {
			alert('No changes were made to the form.');
			}
		else {
			window.opener.callingForm.desc.value=desc;
			window.opener.callingForm.siz.value=size;
			window.opener.callingForm.dsiz.value=dsize;
			window.opener.callingForm.jstype.value=from;
			window.opener.callingForm.jslist.value=ns;
			window.opener.callingForm.jsact.value='editcff';
			window.opener.callingForm.submit();
			}
		}
	self.close();
	}

 function showExamples(seurl) {
	if ( seurl == '' || seurl == null ) {
		seurl='http://cms.acu.edu/js/html/showexamples.html';
		}
	 var nwin=window.open(seurl,'','resizable=yes,scrollbars=yes');
	}

function displayNewVal(fm,vn,cn) {
	fm.elements[vn].value=cn;
	}

function resetButton(fm,bn) {
	fm.elements[bn].checked=false;
	}

function changeCffButton(f,b) {
	f.jslist.value=b+':';
	f.jsact.value='editcff';
	f.submit();
	}

function delCff(f) {
	var resp=window.confirm("Are you sure you want to delete this field?");
	if ( resp != null ) {
		f.jsact.value='delcff';
		f.submit();
		}
	}


function unDelCff(f) {
	var resp=window.confirm("Are you sure you want to undelete this field?");
	if ( resp != null ) {
		f.jsact.value='undelcff';
		f.submit();
		}
	}

function prevLbox(f) {
	var sz=f.size.value;
	var ds=f.dsize.value;
	var dc=f.desc.value;
	if ( ! sz || ! ds ) {
		alert('You need to enter both a column and row value.');
		return false;
		}
	var nwin=window.open('','','resizable=yes,scrollbars=yes,width=800,height=400,left=100,top=100,screenX=300,screenY=400');
	var n=nwin.document;
	n.write('<body onblur=\"self.close\">');
	n.write(dc);
	n.write('<br>');
	n.write('<form>');
	n.write('<textarea cols='+sz+' rows='+ds+'>');
	n.write('</textarea>');
	n.write('<br><br><input type=button value=Close onClick=\"window.close()\">');
	n.write('</form>');
	n.write('</body>');
	}

function validForm(f) {
	var ns='';
	var req='';
	var name='';
	var type='';
	var found=false;
	var dName='';
	for (fCnt=0; fCnt < f.elements.length; fCnt++ ) {
		type=f.elements[fCnt].type;
		name=f.elements[fCnt].name;
		req=name+'_req';
		for (var i=0; i< f.elements.length; i++) {
			if ( req == f.elements[i].name ) {
				found=true;
				dName=f.elements[i].value;
				break;
				}
			}

		if ( found ) {
			found=false;
			if ( type == 'text' || type == 'textarea' ) {
				var value=f.elements[fCnt].value;
				if ( value == '' || value == null ) {
					ns+='\n --> '+dName+' not entered.';
					}
				}
			else if ( type == 'select' ) {
				if ( f.elements[i].selectedIndex < '1' ) {
					return false;
					}
				}
			else if ( type == 'radio' ) {
				var rbChecked=false;
				var rbName=name;
				var rbDisp=dName;
				while ( rbName == f.elements[fCnt].name ) {
					if ( f.elements[fCnt].checked ) {
						rbChecked=true;
						}
					fCnt++;
					}
				fCnt--;
				if ( ! rbChecked) {
					ns+='\n -->'+rbDisp+' not checked.';
					}
				}
			else if ( type == 'checkbox' ) {
				var cbChecked=false;
				var cbName=name;
				var cbDisp=dName;
				while ( name == f.elements[fCnt].name ) {
					if ( f.elements[fCnt].checked ) {
						cbChecked=true;
						}
					fCnt++;
					}
				fCnt--;
				if ( ! cbChecked) {
					ns+='\n -->'+cbDisp+' not checked.';
					}
				}
			else if ( type == 'select-one' || type == 'select-multiple' ) {
				var sChecked=false;
				for (var i=0; i< f.elements[fCnt].options.length; i++ ) {
					if ( f.elements[fCnt].options[i].selected && i > 0 ) {
						sChecked=true;
						break;
						}
					}
				if ( ! sChecked ) {
					ns+='\n -->'+dName+' not selected.';
					}
				}
			}
		}
	if ( ns ) {
		alert('Please correct the following errors\n\n'+ns);
		return false;
		}
	else {
		var nDate=new Date();
		f.elements['sdate'].value=nDate.toString();
		/*
		window.document.forms[0].submit();
		*/
		return true;
		}
	}

function formFocus() {
	if ( document.forms.length > 0 ) {
		var f= document.forms[0];
		for (var i=0;i < f.length; i++ ) {
			if ( (f.elements[i].type == 'text' ) || (f.elements[i].type == 'textarea') || (f.elements[i].type.toString().charAt(0) == 's')) {
				f.elements[name].focus();
				break;
				}
			}
		}
	}


function convEOL(v,s) {
	var outp='';
	var retl='';
	for (var i=0; i<v.length; i++ ) {
		if ( v.charCodeAt(i) == '10' ) {
			outp+=s;
			}
		else {
			outp+=v.charAt(i);
			}
		}
	var ta=outp.split(s);
	var rp=/\s+/;
	for (var i=0; i<ta.length; i++ ) {
		if ( ta[i] != '' ) {
			retl+=ta[i]+s;
			}
		}
	return retl;
	}
