function build_calendar(){var elemC=$e('calendar_'+this.name);elemC.input='form_'+this.name;elemC.onclick=function(){var call=new CalendarPopup('floatdiv');call.select($e(this.input),this.id,'dd/MM/yyyy');return false}}function selectOnFocus(){form_tick(this.target.name.replace("[]",""),null);return}var a={NOTNULL:{regexp:".+",errmsg:"Cannot be empty"},UNIQUE:{errmsg:"Is not unique",include:'lib/AjaxRequest.js',ajax:WWW+"xml/handler.php?invert=true",ajxmsg:"Is already in use"},MATCH:{errmsg:"Do not match"},EMAIL:{regexp:["[a-zA-Z0-9\\.-]+","@","[a-zA-Z0-9-]+","[\\.]","[a-zA-Z0-9\\.-]{1,10}"],errmsg:"Invalid Email Address - e.g. name@domain.com"},INTEGER:{regexp:["[0-9]+"],errmsg:"Use only numbers"},PASSWORD:{regexp:["[a-zA-Z0-9-]{6,20}"],errmsg:"Six or more alphanumerical characters long (e.g. pa55word)"},STRING:{regexp:["[a-zA-Z0-9 -]+"],errmsg:"Invalid string"},POSTCODE:{regexp:["[a-zA-Z]{1,2}","[0-9]{1,2}","[a-zA-Z]? ?","[0-9]","[a-zA-Z]{2}"],errmsg:"Invalid postcode - correct example \"CM3 2JW\"",include:'lib/AjaxRequest.js',ajax:WWW+"xml/location.php",ajxmsg:"Could not find postcode"},KEY:null,ADDDATE:null,DATE:{regexp:["[0-3]?","[0-9]","\/[0|1]?","[0-9]","\/([1|2][0|9])?","[0-9]{2}"],errmsg:"Invalid Date",include:['lib/AnchorPosition.js','lib/PopupWindow.js','lib/date.js','lib/CalendarPopup.js'],onbuild:build_calendar},TEXT:null,TIME:{regexp:["[0-2]","[0-9]",":","[0-6]","[0-9]"],errmsg:"Invalid time"},DATETIME:{include:['lib/AnchorPosition.js','lib/PopupWindow.js','lib/date.js','lib/CalendarPopup.js'],onbuild:build_calendar},CHECKBOX:null,RADIOS:null,SELECT:null,HIDDEN:null,FIXED:null,CATEGORY:{errmsg:"Select between <b>1</b> and <b>5</b> categories",onsubmit:function(){if(this.options.length===0){return false}for(var i=0;i<this.options.length;i++){this.options[i].selected=true}return true},include:[WWW+"xml/job_categories.js.php",'moi/jc.js'],onbuild:function(){var name=this.name.replace('[]','');JcPop.init({selects:['cat_'+name+'_1','cat_'+name+'_2','cat_'+name+'_3'],style_select:'cselect',style_select_blur:'cselect grey',select_onfocus:selectOnFocus,a:jc_a,b:[],form:'form',s:this})}},EDITOR:{onbuild:function(){$e('style_'+this.name).affiliate=this.name;$e('style_'+this.name).onclick=function(){var frame=$e(this.affiliate+'___Frame');this.innerHTML=(frame.height==="600"?"enlarge":"shrink")+" writing area";frame.height=(frame.height==="600"?"300px":"600px")}}},CONFIRMATION:{errmsg:"Incorrect",regexp:["[A-Za-z0-9]{6}"],include:"lib/AjaxRequest.js",ajax:WWW+"xml/confirmation_code.php",ajxmsg:"Incorrect, Check again",onbuild:function(){$e(this.name+"_refresh").onclick=function(){var target=this.id.replace('refresh','image');$e(target).src=WWW+'image_code.php?id='+Math.random()}}},URL:{regexp:"((ht|f)tp(s?):\\/\\/)?[a-z0-9]([a-z0-9\\.-]+)\\.([a-z]{1,4})(\\:[0-9]+)*(/($|[a-zA-Z0-9\\.\\,\\;\\?\\'\\\\\\+&%\\$#\\=~_\\-]+))*",errmsg:"Invalid URL"},EXISTS:{regexp:"Does not match any records",include:'lib/AjaxRequest.js',ajax:WWW+"xml/handler.php",ajxmsg:"Is not available"},PHONE:{regexp:["[0-9ext.()- ]{10,}"],errmsg:"Invalid Telephone"},'NULL':null};var _onsubmit=false;var i=1;var inc=[];var input=[];var input_names=[];for(var o in a)if(a.hasOwnProperty(o)){window["INPUT_"+o]=i;input_names[i]=o;input[i]=a[o];if(isObject(a[o])&&!empty(a[o].include)){inc[i]=a[o].include}i=2*i}var form_input=[];function getRequiredFiles(){var formElements=document.getElementsByTagName('form');var r='';var name='';var className='';var i=0;var j=0;var k=0;for(i=0;i<formElements.length;i++){if(!formElements[i].className.match(/\bajaxify\b/)){continue}r='';for(j=0;j<formElements[i].elements.length;j++){className=formElements[i].elements[j].className.replace('-',"").split(' ');className=className.sum();if(empty(className)){continue}name=formElements[i].elements[j].name.replace("[]",'');form_input[name]=explode_factorial(Math.abs(className));if(!isArray(form_input[name])){continue}for(k=0;k<form_input[name].length;k++){if(!empty(inc[form_input[name][k]])){require(inc[form_input[name][k]])}}}}return form_input}form_input=getRequiredFiles();var form_onsubmit=[];window.onload=function(){var x=[];var counter=0;var name='';var i=0;var elem={};var elemC={};var tmp={};var jc={};var className='';for(name in form_input)if(form_input.hasOwnProperty(name)){if(name.match("[0]")||name.match("[1]")){name=(name.match("[0]")?name.replace('[0]',''):name.replace('[1]','_match'))}elem=$e('form_'+name);if(empty(elem)&&empty((elem=$e(name)))){continue}elem.xtype=explode_factorial(elem.className);form_onsubmit[name]=elem.xtype;if(counter++===0){elem.focus()}for(i=0;i<elem.xtype.length;i++){if(!empty(input[elem.xtype[i]])&&!empty(input[elem.xtype[i]].onbuild)){elem.build=input[elem.xtype[i]].onbuild;elem.build()}}if(elem.tagName==="INPUT"&&elem.type==="checkbox"){elem.onchange=onEventBlur}else{elem.onblur=onEventBlur}if(elem.tagName==="INPUT"&&elem.type==='text'){elem.onkeyup=onEventChange}}$e('form').onsubmit=onEventSubmit};function onEventChange(){var aregexp;var regexp;var myregexp;var pattern;var fail;if(this.value===null||this.value===''){form_tick(this.name,null);return}for(i=0;i<this.xtype.length;i++){if(!empty(input[this.xtype[i]])&&!empty(input[this.xtype[i]].regexp)&&isArray(input[this.xtype[i]].regexp)){aregexp=input[this.xtype[i]].regexp;regexp="";for(var x in aregexp)if(aregexp.hasOwnProperty(x)){regexp+=aregexp[x];myregexp=regexp.replace(new RegExp("\\{([0-9]+,)?([0-9]+)?\\}$",'gi'),"{0,$2}");pattern=new RegExp("^"+myregexp+"$");validate=pattern.test(this.value);if(validate){form_tick(this.name,null);return}}fail=input[this.xtype[i]].errmsg}}if(fail){form_tick(this.name,false,fail)}}function onEventSubmit(){var i=0;var error_counter=0;var test=true;var elem=null;_onsubmit=true;for(var name in form_onsubmit)if(form_onsubmit.hasOwnProperty(name)){elem=$e('form_'+name);if(empty(elem)){continue}for(i=0;i<elem.xtype.length;i++){if(!empty(input[elem.xtype[i]])&&!empty(input[elem.xtype[i]].onsubmit)){elem.onsubmit=input[elem.xtype[i]].onsubmit;if(!form_tick(elem.name,elem.onsubmit(),input[elem.xtype[i]].errmsg)){error_counter++;test=false}}}if((!empty(elem.onblur)&&!elem.onblur())||(!empty(elem.onchange)&&!elem.onchange())){error_counter++;test=false}}_onsubmit=false;if(error_counter>0){if(!$e("submit_note")){var note=document.createElement('span');note.className='alert_note red';note.style.display='inline';note.style.color='red';note.id='submit_note';note.innerHTML="&uarr; Errors in page &uarr;";prependChild(this.submit.parentNode,note)}fade("submit_note",100,0,3000);setTimeout(remove_submit_notice,5000)}else{if($e("submit_note")){this.submit.parentNode.removeChild($e("submit_note"))}for(var x in this.childNodes){if(this.childNodes[x]!='undefined'&&this.childNodes[x].tagName==="TABLE"){dither(this.childNodes[x]);break}}}return test}function onEventBlur(){var pattern;var validate;var regexp;var attr=this.xtype;if((empty(this.value)&&this.tagName==="INPUT")||(this.tagName==="SELECT"&&this.options.selectedIndex===-1)||(this.type==="checkbox"&&this.checked!==true)){if(inArray(attr,INPUT_NULL)){return form_tick(this.name,true)}return form_tick(this.name,!inArray(attr,INPUT_NOTNULL),input[INPUT_NOTNULL].errmsg)}if(inArray(attr,INPUT_POSTCODE)){this.value=this.value.toUpperCase()}if(this.tagName!=="INPUT"){return form_tick(this.name,true)}if(inArray(attr,INPUT_MATCH)&&this.name.match("[1]")&&$e(this.id.replace('_match','')).value!==this.value){return form_tick(this.name,false,input[INPUT_MATCH].errmsg)}for(var i=0;i<attr.length;i++){if(empty(input[attr[i]])||attr[i]===INPUT_NOTNULL){continue}if(!empty(input[attr[i]].regexp)){regexp=(isArray(input[attr[i]].regexp)?input[attr[i]].regexp.join(''):input[attr[i]].regexp);pattern=new RegExp("^"+regexp+"$");validate=pattern.test(this.value);if(!validate){return form_tick(this.name,false,input[attr[i]].errmsg)}}if(!empty(input[attr[i]].ajax)&&empty(_onsubmit)){return getAjax(this,input[attr[i]].ajax,input[attr[i]].ajxmsg)}}return form_tick(this.name,true)}function insertAfter(parent,node,referenceNode){if(referenceNode.nextSibling){return parent.insertBefore(node,referenceNode.nextSibling)}else{return parent.appendChild(node)}}function getAjax(obj,url,msg){url=(!empty(url)?url:window.location.href);AjaxRequest.get({name:obj.name,parameters:{ajax:obj.name,value:obj.value,errmsg:msg},url:url,onSuccess:function(req){ajax_result(req.responseXML,req.name,req.parameters.errmsg)},onLoading:function(req){form_tick(req.name,'indicator')},timeout:5000,onTimeout:function(req){form_tick(req.name,null)},onError:function(req){form_tick(req.name,null)}})}function ajax_result(xml,elem,msg){var result=xml.getElementsByTagName('result')[0].firstChild.data;var s;var bool;var a=[];var i=0;var m;if(result===undefined){return false}s=xml.getElementsByTagName('suggestions')[0].getElementsByTagName('suggestion');if(s.length>0){for(i=0;i<s.length;i++){a[i]=s[i].firstChild.data}}m="<h3>Address suggestions...</h3>";if(result=='1'){fadeok=false;if(a.length>0){for(i=0;i<a.length;i++){m+="<a onclick=\"document.form.location.value = '"+a[i]+"'; fadeok = true;\">"+a[i]+"</a><br />"}}m+="";bool=true}else{bool=false}return form_tick(elem,bool,msg)}function form_tick(elem,bool,message){var div;var reg=new RegExp("\\[([0-9]*)\\]");elem.replace("[1]","_match");elem=elem.replace(reg,"");var parent=$e('parent_'+elem);var form=$e('form_'+elem);if(!parent){alert(elem);return false}if($e(elem+'status')){parent.removeChild($e(elem+'status'))}if($e(elem+'note')){parent.removeChild($e(elem+'note'))}if(bool===null||empty(form)){return true}form.className=(bool!==false?'':'alert_input');div=document.createElement('div');div.style.display='inline';div.className='alert_form '+(typeof(bool)=='string'?bool:(bool?"ok":"neg"));div.id=elem+'status';div.innerHTML=(bool===false?message:"&nbsp;");insertAfter(parent,div,elem);if(bool===true){fade(elem+'status',100,0,2000)}return bool}function addEvent(obj,evType,fn,useCapture){if(obj.addEventListener){obj.addEventListener(evType,fn,useCapture);return true}else if(obj.attachEvent){return obj.attachEvent("on"+evType,fn)}else{alert("Handler could not be attached")}}function fade(id,os,oe,m){var s=Math.round(m/100);var t=0;var i;for(i=os;i>=oe;i--){setTimeout("changeOpac('"+(os>oe?'-':'+')+"','"+id+"')",(t*s));t++}}function findPos(o){var cl=0;var ct=0;if(o.offsetParent){cl=o.offsetLeft;ct=o.offsetTop;while((o=o.offsetParent)){cl+=o.offsetLeft;ct+=o.offsetTop}}return[cl,ct]}function dither(t){var a=findPos(t);var c=document.createElement('div');c.className="dither";c.style.left=a[0]+"px";c.style.top=a[1]+"px";c.style.width=t.offsetWidth+"px";c.style.height=t.offsetHeight+"px";c.innerHTML="<div>Please Wait..</div>";t.parentNode.appendChild(c)}function changeOpac(op,id){if(!$e(id)){return}var o=$e(id).style;if(op==='+'||op==='-'){op=((empty(o.opacity)?1:o.opacity)*100)+(op==='+'?1:-1)}if(op<=1){destroyElement(id);return}if(op<0||op>100){return}op=(op<=1?0.01:op/100);o.opacity=op;o.MozOpacity=op;o.KhtmlOpacity=op;o.filter="alpha(opacity="+(op*100)+")"}function prependChild(parent,node){parent.insertBefore(node,parent.firstChild)}function explode_factorial(i){var a=[1];var b=[];var j=0;while(a.sum()<i){a[++j]=a[a.length-1]*2}j=0;for(var k=(a.length-1);k>=0;k--){if(i>=a[k]){i-=a[k];b[j++]=a[k]}}return b}function destroyElement(s){if($e(s)){$e(s).parentNode.removeChild($e(s))}}function remove_submit_notice(){destroyElement('submit_note')}