// (c) Neoco

add_event_simple(window,"load",initialise_validation);add_event_simple(window,"load",initialise_status);var focussed=false;var auflookup=new Object();function initialise_status()
{var status=document.getElementById("status");if(status)
status.onchange=status_update;return true;}
function status_update(e)
{var status=document.getElementById("status");if(!status)
return true;var fieldset=status;while(fieldset.tagName.search(/fieldset/gi)==-1&&fieldset.parentNode)
{fieldset=fieldset.parentNode;}
if(fieldset.tagName.search(/fieldset/gi)==-1)
return true;fieldset.className="status "+status.options[status.selectedIndex].value;return true;}
function initialise_validation()
{var forms=document.getElementsByTagName("form");if(!forms)
return true;for(var fi=0;fi<forms.length;fi++)
{if(forms[fi].className.search(/disablekeyup/gi)!=-1)
var disablekeyup=true;else
var disablekeyup=false;if(forms[fi].className.search(/validate/)!=-1)
{var aufpattern=/["' ]{1}auf([^"' ]+)/i;var elements=forms[fi].getElementsByTagName("input");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(forms[fi].className.search(/realtime/)!=-1)
{elements[i].onblur=validation_realtime;if(!disablekeyup)
elements[i].onkeyup=validation_realtime;if(elements[i].type!="textbox")
elements[i].onclick=validation_realtime;}
if(elements[i].className.search(/cancel/)!=-1&&elements[i].type.search(/(submit)|(image)/gi)!=-1)
elements[i].onclick=validation_cancel_and_submit;var results=aufpattern.exec(elements[i].className);if(results)
{var updatefrom=document.getElementById(results[1]);if(updatefrom)
{auflookup[updatefrom.id]=elements[i].id;add_event_simple(updatefrom,'keyup',auf_update);}}}}
var elements=forms[fi].getElementsByTagName("select");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(forms[fi].className.search(/realtime/)!=-1)
{elements[i].onblur=validation_realtime;if(!disablekeyup)
elements[i].onkeyup=validation_realtime;elements[i].onclick=validation_realtime;}}}
var elements=forms[fi].getElementsByTagName("textarea");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(forms[fi].className.search(/realtime/)!=-1)
{elements[i].onblur=validation_realtime;if(!disablekeyup)
elements[i].onkeyup=validation_realtime;}}}
if(forms[fi].className.search(/submission/)!=-1)
forms[fi].onsubmit=validation_submit;}
if(forms[fi].className.search(/auto-focus/)!=-1)
{var firstitem=false;var inputs=forms[fi].getElementsByTagName("input");for(var c=0;c<inputs.length&&!focussed;c++)
{if(inputs[c].type=="text"||inputs[c].type=="password")
{if(!firstitem)
firstitem=inputs[c];if(inputs[c].className.search(/focuson/gi)!=-1)
{focussed=true;inputs[c].focus();}}}
var textareas=document.getElementsByTagName("textarea");for(var c=0;c<textareas.length&&!focussed;c++)
{if(!firstitem)
firstitem=textareas[c];if(textareas[c].className.search(/focuson/gi)!=-1)
{focussed=true;textareas[c].focus();}}
if(!focussed&&firstitem)
firstitem.focus();}
if(forms[fi].className.search(/showerronload/gi)!=-1)
validation_show_failures(forms[fi]);}
return true;}
function auf_update(e)
{var targ;if(!e)var e=window.event;if(e.target)targ=e.target;else if(e.srcElement)targ=e.srcElement;if(targ.nodeType==3)
targ=targ.parentNode;if(!auflookup[targ.id])
return true;var updateelement=document.getElementById(auflookup[targ.id]);if(!updateelement)
return true;if(updateelement.className.search(/vpermlink/i)!=-1)
updateelement.value=targ.value.replace(/[^a-zA-Z0-9 \-]/g,'').replace(/ /g,'-');else
updateelement.value=targ.value;return true;}
function fetch_field_value(field)
{if(field.type=="radio")
{var radios=document.getElementsByName(field.name);for(var i=0;i<radios.length;i++)
{if(radios[i].checked)
return radios[i].value;}
return"";}
else if(field.type=="checkbox")
return(field.checked?field.value:"");else
return field.value;}
function validation_realtime(e)
{if(!e)var e=window.event;var vparams=this.className.split(" ");var value=fetch_field_value(this);var valid=validation_validate(value,vparams,e);if(valid&&this.className.search(/vpwd/gi)!=-1)
{if(this.id.search(/_2$/)!=-1)
{var otherid=this.id.replace(/_2$/,"_1",this.id);var other=document.getElementById(otherid);if(other&&other.value!=value)
{if(!e.type||e.type!='keyup')
valid=false;}}}
var id="vi"+this.id;if(this.type=="radio")
validationcontainer=document.getElementById("vi"+this.name);else
validationcontainer=document.getElementById("vi"+this.id);validation_update_inline_messages(valid,validationcontainer);return true;}
function validation_tinymce_change_callback(inst)
{return true;}
function validation_tinymce_event_callback(e)
{if(e.type=="keyup")
{var textareaid=tinyMCE.selectedInstance.formTargetElementId;var editorid=tinyMCE.selectedInstance.editorId;var textarea=document.getElementById(textareaid);if(textarea)
{var validationcontainer=document.getElementById("vi"+textarea.id);obj=document.getElementById(editorid);if(obj.contentDocument)
value=obj.contentDocument.body.innerHTML;else
value=top.frames[editorid].document.body.innerHTML;value=value.replace(/(<([^>]+)>)/gi,"");var vparams=textarea.className.split(" ");var valid=validation_validate(value,vparams);validation_update_inline_messages(valid,validationcontainer);}}
return true;}
function validation_validate(value,vparams,event)
{var valid=true;for(var c=0;c<vparams.length&&valid;c++)
{if(vparams[c]=="vreq")
{if(value=='')
{if(!event||!event.type||event.type!='keyup'||event.keyCode==8)
valid=false;}}
else if(vparams[c].substr(0,4)=="vmin")
{var length=vparams[c].substr(4);if(value.length<length&&value!="")
{if(!event||!event.type||event.type!='keyup'||event.keyCode==8)
valid=false;}}
else if(vparams[c].substr(0,4)=="vmax")
{var length=vparams[c].substr(4);if(value.length>length)
valid=false;}
else if(vparams[c]=="vemail")
{var filter=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;if(value!=''&&!filter.test(value))
{if(!event||!event.type||event.type!='keyup')
valid=false;}}
else if(vparams[c].substr(0,7)=="vformat")
{var formats=vparams[c].substr(7).split(";");var match=false;for(c=0;c<formats.length&&!match;c++)
{var regexp=new RegExp("\."+formats[c]+"$","gi");if(regexp.test(value))
match=true;}
if(value!=''&&!match)
valid=false;}
else if(vparams[c].substr(0,4)=="vpwd")
{}
else if(vparams[c].substr(0,5)=="vilmx")
{var max=vparams[c].substr(5);var intvalue=value>0?Math.floor(value):Math.ceil(value);if(value!=""&&(value!=intvalue||intvalue>max))
valid=false;}
else if(vparams[c].substr(0,5)=="vilmn")
{var min=vparams[c].substr(5);var intvalue=value>0?Math.floor(value):Math.ceil(value);if(value!=""&&(value!=intvalue||intvalue<min))
valid=false;}
else if(vparams[c]=="vpermlink")
{var filter=/^([a-zA-Z0-9\-])+$/;if(value!=''&&!filter.test(value))
{if(!event||!event.type||event.type!='keyup')
valid=false;}}}
return valid;}
function validation_update_inline_messages(valid,validationcontainer)
{if(!validationcontainer)
return true;if(valid)
{if(validationcontainer.className.search(/indi-error/gi)!=-1)
validationcontainer.className=validationcontainer.className.replace(/indi-error/gi,"indi-success");else if(validationcontainer.className.search(/error/gi)!=-1)
validationcontainer.className=validationcontainer.className.replace(/error/gi,"");}
else
{if(validationcontainer.className.search(/indi-success/gi)!=-1)
validationcontainer.className=validationcontainer.className.replace(/indi-success/gi,"indi-error");else if(validationcontainer.className.search(/indi-error/gi)==-1&&validationcontainer.className.search(/error/gi)==-1)
validationcontainer.className+=" error";}
return true;}
function validation_show_failures(form)
{if(form.tagName.search(/form/gi)==-1||form.className.search(/validate/)==-1)
return true;var valid;var validationcontainer;var elements=form.getElementsByTagName("input");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(elements[i].type=="radio")
validationcontainer=document.getElementById("vi"+elements[i].name);else
validationcontainer=document.getElementById("vi"+elements[i].id);valid=validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" "));validation_update_inline_messages(valid,validationcontainer);}}
var elements=form.getElementsByTagName("select");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{validationcontainer=document.getElementById("vi"+elements[i].id);valid=validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" "));validation_update_inline_messages(valid,validationcontainer);}}
var elements=form.getElementsByTagName("textarea");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{validationcontainer=document.getElementById("vi"+elements[i].id);valid=validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" "));validation_update_inline_messages(valid,validationcontainer);}}
return true;}
function validation_submit(e)
{var targ;if(!e)var e=window.event;if(e.target)targ=e.target;else if(e.srcElement)targ=e.srcElement;if(targ.nodeType==3)
targ=targ.parentNode;if(targ.className.search(/validate/)==-1)
return true;validation_show_failures(targ);var validation_error_fields=new Object();var validationerror=false;var elements=targ.getElementsByTagName("input");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(!validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" ")))
{validation_error_fields[elements[i].name]=fetch_field_label(elements[i]);validationerror=true;}}}
var elements=targ.getElementsByTagName("select");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(!validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" ")))
{validation_error_fields[elements[i].name]=fetch_field_label(elements[i]);validationerror=true;}}}
var elements=targ.getElementsByTagName("textarea");if(elements&&elements.length>0)
{for(var i=0;i<elements.length;i++)
{if(!validation_validate(fetch_field_value(elements[i]),elements[i].className.split(" ")))
{validation_error_fields[elements[i].name]=fetch_field_label(elements[i]);validationerror=true;}}}
if(validationerror)
{validation_alert(targ,validation_error_fields);if(targ.className.search(/hilighterrors/gi)==-1)
targ.className=targ.className+" hilighterrors";return false;}
return true;}
function validation_cancel_and_submit(e)
{var targ;if(!e)var e=window.event;if(e.target)targ=e.target;else if(e.srcElement)targ=e.srcElement;if(targ.nodeType==3)
targ=targ.parentNode;var protect=0;while(targ.tagName!="FORM"&&protect<10&&targ.parentNode)
{targ=targ.parentNode;protect++;}
if(targ.tagName=="FORM")
targ.className=targ.className.replace(/validate/gi,"");return true;}
function fetch_field_label(element)
{var validationcontainer=document.getElementById("vi"+element.name);if(!validationcontainer)
return element.name;var labels=validationcontainer.getElementsByTagName("label");if(!labels||labels.length==0)
return element.name;var spans=labels[0].getElementsByTagName("span");if(spans&&spans.length==1)
return spans[0].innerHTML;else
return labels[0].innerHTML;}
function validation_alert(form,validation_error_fields)
{var title="Problem With Form";var body="There are problems with the following form fields:<br />#__FIELDS__#<br />Please correct these problems and then try again.";var buttons=false;for(var i=0;i<form.elements.length;i++)
{switch(form.elements[i].name)
{case"verr_title":title=form.elements[i].value;break;case"verr_description":body=form.elements[i].value;break;case"verr_button":buttons={101:form.elements[i].value};break;}}
var fieldlabels="";for(var x in validation_error_fields)
{if(fieldlabels!="")
fieldlabels+=", ";fieldlabels+=validation_error_fields[x];}
body=body.replace("#__FIELDS__#",fieldlabels);clever_alert("error",title,body,buttons,false);}