function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
function MM_jumpMenuGo(selName,targ,restore){ //v3.0
  var selObj = MM_findObj(selName); if (selObj) MM_jumpMenu(targ,selObj,restore);
}
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function fieldClear(fieldTxt,txt) { 
	if (fieldTxt.value == txt) fieldTxt.value = "";
	}

function fieldRestore(fieldTxt,txt) { 
	if (fieldTxt.value == "") fieldTxt.value = txt;
	}

function PopupPic(sPicURL,sPicTitle) {
	window.open('/popup.php?file='+sPicURL+'&title='+sPicTitle,"vd_blowup","height=400,width=400,scrollbars=0,resizable=1");
} 

function PopupWindow(sURL,sW,sH) {
	window.open(sURL,"Brainfag Doohickey Window","height="+sH+",width="+sW+",scrollbars=1,resizable=1");
} 

function makeEmailLink(address, text) {
	document.write('<a href="mailto:' + address + '">' + text + '</a>');
	}

function checkConfirm(form)
{
	var value = true;
	if(button !="noask")
	{
		if(!formSubmit)
		  value = false;
		else
		  value = confirm("Are you sure you want to " + button + "?");
	}
	return value;
}

function toggleDisplay(obj_id){
	if (document.getElementById){
		var obj = document.getElementById(obj_id);
		if (obj.style.display == '' || obj.style.display == 'none'){
			var state = 'block';
		} else {
			var state = 'none';
		}
		obj.style.display = state;
	}
}
function toggleSlide(obj_id){
	if (document.getElementById){
		var obj = document.getElementById(obj_id);
		if (obj.style.display == 'none'){
			new Effect.SlideDown(obj);
		} else {
			new Effect.SlideUp(obj);
		}
	}
}


/* Nate's mootools functions for generic form validation */

/* Tries to get field name from <label>, resorts to capitalized version of */
function getFieldName(field) {
	if ($(field.id+'-label')) {
		var fieldStr = $(field.id+'-label').innerHTML;
		// strip out <input /> tags (if the <input> is inside the <label> as it is in comments.php)
		fieldStr = fieldStr.replace(/<input[^>]+\/?>/g,'');
		// strip out <span>foo</span> fields and whatnot, such as (required) (not shown) in comments form
		fieldStr = fieldStr.replace(/<[^>]+>[^<]+<[^>]+>/g,'').replace(/[-_]/g,' ').replace(/\:/,'').trim();
	} else {
		// use field's name if <label> can't be found
		var fieldStr = field.name.replace(/-/g,' ').trim().capitalize();
	}
	return fieldStr;
}

function isEmail(str) {
	   var isEmail  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return isEmail.test(str);
}

/*  Simple form validator -- checks for inputs with class 'required' -- also validates field 'email' if present */
function checkForm(formToCheck,useAlert) {
	var errorReturn = new Array();
	var focusAfter = '';

	var reqFields = $(formToCheck).getElements('input.required,select.required');
	reqFields.forEach(function(field){
		if ($(field.id+'-label')) {$(field.id+'-label').removeClass('err');}
		if (field.value.trim() == '') {
			focusAfter = (focusAfter == '') ? field : focusAfter; // Set focus to first error after check
			var verb = (field.type.match('select')) ? 'select' : 'enter';
			errorReturn.push('Please ' + verb + ' a value for ' + getFieldName(field) + ".\n");
		}
	});
	   
	var emailFields = $(formToCheck).getElements('.isEmail');
	emailFields.forEach(function(field){
   		if (!isEmail(field.value))
   		{
   			focusAfter = (focusAfter == '') ? field : focusAfter;
   			errorReturn.push('Please enter a valid email for ' + getFieldName(field) + ".\n");
   		}
	});	
	
	if (errorReturn.length > 0)
	{
		if ($(focusAfter.id+'-label')) {$(focusAfter.id+'-label').addClass('err');}
		focusAfter.focus();
		// if (useAlert) {
			alert(errorReturn[0]);
		// } else {
		// 	slideAlert(errorReturn[0],'error');
		// }
		return false;
	} else {
		return true;
	}
}

