var vf_msg_fld=new Array();
var vf_err_fld=new Array();
var vfi_warn_msg;
function vf_load(form_name){
	var frm=document.getElementById(form_name);
	if(!frm){
		alert("Form "+form_name+" not available!")
		return false;
	}
	var myElement = document.createElement("input");
	myElement.setAttribute("type","hidden");
	myElement.setAttribute("name","vf_checked");
	myElement.setAttribute("id","vf_checked");
	myElement.setAttribute("value","false");
	frm.appendChild(myElement)
//	frm.innerHTML="<input type='hidden' name='vf_checked' id='vf_checked' value='false' />\n"+frm.innerHTML;
	var fld=frm.vf_focus;
	if(fld){
		if(typeof(frm[fld.value])=="undefined"){
			alert("Unable to set focus to '"+fld.value+"' in form '"+frm.name+"' as it does not exist!");
		}else{
			frm[fld.value].focus();
		}
	}
	var vf_dates=frm.vf_date;
	if(vf_dates){
		var flds=vf_dates.value.split(",");
		for(var f=0; f<flds.length; f++){
			if(frm[flds[f]].value.length!=0){
				fld_parts=frm[flds[f]].value.split("-")
				frm[flds[f]].value=fld_parts[2]+"/"+fld_parts[1]+"/"+fld_parts[0]
			}
		}
	}
}

function vf_form(form_name){
	var frm=document.getElementById(form_name);
	if(!frm){
		alert("Form "+form_name+" not available!")
		return false;
	}
	var errors=0;
	var warnings=0;
	vfi_warn_msg = "";
	for(var fld in vf_err_fld){
		vf_set_ok(frm,frm[fld])
	}

	var tags=frm.getElementsByTagName("span");
	for(var s=tags.length-1;s>=0;s=s-1){
		if(tags[s].id=="vfmsg"){
			tags[s].parentNode.removeChild(tags[s]);
		}
	}
	if(frm.vf_required){ errors+=vf_required(frm,frm.vf_required.value);}
	if(frm.vf_integer) { errors+=vf_integer(frm,frm.vf_integer.value);}
	if(frm.vf_decimal) { errors+=vf_decimal(frm,frm.vf_decimal.value);}
	if(frm.vf_financial) { errors+=vf_financial(frm,frm.vf_financial.value);}
	if(frm.vf_date) { errors+=vf_date(frm,frm.vf_date.value);}
	if(frm.vf_time) { errors+=vf_time(frm,frm.vf_time.value);}
	if(frm.vf_colour) { errors+=vf_colour(frm,frm.vf_colour.value);}
	if(frm.vf_length) { errors+=vf_length(frm,frm.vf_length.value);}
	if(frm.vf_email) { errors+=vf_email(frm,frm.vf_email.value);}
	if(frm.vf_emaildomainlist) { errors+=vf_emaildomainlist(frm,frm.vf_emaildomainlist.value);}
	if(frm.vf_ipaddr) { errors+=vf_ipaddr(frm,frm.vf_ipaddr.value);}
	if(frm.vf_ipaddrlist) { errors+=vf_ipaddrlist(frm,frm.vf_ipaddrlist.value);}
	if(frm.vf_url) { errors+=vf_url(frm,frm.vf_url.value);}
	if(frm.vf_domain) { errors+=vf_domain(frm,frm.vf_domain.value);}
	if(frm.vf_domainlist) { errors+=vf_domainlist(frm,frm.vf_domainlist.value);}
	if(frm.vf_domainip) { errors+=v(frm,frm.vf_domainip.value);}
	if(frm.vf_domainiplist) { errors+=vf_domainiplist(frm,frm.vf_domainiplist.value);}
	if(frm.vf_compare) { errors+=vf_compare(frm,frm.vf_compare.value);}
	if(frm.vf_unique) { errors+=vf_unique(frm,frm.vf_unique.value);}
	if(frm.vf_exists) { errors+=vf_exists(frm,frm.vf_exists.value);}
	if(frm.vf_nzexists) { errors+=vf_nzexists(frm,frm.vf_nzexists.value);}
	if(frm.vf_email_unique) { errors+=vf_email_unique(frm,frm.vf_email_unique.value);}
	if(frm.vf_email_registered) { errors+=vf_email_registered(frm,frm.vf_email_registered.value);}
	if(frm.vf_file_type) { errors+=vf_file_type(frm,frm.vf_file_type.value);}
	if(errors==0 && frm.vf_file_exists) { warnings+=vf_file_exists(frm,frm.vf_file_exists.value);}
	if(errors!=0){
		if(typeof(frm.vf_checked)!="undefined") { frm.vf_checked.value="Failed"; }
		return false;
	}else{
		var carry_on=true
		if(typeof(frm.vf_checked)!="undefined") { frm.vf_checked.value="Passed"; }
		if(warnings==1){
			carry_on=window.confirm(vfi_warn_msg+"\n\rAre you sure that you wish to continue?");
		}else if(warnings!=0){
			carry_on=window.confirm(warnings +" warnings exist. Are you sure that you wish to continue?");
		}
		if(carry_on){
			if(frm.vf_date){
				var flds=frm.vf_date.value.split(",");
				for(var f=0; f<flds.length; f++){
					if(frm[flds[f]].value.length!=0){
						fld_parts=frm[flds[f]].value.split("/")
						if(fld_parts[0].length==1) var dd="0"+fld_parts[0]; else dd=fld_parts[0];
						if(fld_parts[1].length==1) var mm="0"+fld_parts[1]; else mm=fld_parts[1];
						frm[flds[f]].value=fld_parts[2]+"-"+mm+"-"+dd
					}
				}
			}
		}
		return carry_on
	}
}

function vfi_ok2_test(field){
	if(field=="undefined"){
		alert("VF: "+field+" does not exist!");
		return false;
	}
	if(field.value.length==0) { return false; }
	if(typeof vf_err_fld[field.name] == "undefined" ) { return true; }
	return !vf_err_fld[field.name];
}

function vf_integer(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(/[^0-9]/g.test(frm[flds[f]].value)){
				vf_set_error(frm,frm[flds[f]],"Must be numeric (0-9).");
				msg++;
			}
		}
	}
	return msg;
}

function vf_decimal(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(/^[0-9]{1,}\.[0-9]{1,}$/.test(frm[flds[f]].value)){
			}else{
				vf_set_error(frm,frm[flds[f]],"Must be numeric (0-9) with a decimal point.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_financial(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(/^[0-9]{1,}\.[0-9]{2}$/.test(frm[flds[f]].value)){
			}else{
				vf_set_error(frm,frm[flds[f]],"Must be numeric (with two decimals).");
				msg++;
			}
		}
	}
	return msg;
}

function vf_colour(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(frm[flds[f]].value.length!=7){
				vf_set_error(frm,frm[flds[f]],"Must be hash and six hexadecimal digits.");
				msg++;
			}else if(/^#{1}[0-9A-Fa-f]{6}$/.test(frm[flds[f]].value)){
			}else{
				vf_set_error(frm,frm[flds[f]],"Must be hash and six hexadecimal digits.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_email(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var addr_parts;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			addr_parts = frm[flds[f]].value.split("@");
			if(addr_parts.length!=2){
				vf_set_error(frm,frm[flds[f]],"Must contain one, and only one, @ sign.");
				msg++;
			}else if(frm[flds[f]].value.indexOf("..")!=-1){
				vf_set_error(frm,frm[flds[f]],"Must not contain consecutive full stops.");
				msg++;
			}else if(addr_parts[0].substr(0,1)=="."){
				vf_set_error(frm,frm[flds[f]],"Username must not start with a full stop.");
				msg++;
			}else if(addr_parts[0].substr(addr_parts[0].length-1,1)=="."){
				vf_set_error(frm,frm[flds[f]],"Username must not finish with a full stop.");
				msg++;
			}else if(/[^a-zA-Z0-9\-_.]/g.test(addr_parts[0])){
				vf_set_error(frm,frm[flds[f]],"Username can only contain letters, numbers, dashes, underscores and full stops.");
				msg++;
			}else{
				var validity=vfi_domain(addr_parts[1],"Domain name m")
				if(validity!==true){
					vf_set_error(frm,frm[flds[f]],validity);
					msg++;
				}
			}
		}
	}
	return msg;
}

function vf_emaildomainlist(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var validity;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var sub_fields = frm[flds[f]].value.split(",");
			for(var s=0;s<sub_fields.length; s++){
				if(sub_fields[s].substr(0,1)!="@"){
					validity="Must be a comma seperated list. Each entry must start with an @.";
					break;
				}
				validity=vfi_domain(sub_fields[s].substr(1),"Must be a comma seperated list. Each entry m");
				if(validity!==true) break;
			}
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
		}
	}
	return msg;
}

function vf_unique(frm,field_list){    // form field to be tested, table, WHERE clause
	var flds=field_list.split(",");
	var msg=0;
	var s,e,where, f_fld;
	for(var f=0; f<flds.length; f=f+3){
		if(vfi_ok2_test(frm[flds[f]])){
			if(flds[f+2].length!=0){
				e=0;
				s = flds[f+2].indexOf("{");
				where="";
				while(s!=-1){
					where+=flds[f+2].substring(e,s);
					e=flds[f+2].indexOf("}",s+1)
					f_fld=flds[f+2].substring(s+1,e);
					where+=frm[f_fld].value;
					s=flds[f+2].indexOf("{",e+1);
				}
				where+=flds[f+2].substring(e+1);
			}else{
				where=flds[f+2];
			}
			if(!vfa_unique(flds[f+1],where)){
				vf_set_error(frm,frm[flds[f]],"'"+frm[flds[f]].value+"' already present.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_exists(frm,field_list){    // form field to be tested, table, WHERE clause
	var flds=field_list.split(",");
	var msg=0;
	var s,e,where, f_fld;
	for(var f=0; f<flds.length; f=f+3){
		if(vfi_ok2_test(frm[flds[f]])){
			if(flds[f+2].length!=0){
				e=0;
				s = flds[f+2].indexOf("{");
				where="";
				while(s!=-1){
					where+=flds[f+2].substring(e,s);
					e=flds[f+2].indexOf("}",s+1)
					f_fld=flds[f+2].substring(s+1,e);
					where+=frm[f_fld].value;
					s=flds[f+2].indexOf("{",e+1);
				}
				where+=flds[f+2].substring(e+1);
			}else{
				where=flds[f+2];
			}
			if(vfa_unique(flds[f+1],where)){
				vf_set_error(frm,frm[flds[f]],"'"+frm[flds[f]].value+"' does not exist.");
				msg++;
			}
		}
	}
	return msg;
}


function vf_nzexists(frm,field_list){    // form field to be tested, table, WHERE clause
	var flds=field_list.split(",");
	var msg=0;
	var s,e,where, f_fld;
	for(var f=0; f<flds.length; f=f+3){
		if(vfi_ok2_test(frm[flds[f]]) && frm[flds[f]].value!=0){
			if(flds[f+2].length!=0){
				e=0;
				s = flds[f+2].indexOf("{");
				where="";
				while(s!=-1){
					where+=flds[f+2].substring(e,s);
					e=flds[f+2].indexOf("}",s+1)
					f_fld=flds[f+2].substring(s+1,e);
					where+=frm[f_fld].value;
					s=flds[f+2].indexOf("{",e+1);
				}
				where+=flds[f+2].substring(e+1);
			}else{
				where=flds[f+2];
			}
			if(vfa_unique(flds[f+1],where)){
				vf_set_error(frm,frm[flds[f]],"'"+frm[flds[f]].value+"' does not exist.");
				msg++;
			}
		}
	}
	return msg;
}
function vf_email_unique(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(!vfa_unique("users","email=\""+frm[flds[f]].value+"\"")){
				vf_set_error(frm,frm[flds[f]],"Email Address already registered in this website.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_email_registered(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(vfa_unique("users","email=\""+frm[flds[f]].value+"\"")){
				vf_set_error(frm,frm[flds[f]],"Email Address is not registered in this website.");
				msg++;
			}
		}
	}
	return msg;
}

function vfi_ipaddr(field,msg_prefix){
	if(/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/.test(field)){
		return true;
	}else{
		return msg_prefix+" four sets of 1-3 numerics seperated by dots.";
	}
}

function vf_ipaddr(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var validity=vfi_ip_addr(test(frm[flds[f]].value),"Must be");
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
		}
	}
	return msg;
}

function vf_ipaddrlist(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var sub_fields = frm[flds[f]].value.split(",");
			for(var s=0;s<sub_fields.length; s++){
				var validity=vfi_ipaddr(sub_fields[s],"Must be a comma seperated list of");
				if(validity!==true) break;
			}
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
		}
	}
	return msg;
}

function vfi_domain(field,msg_prefix){
	if(field.indexOf("..")!=-1){
		return msg_prefix+"ust not contain consecutive full stops.";
	}else if(field.substr(0,1)=="."){
		return msg_prefix+"ust not start with a full stop.";
	}else if(field.substr(field.length-1,1)=="."){
		return msg_prefix+"ust not finish with a full stop.";
	}else if(field.indexOf(".")==-1){
		return msg_prefix+"ust contain at least one full stop.";
	}else if(/[^a-zA-Z0-9\-.]/g.test(field)){
		return msg_prefix+"ay only contain letters, numbers, dashes and full stops.";
	}else{
		return true;
	}
}

function vf_testlink(fld){
	var ws=document.getElementById(fld);
	var pop_test=window.open("http://"+ws.value,"","width=512,height=384,resizable,scrollbars");
	return false;
}

function vf_domain(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var addr_parts;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var validity = vfi_domain(frm[flds[f]].value,"M");
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
		}
	}
	return msg;
}

function vf_url(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var addr_parts;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var sub_fields = frm[flds[f]].value.split("/");
			var validity = vfi_domain(sub_fields[0],"M");
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
/*			for (s=1;s<sub_fields.length; s++){
				var validity = vfi_domain(sub_fields[s],"M");
				if(validity!==true) break;
			}
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			} */
		}
	}
	return msg;
}


function vf_domainlist(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var sub_fields = frm[flds[f]].value.split(",");
			for(var s=0;s<sub_fields.length; s++){
				var validity=vfi_domain(sub_fields[s],"Must be a comma seperated list. Each entry m");
				if(validity!==true) break;
			}
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],validity);
				msg++;
			}
		}
	}
	return msg;
}

function vf_domainip(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var addr_parts;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var validity=vfi_domain(frm[flds[f]].value,"Can be a Domain name or an IP address. Domain names m");
			if(validity!==true){
				vf_set_error(frm,frm[flds[f]],"M");
				msg++;
			}else{
				validity=vfi_ipaddr(frm[flds[f]].value,"Can be a Domain name or an IP address. IP addresses must be");
				if(validity!==true){;
					vf_set_error(frm,frm[flds[f]],"M");
					msg++;
				}
			}
		}
	}
	return msg;
}

function vf_domainiplist(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var validity1, validity2;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			var sub_fields = frm[flds[f]].value.split(",");
			for(var s=0;s<sub_fields.length; s++){
				validity1=vfi_domain(sub_fields[s],"Domain names m");
				validity2=vfi_ipaddr(sub_fields[s],"IP addresses must be");
				if(validity1!==true && validity2!==true) break;
			}
			if(validity1!==true && validity2!==true){
				vf_set_error(frm,frm[flds[f]],"1Must be a comma seperated list of Domain names or IP addresses. "+validity1+" "+validity2);
				msg++;
			}
		}
	}
	return msg;
}

function vf_required(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f++){
		if(typeof frm[flds[f]]=="undefined"){
			alert("VF: "+flds[f]+" does not exist!");
			msg++;
			return false;
		}
		if(frm.vf_editor && frm.vf_editor.value=="tinyMCE" && frm[flds[f]].type==="textarea"){
			if(tinyMCE.get(flds[f]).getContent().length==0) {
				vf_set_error(frm,frm[flds[f]],"This field must be supplied.");
				msg++;
			}
		}else{
			if(frm[flds[f]].value.length==0) {
				vf_set_error(frm,frm[flds[f]],"This field ("+frm[flds[f]].id+") must be supplied.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_date(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var d_part;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(!(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/.test(frm[flds[f]].value))){
				vf_set_error(frm,frm[flds[f]],"Not a valid date (dd/mm/yyyy).");
				msg++;
			}else{
				d_part=frm[flds[f]].value.split("-");
				var year = eval(d_part[2]);
				var month = eval(d_part[1]);
				var day= eval(d_part[1]);
				if(day>31){
					vf_set_error(frm,frm[flds[f]],"Not a valid date (day greater than 31).");
					msg++;
				}else if(month>12){
					vf_set_error(frm,frm[flds[f]],"Not a valid date (month greater than 12).");
					msg++;
				}else if((month==2 && day>gl_daysInFebruary(year)) || day > daysInMonth[month]){
					vf_set_error(frm,frm[flds[f]],"Not a valid date (day not valid for entered month/year).");
					msg++;
				}else if(year<1900 ||  year>2100){
					vf_set_error(frm,frm[flds[f]],"Not a valid date (year not between 1900 and 2100).");
					msg++;
				}
			}
		}
	}
	return msg;
}

function vf_time(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var t_part;
	for(var f=0; f<flds.length; f++){
		if(vfi_ok2_test(frm[flds[f]])){
			if(!(/^[0-9]{2}:[0-9]{2}$/.test(frm[flds[f]].value))){
					vf_set_error(frm,frm[flds[f]],"Not a valid time (hh:mm).");
					msg++;
			}else{
				t_part=frm[flds[f]].value.split(":");
				if(t_part[0]>23){
					vf_set_error(frm,frm[flds[f]],"Not a valid time (hour greater than 23).");
					msg++;
				}else if(t_part[1]>59){
					vf_set_error(frm,frm[flds[f]],"Not a valid time (minute greater than 59).");
					msg++;
				}
			}
		}
	}
	return msg;
}

function vf_compare(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	for(var f=0; f<flds.length; f=f+3){
		if(vfi_ok2_test(frm[flds[f]]) || vfi_ok2_test(frm[flds[f+2]])){
			var test = 'if(!(frm[flds[f]].value '+flds[f+1]+' frm[flds[f+2]].value)) { vf_set_error(frm,frm[flds[f]],"Must be '+flds[f+1]+' '+frm[flds[f+2]].name.replace("_"," ")+'."); msg++;  }';
			eval(test);
		}
	}
	return msg;
}

function vf_length(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var test, fld_len;
	for(var f=0; f<flds.length; f=f+2){
		if(vfi_ok2_test(frm[flds[f]])){
			fld_len=frm[flds[f]].value.length;
			test = 'if(!('+fld_len+flds[f+1]+')) { msg++; vf_set_error(frm,frm[flds[f]],"Must be '+flds[f+1]+' characters.");}';
			eval(test);
		}
	}
	return msg;
}

function vf_file_type(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var path, tags, parts;
	for(var f=0; f<flds.length; f=f+2){
		if(flds[f]=="file_*"){
			tags=frm.getElementsByTagName("input");
			for(var t=0;t<tags.length;t++){
				if(tags[t].id.substr(0,5)=="file_" && tags[t].value.length!=0){
					path = tags[t].value.split("\\");
					parts = path[path.length-1].split(".");
					if(flds[f+1].toLowerCase().indexOf(parts[parts.length-1].toLowerCase())==-1) {
						vf_set_error(frm,tags[t],"Wrong file type. Should be one of '"+flds[f+1]+"'.");
						msg++;
					}
				}
			}
		}else if(frm[flds[f]].value.length!=0){
			path = frm[flds[f]].value.split("\\");
			parts = path[path.length-1].split(".");
			if(flds[f+1].toLowerCase().indexOf(parts[parts.length-1].toLowerCase())==-1) {
				vf_set_error(frm,frm[flds[f]],"Wrong file type. Should be one of '"+flds[f+1]+"'.");
				msg++;
			}
		}
	}
	return msg;
}

function vf_file_exists(frm,field_list){
	var flds=field_list.split(",");
	var msg=0;
	var path, tags ;
	for(var f=0; f<flds.length; f=f+2){
		if(flds[f]=="file_*"){
			tags=frm.getElementsByTagName("input");
			for(var t=0;t<tags.length;t++){
				if(tags[t].id.substr(0,5)=="file_" && tags[t].value.length!=0){
					path = tags[t].value.split("\\");
					if(vfa_file_exists(frm['vf_target_dir'].value,path[path.length-1])) {
						vf_set_warning(frm,tags[t],"File already exists.");
						vfi_warn_msg = "File already exsists.";
						msg++;
					}
				}
			}
		}else if(frm[flds[f]].value.length!=0){
			path = frm[flds[f]].value.split("\\");
			if(vfa_file_exists(frm['vf_target_dir'].value,path[path.length-1])) {
				vf_set_warning(frm,frm[flds[f]],"File already exists.");
				vfi_warn_msg = "File already exsists";
				msg++;
			}
		}
	}
	return msg;
}

function vf_set_warning(frm,fld,message){
	vf_err_fld[fld.name]=false;
	if(frm.vf_message){
		var msg_fld = document.getElementById(fld.name+frm("vf_message").value);
		if(!vf_msg_fld[fld.name]) { vf_msg_fld[fld.name]=msg_fld.innerHTML; }
		msg_fld.style.color="white";
		msg_fld.style.background="orange";
		msg_fld.innerHTML=message;
	}else{
		fld.style.color="white";
		fld.style.background="orange";
		vfi_insertAfter(fld, "span", message);
	}
}

function vf_set_error(frm,fld,message){
	vf_err_fld[fld.name]=true;
	if(frm.vf_message){
		var msg_fld = document.getElementById(fld.name+frm.vf_message.value);
		if(typeof vf_msg_fld[fld.name] != "undefined") { vf_msg_fld[fld.name]=msg_fld.innerHTML; }
		msg_fld.style.color="white";
		msg_fld.style.background="red";
		msg_fld.innerHTML=message;
	}else{
		fld.style.color="white";
		fld.style.background="red";
		vfi_insertAfter(fld, "span", message);
	}
}

function vf_set_ok(frm,fld){
	fld.style.color="black";
	fld.style.background="white";
	vf_err_fld[fld.name]=false;
	if(frm.vf_message){
		var msg_fld = document.getElementById(fld.name+frm.vf_message.value);
		if(vf_msg_fld[fld.name]) { msg_fld.innerHTML=vf_msg_fld[fld.name]; }
		msg_fld.style.color="#999999";
		msg_fld.style.background="black";
	}
}

function vfi_insertAfter( referenceNode, newNode, message ){
    var myElement = document.createElement(newNode);
	myElement.innerHTML=message;
	myElement.setAttribute("id","vfmsg");
    var parent=referenceNode.parentNode;
	parent.insertBefore(myElement, referenceNode.nextSibling )
}

function vfa_file_exists(folder,filename){
	url=window.location.protocol+"//"+window.location.host+window.location.pathname+"?"+url_VF_file_exists+"&folder="+folder+"&filename="+filename+"&id="+document.activeElement.id;
	if(ajax_sendRequest(url,false)=="True"){
		return true;
	}else{
		return false;
	}
}

function vfa_unique(table,where){
	url=window.location.protocol+"//"+window.location.host+window.location.pathname+"?"+url_VF_field_unique+"&table="+table+"&where="+where;
	if(ajax_sendRequest(url,false)=="False"){
		return false;
	}else{
		return true;
	}
}