function formValidate(wOutDialog) {
	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("[]","");
			if($$('label[for="'+fKey+'"]').length > 0) $$('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 ) {
					if($$('label[for="'+fKey+'"]').length > 0) $$('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";						
					}
					
					if($$('label[for="'+fKey+'"]').length > 0) $$('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("[]","");		
			if($$('label[for="'+fKey+'"]').length > 0) $$('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;
		$('data').submit();
	}
}

// create hooks
Event.observe(window, 'load', function() {
	eleArr = $$('#data .required');
	for(x=0;x<eleArr.length;++x) {
		hookFormCheck(eleArr[x].id);
	}
});	
