/*
	Javascript code written by PSLWeb.co.uk. Copyright ©2010 PSLWeb.co.uk - All Rights Reserved.
*/
function FFVClass(k,l){this.form=k;this.errorClass=(l)?l:'error';this.dataTypes=new Array();this.dataTypes.PrintNL="^[\\x20-\\x7E\\r\\n\\xA3]+$";this.dataTypes.Print="^[\\x20-\\x7E\\xa3]+$";this.dataTypes.PrintNLAll="^[\\x20-\\xFF\\r\\n\\xA3]+$";this.dataTypes.PrintAll="^[\\x20-\\xFF\\xa3]+$";this.dataTypes.Hex="^[A-Fa-f0-9]+$";this.dataTypes.Digits="^[\\d]+$";this.dataTypes.Real="^[\\+-]?[\\d]*[\\.]?[\\d]+$";this.dataTypes.Decimal="^[\\d]*[\\.]?[\\d]+$";this.dataTypes.Price="^[\\d]*[\\.]?[\\d]{1,2}$";this.dataTypes.Email="^([\\w-]+)(\\.[\\w-]+)*@([A-Za-z0-9-]+)(\\.[A-Za-z0-9-]+)*(\\.[a-z]{2,4})$";this.dataTypes.Alpha="^[A-Za-z]+$";this.dataTypes.Alnum="^[A-Za-z0-9]+$";this.dataTypes.DBDate="^[\\d]{4}\\-[\\d]{2}\\-[\\d]{2}$";this.dataTypes.Pwd="^[A-Za-z0-9]*[\\d][A-Za-z0-9]*$";this.dataTypes.Tripcode="^[A-Za-z0-9]+[#]?[A-Za-z0-9]*$";this.dataTypes.URL="^(([\\w]+:)?\\/\\/)?(([\\d\\w]|%[a-fA-f\\d]{2,2})+(:([\\d\\w]|%[a-fA-f\\d]{2,2})+)?@)?([\\d\\w][-\\d\\w]{0,253}[\\d\\w]\\.)+[\\w]{2,4}(:[\\d]+)?(\\/([-+_~.\\d\\w]|%[a-fA-f\\d]{2,2})*)*(\\?(&?([-+_~.\\d\\w]|%[a-fA-f\\d]{2,2})=?)*)?(#([-+_~.\\d\\w]|%[a-fA-f\\d]{2,2})*)?$";this.dataTypes.Telephone="^[\\d-\\(\\)\\+\\x20\\.]+$";this.dataTypes.Postcode="^[A-Za-z0-9]{2,4}(\\x20)?\\d[A-Za-z0-9]{2}$";this.dataTypes.FullName="^[A-Za-z-\\'\\x20]+$";this.dataTypes.Name="^[A-Za-z-\\']+$";this.dataTypes.AddrLines="^[A-Za-z0-9-\\x20\\.\\,\\'\\(\\)\\/]+$";this.dataTypes.AddrCCC="^[A-Za-z0-9-\\x20\\.\\(\\)]+$";this.dataTypes.Digits15="^[1-5]{1}$";this.dataTypes.Digits19="^[1-9]{1}$";this.skipValidation=false;this.setFocusByDefault=true;this.PwdMinLen=7;var m=this;this.changeImage=function(a,b,c){var d=document.getElementById(a.id+'Img');if(d){var e=d.src.lastIndexOf('/');if(e!=-1)d.src=d.src.substr(0,e+1)+b;d.alt=c}};this.setFieldError=function(a,b){m.addErrorClass(a);m.changeImage(a,'field0.gif',b)};this.clearFieldError=function(a){labelObj=document.getElementById(a.id+'Label');if(labelObj){regex=new RegExp("\\b"+m.errorClass+"\\b\\s*","g");labelObj.className=labelObj.className.replace(regex,"")}};this.addErrorClass=function(a){labelObj=document.getElementById(a.id+'Label');if(labelObj){var b=labelObj.className;if(b.search("\\"+m.errorClass+"\\b")==-1)labelObj.className=(b=="")?m.errorClass:b+' '+m.errorClass}};this.checkErrorClass=function(a){labelObj=document.getElementById(a.id+'Label');if(labelObj){var b=labelObj.className;return(b.search("\\"+m.errorClass+"\\b")!=-1)}};this.setFocus=function(a){if((a.type=='textarea')&&document.getElementById(a.id+'_ifr'))tinyMCE.execCommand('mceFocus',false,a.id);else try{a.focus()}catch(e){}};this.checkFormField=function(a,b){var c,labelObj,pattern,extValFunName;if((a.type=='textarea')&&document.getElementById(a.id+'_ifr')){tinyMCE.execCommand('mceFocus',false,a.id);tinyMCE.triggerSave()}var d=a.className.split(' ');var e=new RegExp("^FFV[01]{1}");var f="";var g=false;var h=d.length;for(var i=0;i<h;i++)if(e.test(d[i].substr(0,4))){g=(d[i].substr(3,1)=='1');f=d[i].substr(4);break}var j=a.value;if(j=="")if(g){m.changeImage(a,'field0.gif',"Data is required for this field");return true}else{m.changeImage(a,'fieldnull.gif',"");return false}else{pattern=m.dataTypes[f];if(!(pattern)){alert("Error: There is no defined fieldType for Regex Pattern: "+f);alert(a.id)}e=new RegExp(pattern);if(e.test(j)){extValFunName=a.id+'FFVExtVal';if(FFVClass.prototype[extValFunName])c=this[extValFunName](a);else c=true;if((c)&&(f=='Pwd')&&(j.length<m.PwdMinLen))c=false;if(c){m.changeImage(a,'field1.gif',"Data is in the correct format");if(b)m.clearFieldError(a);return false}else{m.changeImage(a,'field0.gif',"Data is not in the correct format for this field");return true}}else{m.changeImage(a,'field0.gif',"Data is not in the correct format for this field");return true}}};this.checkAllFormFields=function(a){var b=false;var c;for(var i=m.form.length-1;i>=0;i--){c=m.form[i];if((c.type=='text')||(c.type=='textarea')||(c.type=='password')){if((c.className.search("\\bFFV[01]{1}")!=-1)&&(m.checkFormField(c,a))){b=true;if(a){m.setFocus(c);m.addErrorClass(c)}}}}return b};this.checkKeyInput=function(e){if(!e)e=window.event;if(window.addEventListener)var a=e.target;else if(window.attachEvent)var a=e.srcElement;m.checkFormField(a,true)};this.externalEvent=function(e){if(!e)e=window.event;if(window.addEventListener)var a=e.target;else if(window.attachEvent)var a=e.srcElement;if(FFVClass.prototype.externalEventBlock)m.externalEventBlock(m,a)};this.setInitFocus=function(){var a=true;for(var i=0;i<m.form.length;i++){field=m.form[i];if((field.type=='text')||(field.type=='textarea')||(field.type=='password')||(field.type=='select-one')||(field.type=='select-multiple')){if(m.checkErrorClass(field)){m.setFocus(field);break}else{if((a)&&(m.setFocusByDefault)){m.setFocus(field);a=false}}}}};this.validate=function(e){if(!e)e=window.event;if(m.skipValidation)return true;else if(m.checkAllFormFields(true)){alert("Please correct form fields that are in error");m.preventDefault(e);return false}else if(FFVClass.prototype.validateExtra)if(m.validateExtra(m))return true;else{alert("Please correct form fields that are in error");m.preventDefault(e);return false}return true};this.confirmRequest=function(e){if(!e)e=window.event;if(window.addEventListener)var a=e.target;else if(window.attachEvent)var a=e.srcElement;if(a.type=='reset')if(confirm("Please confirm RESET of all form field data to their initial values")){m.form.reset();m.checkAllFormFields(false)}else m.preventDefault(e);else if((a.type=='submit')&&(a.className.search("\\bFFV[01]{1}Cancel")!=-1))if((a.className.search("\\bFFV0Cancel")!=-1)||(confirm("Please confirm CANCEL (form data will not be saved)")))m.skipValidation=true;else{m.checkAllFormFields(false);m.preventDefault(e)}else if((a.type=='submit')&&(a.className.search("\\bFFV[01]{1}Delete")!=-1))if((a.className.search("\\bFFV0Delete")!=-1)||(confirm("WARNING: Please confirm DELETE (this cannot be undone)")))m.skipValidation=true;else{m.checkAllFormFields(false);m.preventDefault(e)}else if((a.type=='image')&&(a.className.search("\\bFFV[01]{1}List")!=-1)){var b=m.form.rowCount.value;var c=0;var d;for(var i=0;i<b;i++){d="delID["+i+"]";if((m.form[d])&&(m.form[d].checked))c++}if(c>0){var f=(c>1)?"these "+c+" Entries?":"this Entry?";if((a.className.search("\\bFFV0List")!=-1)||(confirm("WARNING: Please confirm DELETE of "+f+" (this cannot be undone)")))m.skipValidation=true;else{m.checkAllFormFields(false);m.preventDefault(e);for(i=0;i<b;i++){d="delID["+i+"]";if(m.form[d])m.form[d].checked=false}}}else{m.checkAllFormFields(false);m.preventDefault(e)}}};this.addHandler=function(a,b,c){if(window.addEventListener)a.addEventListener(b,c,false);else if(window.attachEvent)a.attachEvent('on'+b,c);else a['on'+b]=c};this.preventDefault=function(e){if(e.preventDefault)e.preventDefault();else e.returnValue=false};this.rteHandleEvent=function(e){if(e.type=='keyup'){var a=tinyMCE.activeEditor.id;var b=m.form[a];var c=tinyMCE.get(a).getContent().length;if(c>0){m.changeImage(b,'field1.gif',"Data required is present");m.clearFieldError(b)}else m.changeImage(b,'field0.gif',"Data is required for this field")}};this.updateCounter=function(e){if(!e)e=window.event;if(window.addEventListener)var a=e.target;else if(window.attachEvent)var a=e.srcElement;var b=document.getElementById(a.id+'Counter');var c=document.getElementById(a.id+'CounterMaxLen');if((b)&&(c)){var d=c.value;var f=a.value.length;if(f>d){a.value=a.value.substr(0,d);f=d}var g='Characters remaining = '+(d-f);b.childNodes[0].nodeValue=g}};this.searchForm=function(n){if((n.nodeType==1)&&(n.type)){if((n.type=='textarea')&&(document.getElementById(n.id+'Counter')))this.addHandler(n,'keyup',this.updateCounter);if(n.className.search("\\bFFV[01]{1}")!=-1){if(n.type=='reset')this.addHandler(n,'click',this.confirmRequest);else if((n.type=='submit')&&(n.className.search("\\bFFV[01]{1}Cancel")!=-1))this.addHandler(n,'click',this.confirmRequest);else if((n.type=='submit')&&(n.className.search("\\bFFV[01]{1}Delete")!=-1))this.addHandler(n,'click',this.confirmRequest);else if((n.type=='image')&&(n.className.search("\\bFFV[01]{1}List")!=-1))this.addHandler(n,'click',this.confirmRequest);else this.addHandler(n,'keyup',this.checkKeyInput)}}var a=n.childNodes;var b=a.length;for(var i=0;i<b;i++)this.searchForm(a[i])};this.searchForm(this.form);this.addHandler(this.form,'submit',this.validate);if(FFVClass.prototype.initExtraPre)m.initExtraPre(m);this.checkAllFormFields(false);this.setInitFocus();if(FFVClass.prototype.initExtraPost)m.initExtraPost(m)};FFVClass.formList=new Array;FFVClass.init=function(){function searchForm(n){if((n.nodeType==1)&&(n.type)&&(n.className.search("\\bFFV[01]{1}")!=-1))return true;var a=n.childNodes;var b=a.length;for(var i=0;i<b;i++)if(searchForm(a[i]))return true;return false}var c,field,numFormFields,formList;var d=document.getElementsByTagName('form');numberOfForms=d.length;for(var i=0;i<numberOfForms;i++){c=d[i];if(searchForm(c))FFVClass.formList[i]=new FFVClass(c)}};runOnLoad(FFVClass.init);
