/****** FILE: sapphire/javascript/Validator.js *****/

var _CURRENT_FORM;var _FIRST_ERRORED_FIELD=null;function initialiseForm(form,fromAnOnBlur){_CURRENT_FORM=form;_FIRST_ERRORED_FIELD=null;if(fromAnOnBlur){limitValidationErrorsTo(fromAnOnBlur);}else{clearValidationErrorLimit();}
_HAS_HAD_FORM_ERROR=false;clearValidationErrorCache();}
function hasHadFormError(){return _HAS_HAD_FORM_ERROR||!_ERROR_CACHE;}
function focusOnFirstErroredField(){try{_FIRST_ERRORED_FIELD.focus();}catch(er){}}
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){if(holderDiv.tagName=='TD'){$$('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];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){if(el.type=='checkbox'||el.type=='radio'){var set=el.checked;}
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;var fieldHolder=el;if(el.type){if(el.parentNode.className.indexOf('form')!=-1)set=true;baseEl=el;}else{if(_CURRENT_FORM.elements[fieldName]){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;}}
if((typeof set=='undefined'||(typeof(set)=='string'&&set.match(/^\s*$/)))){var fieldLabel=findParentLabel(baseEl);if(fieldLabel==null||fieldLabel==""){fieldlabel="this field";}
var errorMessage=ss.i18n.sprintf(ss.i18n._t('VALIDATOR.FIELDREQUIRED','Please fill out "%s", it is required.'),fieldLabel);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()){if(baseEl)fieldHolder=baseEl.parentNode;clearErrorMessage(fieldHolder);}
return true;}}
return true;}
function findParentLabel(el){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);}}}
else if(el.className.indexOf('tablecolumn')!=-1){return el.className.substring(0,el.className.indexOf('tablecolumn')-1);}else{return findParentLabel(el.parentNode);}}else{if(el.id){var labels=$$('label[for='+el.id+']');if(labels&&labels.length>0)return labels[0].innerHTML;}
return findParentLabel(el.parentNode);}}}
return"this";}
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;}
if(_LIMIT_VALIDATION_ERRORS&&_LIMIT_VALIDATION_ERRORS!=field){return;}
_HAS_HAD_FORM_ERROR=true;var validationMessage=field.validationMessage;if(!validationMessage){var FieldHolder=field.parentNode;var allSpans=FieldHolder.getElementsByTagName('span');validationMessage=findIndexOf(allSpans,'message');}
if(!validationMessage){validationMessage=document.createElement('span');FieldHolder.appendChild(validationMessage);}
field.validationMessage=validationMessage;if(field&&!_FIRST_ERRORED_FIELD)_FIRST_ERRORED_FIELD=field;validationMessage.className="message "+messageClass;validationMessage.innerHTML=message;validationMessage.style.display="block";var holder=document.getParentOfElement(field,'div','field');Element.addClassName(holder,'validationError');}
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,'');}
;
/****** FILE: sapphire/thirdparty/prototype.js *****/

;
/****** FILE: sapphire/thirdparty/behaviour.js *****/

;
/****** FILE: sapphire/thirdparty/prototype_improvements.js *****/

;
