// JavaScript Document
function toggleHowHeader(fld, toggleVals, otherObjId){
	val = fld.options[fld.selectedIndex].value;
	//If this value is in toggleVals, we show the other object
	if(jQuery.inArray(val, toggleVals)>-1){
		$('#'+otherObjId).show();
	}else{
			$('#'+otherObjId).hide();
	}
}


function validateButton(btn) { //check radio button that one has been selected
	var cnt = -1;
	for (var i=0; i < btn.length; i++) {
		if (btn[i].checked) {
			cnt = i;
			i = btn.length;
		}
	}
	if (cnt > -1) return true;
	else return false;
}

function validateCheckBox(fld){
	/*check a checkbox field has been selected.
		In some cases, check box fields are 'grouped', i.e. _ yes _ no
		in this case, the field names have a common element and a numbered element, 
		i.e. checkbox_1, checkbox_2. Using a regexpression we decide if we're checking a group or
		just a single value
	*/
	var fldName=fld.name;
	//Use regular expression to test and extract the base field name (if present)
	var re = new RegExp("[\w]*(_[0-9]*)$");
  var m = re.exec(fldName);
  if (m != null) {
		//fld appears to be part of a group. Get the group name;
		grpName= fldName.substring(0, fldName.lastIndexOf(m[0]));
		//This isn't very efficient, but check all form fields that match this group name
		//and check at least one has been checked off, else return false
		for(y=0;y<fld.form.length;y++){
			var tempobj=fld.form.elements[y];
			if(typeof(tempobj.name)!='undefined' && tempobj.name.indexOf(grpName+"_")==0){
				//group element found
				if(tempobj.checked){
					return true;
				}
			}
		}
		return false;
	}else{
		//Field isn't part of a group. Return checked value
		return fld.checked;
	}
	return false;
}

function validateForm(which, quiet){
	var pass=true
	if (document.images){
		for (i=0;i<which.length;i++){
			var tempobj=which.elements[i];
			//if (tempobj.name.substring(0,8)=="required"){
			if (typeof(tempobj.type)!='undefined' && typeof(tempobj.className)!='undefined' && tempobj.className.indexOf("reqField")>=0 && tempobj.disabled==false){
if (((tempobj.type=="text"||tempobj.type=="textarea"||tempobj.type=="file"||tempobj.type=="password")&&tempobj.value=='')||
					(tempobj.type.toString().charAt(0)=="s" && tempobj.options!=null && tempobj.options.length>0 && (tempobj.selectedIndex==-1 || tempobj.options[tempobj.selectedIndex].value==-1||tempobj.options[tempobj.selectedIndex].text=='---'))||
						(tempobj.type=="radio" && !validateButton(which.elements[tempobj.name]))||
						(tempobj.type=="checkbox" && !validateCheckBox(tempobj))){
//alert(tempobj.name);
					pass=false;
					break;
					};
				};
			};
		};
		if (!pass){
			if(!quiet) alert("One or more of the required elements are not completed. Please complete them and re-submit the form" );
		return false;
	}else{
		return true;
	}
}

function fillForm(formName, flds){
	if ((x=MM_findObj(formName))!=null){//get form
		var els = x.elements; 
		for(i=0; i<els.length; i++){
			fld = els[i].name;
			//alert(els[i].type);
			fld = fld.replace(/[\[\]]/g, '');
			if(flds[fld] && flds[fld]!=""){ 
				switch(els[i].type){
					case "select-one" :
					case "select-multiple" :
							//alert(fld + "-"+flds[fld]);
							setOPTIONValue(els[i], null, flds[fld]);
							break;
					case "text":
						els[i].value= decodeURIComponent(flds[fld]);
						break;
					case "textarea":
						els[i].value= decodeURIComponent(flds[fld]);
						break;
					case "checkbox":
//						alert (flds[fld]);
						//els[i].checked = (flds[fld]) ? true : false;
						//els[i].checked = (flds[fld]==1) ? true : false;
						els[i].checked = (flds[fld] && flds[fld]!=0) ? true : false;
						break;
					case "radio":
						els[i].checked = (flds[fld]==els[i].value) ? true : false;
						break;
				}
				//Run the onchange event for updated field it present
				if(els[i].onchange) els[i].onchange();
			}
		}
	}
};

function MM_findObj(n, d) 
{ //v4.0
  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 && document.getElementById) x=document.getElementById(n); return x;
}

function setOPTIONValue(fld, index, value){
	if(index != null){
		fld.selectedIndex=index;
	}else if(value != null){
		//Get index of value;
		//alert(value);
		for(z=0;z<fld.length;z++){
			if(fld.options[z].value==value){
					//alert('Setting ' + fld.options[z].value);
					//fld.selectedIndex=z;
					fld.options[z].selected=true;
			}
		}
	}
}
