function formValidate(wOutDialog,wOutSubmit) {
	err 		= new Array();
	formError 	= false;
	eleArr    	= $$('#data .required');
	for(x=0;x<eleArr.length;++x) {
		if(eleArr[x].id == 'narrative') {
			tinyMCE.triggerSave();
		}
		
		// store title
		if(eleArr[x].title != undefined && eleArr[x].title != "" ) fTitle = eleArr[x].title;
		else fTitle = "";
		
		if( $F(eleArr[x]) == "" || $F(eleArr[x]) == null || $F(eleArr[x]) == fTitle) {
			var fKey = String(eleArr[x].id).replace("[]","");
			$$('label[for="'+fKey+'"]')[0].className = 'error';
			eleArr[x].className = 'required error';

			// add blur check
			eleArr[x].onblur = function() {
				var fKey = String(this.id).replace("[]","");
				if($F(this) != "" && $F(this) != null ) {
					$$('label[for="'+fKey+'"]')[0].className = '';
					this.className = 'required';
					
					if(this.title != undefined && this.title != "" ) {
						sKey = (String(this.title).replace(" ","_").toLowerCase());
						$(sKey).style.textDecoration = "line-through";
					}
					
				} else {
					var dVal = this.title;
					var eVal = this.value;
					
					if(this.title != undefined && this.title != "" ) {
						this.value = dVal;
						this.style.color = "#6e6356";
						
						sKey = (String(this.title).replace(" ","_").toLowerCase());
						$(sKey).style.textDecoration = "none";						
					}
					
					$$('label[for="'+fKey+'"]')[0].className = 'error';
					this.className = 'required error';
				}
			}
			
			err[err.length] = eleArr[x];
			formError = true;
		
		} else {
			var fKey = String(eleArr[x].id).replace("[]","");		
			$$('label[for="'+fKey+'"]')[0].className = '';
			$(eleArr[x].id).className = 'required';
		}
	}
	// adds post validation
	if($('fStatus') == undefined) {
		var e = new Element('input', { type:'hidden', id:'fStatus', name:'fStatus',value:'0' });		
		$('data').insert(e);
	}
	// handles any errors
	if(formError == true) {
		display_error(err);
		$('fStatus').value = 0;
			
	} else {
		if(wOutDialog == undefined || wOutDialog == 0) {
			Dialog.info($('redirect').innerHTML, {windowParameters: {className:"alphacube", height:120, width:280, zIndex:100}, showProgress: true});
		}
		
		$('fStatus').value = 1;
		if(wOutSubmit == undefined || wOutSubmit == 0) {
			$('data').submit();
		}
	}
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}
function inArray(arr,val) {
   for(x=0;x<arr.length;++x) {
	   if(arr[x] == val) return true;
   }
   return false;
}
function clearData(frmName) {
	fEle = Form.getElements(frmName);
	for(x=0;x<fEle.length;++x) {
		var fKey = String(fEle[x].id).replace("[]","");
		if( fEle[x] != undefined ) {
			if(fEle[x].type == "text" || fEle[x].type == "checkbox" || fEle[x].type == "radio") fEle[x].value = "";
			if(fEle[x].nodeName == "SELECT") fEle[x].selectedIndex = null;
		}
	}
}
function display_error(errArr) {
	while($('error_list').firstChild) Element.remove($('error_list').firstChild);
 
	if(isArray(errArr) && errArr.length>0) {
		for(e=0;e<errArr.length;++e) {
			sKey = (String(errArr[e].title).replace(" ","_").toLowerCase());
			if(errArr[e].title != undefined && errArr[e].title != "" ) {
				$('error_list').insert("<li id='"+sKey+"'>"+errArr[e].title+" is required.</li>");
			}
		}
		if(errArr.length > 0) $('errors').style.display = "block";
	
	} else $('errors').style.display = "none";
	
	tmpArr = new Array();
	display_message(tmpArr);
}

function display_message(errArr) {
	while($('error_list-msg').firstChild) Element.remove($('error_list-msg').firstChild);
 
	if(isArray(errArr) && errArr.length>0) {
		for(e=0;e<errArr.length;++e) $('error_list-msg').insert("<li>"+errArr[e]+"</li>");
		if(errArr.length > 0) $('errors-msg').style.display = "block";
	
	} else $('errors-msg').style.display = "none";
}

function hookFormCheck(fKey) {
	if($(fKey)!=undefined && $(fKey).title!=undefined && $(fKey).title!="") {
		$(fKey).onfocus = function() {
			var fKey = String(this.id).replace("[]","");
			var dVal = hex_md5(this.title);
			var eVal = hex_md5(this.value);
			
			if(dVal == eVal) this.clear();
		}
		$(fKey).onblur = function() {
			var fKey = String(this.id).replace("[]","");
			var dVal = this.title;
			var eVal = this.value;
			
			if(eVal == "") {
				this.value = dVal;
				this.style.color = "#6e6356";

			} else {
				this.style.color = "#000000";
				(this.parentNode).className = '';
			}
		}
	}
}