/*<!-- mp_trans_disable_start -->*/ 
Object.extend(String.prototype,{properCase:function()
{var strReturn="";var intLength=this.length;var boolUCaseNext=false;if(intLength==0)
{return"";}
strReturn+=this.charAt(0).toUpperCase();for(var iCounter=1;iCounter<intLength;iCounter++)
{if(boolUCaseNext==true)
{strReturn+=this.charAt(iCounter).toUpperCase();}
else
{strReturn+=this.charAt(iCounter).toLowerCase();}
var iChar=this.charCodeAt(iCounter);if(iChar==32||iChar==45||iChar==46)
{boolUCaseNext=true;}
else
{boolUCaseNext=false;}
if(iChar==99||iChar==67)
{if(this.charCodeAt(iCounter-1)==77||this.charCodeAt(iCounter-1)==109)
{boolUCaseNext=true;}}}
return strReturn;},decamelize:function(delimiter)
{return this.replace(/([A-Z0-9])/g,(delimiter?delimiter:'-')+'$1').toLowerCase();},startsWithVowel:function()
{return this.match(/^[aeiou]/i)!=null;},startsWithConsonant:function()
{return this.match(/^[^aeiou]/i)!=null;},precedeWithA:function()
{return this.startsWithConsonant()||this.match(/^u[stkrlzbnm]/i)!=null;},precedeWithAn:function()
{return!this.precedeWithA();},capitalize:function()
{return this.replace(/(\b)([a-z])/g,"$1"+new String("$2").toUpperCase());},ltrim:function()
{return this.replace(/^\s+/,'');},rtrim:function()
{return this.replace(/\s+$/,'');},trim:function()
{return this.ltrim().rtrim();},isNumeric:function()
{return this.trim().match(/^[\d]*\.?[\d]*$/);},isFloat:function()
{return this.isNumeric();},isInteger:function()
{return this.trim().match(/^\d*$/);},isEmailAddress:function()
{return this.trim().match(/^([\w-']+)(.[\w-']+)*@([\w-]+)(.[\w]{2,20}){1,4}$/);},asFloat:function()
{if(isNaN(this))
return 0.0;else
if(this.trim()=='')
return 0.0;else
return parseFloat(this);}});var RedSquare=Class.create();RedSquare.Lang=new Object();Object.extend(RedSquare,{leadingZero:function(number)
{if(number<10)
return'0'+number.toString();else
return number.toString();},isSelect:function(element)
{return element.tagName.match(/select/i)!=null;},isTextArea:function(element)
{return element.tagName.match(/textarea/i)!=null;},isInputText:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)!=null&&element.getAttribute('type').match(/text/i)!=null;return element.tagName.match(/input/i)!=null;},isInputHidden:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)!=null&&element.getAttribute('type').match(/hidden/i)!=null;},isInputRadio:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)!=null&&element.getAttribute('type').match(/radio/i)!=null;return false;},isInputCheckbox:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)!=null&&element.getAttribute('type').match(/checkbox/i)!=null;return false;},isSelectable:function(element)
{return this.isInputText(element)||this.isTextArea(element);},labelOf:function(element)
{return $$('label').detect(function(label)
{if(label.attributes['for'])
return label.attributes['for'].value==element.id;else
return label.getAttribute("for")==element.id;});}});RedSquare.Lang.FormValidator={ERROR_A:'Please enter a [field_name]',ERROR_AN:'Please enter an [field_name]',ERROR_PERSONAL_A:'Please enter your [field_name]',ERROR_PERSONAL_AN:'Please enter your [field_name]',ERROR_SELECT_A:'Please select a [field_name]',ERROR_SELECT_AN:'Please select an [field_name]',ERROR_SELECT_PERSONAL_A:'Please select your [field_name]',ERROR_SELECT_PERSONAL_AN:'Please select your [field_name]',ERROR_NUMERIC:'Please enter [field_name] as a numeric value',ERROR_NUMERIC_AN:'Please enter [field_name] as a numeric value',ERROR_FLOAT:'Please enter [field_name] as a numeric value',ERROR_FLOAT_AN:'Please enter [field_name] as a numeric value',ERROR_INTEGER:'Please enter [field_name] as a numeric value',ERROR_INTEGER_AN:'Please enter [field_name] as a numeric value',ERROR_FLOAT1DP:'Please enter [field_name] as a numeric value correct to 1 decimal place',ERROR_FLOAT1DP_AN:'Please enter an [field_name] as a numeric value correct to 1 decimal place',ERROR_FLOAT2DP:'Please enter [field_name] as a numeric value correct to 2 decimal places',ERROR_FLOAT2DP_AN:'Please enter an [field_name] as a numeric value correct to 2 decimal places',ERROR_FLOAT3DP:'Please enter [field_name] as a numeric value correct to 3 decimal places',ERROR_FLOAT3DP_AN:'Please enter an [field_name] as a numeric value correct to 3 decimal places',ERROR_FLOAT4DP:'Please enter [field_name] as a numeric value correct to 4 decimal places',ERROR_FLOAT4DP_AN:'Please enter an [field_name] as a numeric value correct to 4 decimal places',ERROR_CURRENCY:'Please enter [field_name] as a monetary value without the dollar sign eg. 9.99',ERROR_CURRENCY_AN:'Please enter an [field_name]  as a monetary value without the dollar sign eg. 9.99',ERROR_PERCENT:'Please enter [field_name] as a percentage value eg. (0-100)',ERROR_PERCENT_AN:'Please enter an [field_name] as a percentage value eg. (0-100)',ERROR_TIME12:'Please enter [field_name] as a valid time in the format hh:mm',ERROR_TIME12_AN:'Please enter [field_name] as a valid time in the format hh:mm',ERROR_TIME24:'Please enter [field_name] as a valid 24 hour time in the format HH:mm',ERROR_TIME24_AN:'Please enter [field_name] as a valid 24 hour time in the format HH:mm',ERROR_DATE:'Please enter [field_name] as a valid date in the format dd/mm/yyyy',ERROR_DATE_AN:'Please enter [field_name] as a valid date in the format dd/mm/yyyy',ERROR_EMAIL:'Please enter [field_name] as a valid email address',ERROR_EMAIL_AN:'Please enter an [field_name] as a valid email address'};RedSquare.Lang.CharacterLimiter={ERROR_PLURAL:'Sorry you can only enter up to [LIMIT] characters in this field',ERROR_SINGULAR:'Sorry you can only enter [LIMIT] character in this field'};RedSquare.Lang.Defaults={DATE_FORMAT:"mm/dd/yyyy"};RedSquare.Lang.Defaults.DATE_FORMAT="dd/mm/yyyy";RedSquare.CandyStriper=Base.extend({constructor:function(table,alternateClassName,options)
{this.table=table;this.alternateClassName=alternateClassName;this.mode=RedSquare.CandyStriper.MODE_EVERY_OTHER;this.modulo=1;this.preserveClassNames=new Array();this.columns=new Array(0);this.processRepeatColumns=false;this.sameColumnText=false;this.sameColumnClass=false;this.sameRowClass=false;this.sameRowMasterClass=false;if(options)
{if(options.mode)
this.mode=options.mode;if(options.modulo)
this.modulo=options.modulo;if(options.preserveClassNames)
this.preserveClassNames=options.preserveClassNames;if(options.processRepeatColumns)
this.processRepeatColumns=options.processRepeatColumns;if(options.columns)
this.columns=options.columns;if(options.sameColumnText)
this.sameColumnText=options.sameColumnText;if(options.sameColumnClass)
this.sameColumnClass=options.sameColumnClass;if(options.sameRowClass)
this.sameRowClass=options.sameRowClass;if(options.sameRowMasterClass)
this.sameRowMasterClass=options.sameRowMasterClass;}
this.update();},update:function()
{var tr;var tbody=this.table.getElementsByTagName("tbody");if(tbody.length!=0)
{tr=tbody[0].getElementsByTagName("tr");}
else
{var thead=this.table.getElementsByTagName("thead");if(thead.length==0)
tr=this.table.getElementsBytagName("tr");}
if(tr)
{var lastValues=new Array();var lastClassName=this.alternateClassName;var currentRepeatedValue=null;for(i=0;i<tr.length;i++)
{Element.removeClassName(tr[i],this.alternateClassName);if(this.sameRowClass)
{Element.removeClassName(tr[i],this.sameRowClass);}
if(this.mode==RedSquare.CandyStriper.MODE_EVERY_OTHER)
{if(i%2==this.modulo)
{Element.addClassName(tr[i],this.alternateClassName);}
else
Element.removeClassName(tr[i],this.alternateClassName);}
else
{var useAlternate=true;var tds=tr[i].getElementsByTagName('td');for(var j=0;j<tds.length;j++)
{if(this.columns.indexOf(j)!=-1)
{if(lastValues[j]==tds[j].innerHTML||Element.hasClassName(tr[i],"__same"))
{lastValues[j]=tds[j].innerHTML;if(tr[i-1]&&this.sameRowMasterClass&&currentRepeatedValue!=lastValues[j])
{currentRepeatedValue=lastValues[j];tr[i-1].addClassName(this.sameRowMasterClass);}
if(this.sameColumnText)
tds[j].innerHTML=this.sameColumnText;if(this.sameColumnClass)
Element.addClassName(tds[j],this.sameColumnClass);if(this.onProcessSameRow)
this.onProcessSameRow(tr);useAlternate=false;}
else
lastValues[j]=tds[j].innerHTML;}
else
{lastValues[j]=tds[j].innerHTML;}}
if(useAlternate)
{if(lastClassName==this.alternateClassName)
{lastClassName='';}
else
{lastClassName=this.alternateClassName;}}
else
{if(this.sameRowClass)
Element.addClassName(tr[i],this.sameRowClass);Element.addClassName(tr[i],"__same");}
if(lastClassName!='')
Element.addClassName(tr[i],lastClassName);}}}},animate:function(interval)
{this.stopAnimate();this.animateInterval=window.setInterval(this.alternate.bindAsEventListener(this),interval);},stopAnimate:function()
{if(this.animateInterval)
window.clearInterval(this.animateInterval);},alternate:function()
{this.modulo=1-this.modulo;this.update();Element.hide(this.table);Element.show(this.table);}});Object.extend(RedSquare.CandyStriper,{MODE_EVERY_OTHER:0,MODE_COLUMN_CHANGE:1});RedSquare.CharacterLimiter=Base.extend({constructor:function(element,displayElement,limit)
{this.element=element;this.displayElement=displayElement;this.limit=limit;this.errorMessage=(this.limit==1)?RedSquare.Lang.CharacterLimiter.ERROR_SINGULAR.replace('[LIMIT]',this.limit):RedSquare.Lang.CharacterLimiter.ERROR_PLURAL.replace('[LIMIT]',this.limit);Event.observe(this.element,'keyup',this.elementOnKeyUp.bindAsEventListener(this));this.updateCount();},elementOnKeyUp:function(event)
{var element=Event.element(event);if(element.value.length>this.limit)
{alert(this.errorMessage);element.value=element.value.substr(0,this.limit);}
this.updateCount();},updateCount:function()
{if(this.displayElement)
this.displayElement.innerHTML=(this.limit-this.element.value.length);}});RedSquare.ControlGroup=Base.extend({constructor:function(controls,options)
{this.controls=controls;this.options=Object.extend({timeout:100},options);this.observers={controlOnBlur:this.controlOnBlur.bindAsEventListener(this),controlOnFocus:this.controlOnFocus.bindAsEventListener(this)};this.callbacks={doBlur:this.doBlur.bind(this)};controls.each
(function(control)
{Event.observe(control,'focus',this.observers.controlOnFocus);Event.observe(control,'blur',this.observers.controlOnBlur);control.onblur=this.eventStop;}.bind(this));},controlOnFocus:function(event)
{this.clearTimeout();},controlOnBlur:function(event)
{this.clearTimeout();this.blurControl=Event.element(event);this.blurTimeout=window.setTimeout(this.callbacks.doBlur,this.options.timeout);Event.stop(event);},clearTimeout:function()
{if(this.blurTimeout)
{window.clearTimeout(this.blurTimeout);}},doBlur:function()
{if(this.blurControl&&this.options.onblur)
{this.options.onblur(this.blurControl);}},eventStop:function()
{return false;}});RedSquare.Currency=Base.extend({fDisplaySubTypeTotal:function(objForm,subTypeID)
{objTotalDisplay=document.getElementById("SubTypeTotal"+subTypeID);if(objTotalDisplay)
{objTotalDisplay.innerHTML=fDollarFormat(objForm['SubTypeTotal'+subTypeID].value);}else{objTotalDisplay.innerHTML="-";}},fDollarFormat:function(strUnformatted,withSign)
{var decValue=parseFloat(strUnformatted);if(isNaN(decValue))
return"";decValue=Math.round(decValue*100)/100;strValue=decValue.toString();arValue=strValue.split(".");if(arValue.length>2)
return"";strIntValue=arValue[0];var j=0;for(var i=strIntValue.length;i>=0;i--)
{j=j+1;if(j%4==0&&i!=0)
{strIntValue=strIntValue.substring(0,i)+","+strIntValue.substring(i,strIntValue.length);}}
if(arValue.length>1)
{remValue=arValue[1];if(remValue.length==1)
remValue=remValue+"0";}else{remValue="00";}
if(withSign)
var dollarValue="$"+strIntValue+"."+remValue;else
var dollarValue=strIntValue+"."+remValue;return dollarValue;},fExtraSelectYes:function(objRadio)
{if(objRadio.length)
{for(i=0;i<objRadio.length;i++)
{if(parseInt(objRadio[i].value,10)==parseInt(1,10))
objRadio[i].checked=true;}}},fAddMoney:function(strValue1,strValue2)
{if(isNaN(parseFloat(strValue1))||isNaN(parseFloat(strValue2)))
return"NaN";var decResult=(parseInt(parseFloat(strValue1)*100,10)+parseInt(parseFloat(strValue2)*100,10))/100;return decResult;},fSubtractMoney:function(strValue1,strValue2)
{if(isNaN(parseFloat(strValue1))||isNaN(parseFloat(strValue2)))
return"NaN";var decResult=(parseInt(parseFloat(strValue1)*100,10)-parseInt(parseFloat(strValue2)*100,10))/100;return decResult;},fIsValidDollarValue:function(strNumber)
{var decValue=parseFloat(strNumber);if(isNaN(decValue))
return false;strValue=decValue.toString();arValue=strValue.split(".");if(arValue.length>2)
return false;if(arValue.length>1)
{if(arValue[1].toString().length>2)
return false;}
return true;}});RedSquare.DataPager=Base.extend({constructor:function(data,linkPrevious,linkNext,options)
{this.linkPrevious=linkPrevious;this.linkNext=linkNext;this.data=data;this.mode=RedSquare.DataPager.MODE_WRAP;this.elementBinder=new RedSquare.ElementBinder();this.index=0;if(this.linkNext)
Event.observe(this.linkNext,'click',this.linkNextOnClick.bindAsEventListener(this));if(this.linkPrevious)
Event.observe(this.linkPrevious,'click',this.linkPreviousOnClick.bindAsEventListener(this));this.linkPrevious.onclick=function(){return false;};this.linkNext.onclick=function(){return false;};if(options)
{if(options.mode)
this.mode=options.mode;}
this.display();},display:function()
{this.linkPrevious.show();this.linkNext.show();if(this.mode==RedSquare.DataPager.MODE_END)
{if(this.index==this.data.length-1)
{this.linkNext.hide();}
else if(this.index==0)
{this.linkPrevious.hide();}}
this.elementBinder.process(this.data[this.index]);},linkNextOnClick:function(event)
{Event.element(event).blur();this.index++;if(this.mode==RedSquare.DataPager.MODE_WRAP)
{if(this.index==this.data.length)
this.index=0;}
this.display();Event.stop(event);},linkPreviousOnClick:function(event)
{Event.element(event).blur();Event.stop(event);this.index--;if(this.mode==RedSquare.DataPager.MODE_WRAP)
{if(this.index==-1)
this.index=this.data.length-1;}
this.display();}});Object.extend(RedSquare.DataPager,{MODE_WRAP:0,MODE_END:1});RedSquare.ElementBinderPlugIn=Base.extend({constructor:function(key,bind)
{this.key=key;this.bind=bind;}});RedSquare.ElementBinder=Base.extend({constructor:function(options)
{this.templates=new Object();this.templateClassName='template';this.plugIns=new Array();if(options)
{this.parentElement=options.parentElement;this.onComplete=options.onComplete;this.plugIns=options.plugIns;if(options.templateClassName)
this.templateClassName=options.templateClassName;}},processBinding:function(binding)
{var elements=this.getElements(binding.key);for(a=0;a<elements.length;a++)
{var element=elements[a];if(binding.value.options)
{element.options.length=null;for(var i=0;i<binding.value.options.length;i++)
{var thisOpt=binding.value.options[i];if(thisOpt)
{var optName=thisOpt[1];var optValue=thisOpt[0];element.options[element.options.length]=new Option(optName,optValue,false,binding.value.selectedIndex==i);}}
if(binding.value.selectedIndex){element.selectedIndex=binding.value.selectedIndex;}}
else if(binding.value.keys)
{if(element.tagName.match(/table/i))
{var rows='';var parent=element;var tbody=element.getElementsByTagName('tbody');if(tbody&&tbody.length)
parent=tbody[0];var afooter=element.getElementsByTagName('tfoot');if(afooter.length)
var footer=afooter[0];if(!this.templates[binding.key])
{var trs=$A(parent.getElementsByTagName('tr'));if(trs&&trs[0])
{this.templates[binding.key]={tagName:'tr',text:trs[0].innerHTML,className:trs[0].className};}}
var controlsID=element.id.replace(/table/i,"resultsControls");var arPageNav=this.getElements(controlsID);if(this.templates[binding.key])
{if(binding.value.data.length==0)
{Element.hide(parent);if(footer){Element.hide(footer);}
if(arPageNav)
{for(k=0;k<arPageNav.length;k++){Element.hide(arPageNav[k]);}}}
else
{Element.show(parent);if(footer){Element.show(footer);}
if(arPageNav)
{for(k=0;k<arPageNav.length;k++){Element.show(arPageNav[k]);}}
for(var i=0;i<binding.value.data.length;i++)
{var rowClass='';var rowId='';var thisRow=binding.value.data[i];if(binding.value.keys.indexOf('rowClass')&&thisRow[binding.value.keys.indexOf('rowClass')]!='')
{rowClass=' class="'+thisRow[binding.value.keys.indexOf('rowClass')]+'"';}
if(binding.value.keys.indexOf('rowId')&&thisRow[binding.value.keys.indexOf('rowId')]!='')
{rowId=' id="'+thisRow[binding.value.keys.indexOf('rowId')]+'"';}
rows+='<tr'+rowId+rowClass+'>'+this.fillRowTemplate(this.templates[binding.key].text,binding.value.keys,binding.value.data[i])+'</tr>';}
if(parent.update)
parent.update('');var rowElements=$A(parent.getElementsByTagName('tr'));for(var i=0;i<rowElements.length;i++)
{Element.remove(rowElements[i]);}
new Insertion.Top(parent,rows);Object.extend
(binding.value,{dataFor:function(key,row)
{return this.data[row][this.keys.indexOf(key)];}});}}
var errorsDiv=$(element.id.toString().replace(/table/i,"errors"));if(errorsDiv&&errorsDiv.id!=element.id)
{if(binding.value.errorMessage){errorsDiv.update(binding.value.errorMessage.toString());errorsDiv.style.display="block";}else{errorsDiv.update("");Element.hide(errorsDiv);}}}
else
{var html='';if(!this.templates[binding.key])
{var templates=$A(document.getElementsByClassName(this.templateClassName,element));if(templates&&templates.length&&templates[0])
this.templates[binding.key]={tagName:templates[0].tagName,className:templates[0].className,text:templates[0].innerHTML};}
if(this.templates[binding.key])
{var parent=element;for(var i=0;i<binding.value.data.length;i++)
{var rowClass='';var rowId='';var alternateClass='';if(binding.value.alternateClass&&binding.value.alternateClass!=''&&i%2==1)
alternateClass=' '+binding.value.alternateClass;if(binding.value.rowClass&&binding.value.rowClass[i])
{rowClass=' class="'+this.removeTemplateClassName(this.templates[binding.key].className)+alternateClass+' '+binding.value.rowClass[i]+'"';}
else
{rowClass=' class="'+this.removeTemplateClassName(this.templates[binding.key].className)+alternateClass+'"';}
if(binding.value.rowId&&binding.value.rowId[i])
{rowId=' id="'+binding.value.rowId[i]+'"';}
html+='<'+this.templates[binding.key].tagName+rowId+rowClass+'>'+this.fillRowTemplate(this.templates[binding.key].text,binding.value.keys,binding.value.data[i])+'</'+this.templates[binding.key].tagName+'>';}
if(parent.update)
parent.update('');new Insertion.Top(parent,html);}}}
else if(RedSquare.isInputText(element)||RedSquare.isInputHidden(element)||RedSquare.isTextArea(element))
{element.value=binding.value;}
else if(RedSquare.isSelect(element))
{Form.Element.setValue(element.id,binding.value);}
else if(RedSquare.isInputRadio(element))
{if(element.value.trim()==binding.value.toString().trim())
element.checked=true;}
else if(RedSquare.isInputCheckbox(element))
{binding.value.toString().split(',')._each
(function(bindingValue)
{if(element.value.trim()==bindingValue.trim())
element.checked=true;});}
else if(binding.value.display)
{if(binding.value.display=='true')
Element.show(element);else
Element.hide(element);if(binding.value.value!='')
element.update(binding.value.value);}
else
{if(typeof(binding.value)=='object')
{var handled=false;for(p=0;p<this.plugIns.length;p++)
{var plugIn=this.plugIns[p];$H(binding.value)._each
(function(property)
{if(property.key.match(new RegExp(plugIn.key,'g')))
{plugIn.bind(element,binding.value);handled=true;}});}
if(!handled)
{if(!this.templates[binding.key])
this.templates[binding.key]={tagName:element.tagName,text:element.innerHTML,className:element.className};var finalHTML=this.templates[binding.key].text;$H(binding.value).each
(function(property)
{finalHTML=this.keyReplace(finalHTML,property.key,property.value);RedSquare.ElementBinder.ATTRIBUTES.each
(function(attributeKey)
{var attribute=element.attributes[attributeKey];if(attribute&&attribute.value)
attribute.value=this.keyReplace(attribute.value,property.key,property.value);}.bind(this));}.bind(this));element.innerHTML=this.notFoundReplace(finalHTML);$A(document.getElementsByClassName(this.templateClassName,element)).each
(function(el)
{el.removeClassName(this.templateClassName);}.bind(this));}}
else
{element.update(binding.value.toString());}}
var element=null;}},process:function(bindings)
{var startTime=(new Date()).valueOf();if(bindings&&bindings.redirectRequest)
{window.location.href=bindings.redirectRequest;return;}
var bindingHash=$H(bindings);bindingHash.each
(this.processBinding.bind(this));var endTime=(new Date()).valueOf();if(this.onComplete)
this.onComplete(bindings);},removeTemplateClassName:function(str)
{return str.replace(new RegExp('\\s?'+this.templateClassName+'\\s?','gi'),'');},getDataRowById:function(binding,id,idKey)
{var key=idKey?idKey:'id';if(binding.data&&binding.keys)
{return binding.data.detect
(function(row)
{return this.getDataValueByKey(binding,row,key)==id;}.bind(this));}},getDataValueByKey:function(binding,row,key)
{if(row&&binding.keys)
{return row[binding.keys.indexOf(key)];}},getDataValueByRowIdColKey:function(binding,id,key,idKey)
{return this.getDataValueByKey(binding,this.getDataRowById(binding,id,(idKey?idKey:'id')),key);},getElements:function(key)
{var element=$(key);var elements=new Array();if(element&&element.id==key)
elements.push(element);var index=1;var iKey;do
{iKey=key+index.toString();element=$(iKey);if(element&&element.id==iKey)
elements.push(element);index++;}
while(element);if(elements.length>0)
return elements;formElements=$$('input[type=radio][name='+key+']','input[type=checkbox][name='+key+']');if(formElements&&formElements.length>0)
return formElements;return[];},fillRowTemplate:function(template,keys,row)
{var filled;var key;filled=template;for(var i=0;i<keys.length;i++)
{key=keys[i];filled=this.keyReplace(filled,key,row[i]);}
return filled;},keyReplace:function(str,key,value)
{var filled=str;filled=filled.replace(new RegExp('\\['+key+'\\]','g'),value);filled=filled.replace(new RegExp('\%5B'+key+'\%5D','g'),value);return filled;},notFoundReplace:function(str)
{var filled=str;filled=filled.replace(/\[\w*?\]/g,'');filled=filled.replace(/\%5B\w*?\%5D/g,'');return filled;}});Object.extend
(RedSquare.ElementBinder,{ATTRIBUTES:['title','href','alt','rel','name','id','value']});RedSquare.EventBroadcaster=Base.extend({constructor:function()
{this.listeners=new Array();this.evtListeners=new Object();},addListener:function(obj)
{this.listeners.push(obj);},addEventListener:function(evtName,fnRef)
{if(!this.evtListeners[evtName])
{this.evtListeners[evtName]=new Array();}
this.evtListeners[evtName].push(fnRef);},broadcastEvent:function(evtName,objEvent)
{var evt=objEvent;if(this.evtListeners[evtName])
{this.evtListeners[evtName].each(function(fnListener)
{fnListener.call(objEvent);});}
this.listeners.each(function(objListener)
{if(objListener[evtName]&&typeof(objListener[evtName])=='function')
{objListener[evtName].call(objListener,evt);}}.bind(this));}});RedSquare.FormValidator=Base.extend({constructor:function(form,options)
{this.form=form;if(options)
{this.validators=options.validators?options.validators:new Array();this.onValidate=options.onValidate?options.onValidate:null;this.onDisplayErrors=options.onDisplayErrors;this.onHideErrors=options.onHideErrors;this.autoFocus=options.autoFocus==null?true:options.autoFocus;this.autoSelect=options.autoSelect==null?true:options.autoSelect;this.containerClass=options.containerClass;this.culpritClass=options.culpritClass==null?'culprit':options.culpritClass;this.culpritLabelClass=options.culpritLabelClass==null?'culprit':options.culpritLabelClass;this.culpritContainerClass=options.culpritContainerClass==null?'culprit':options.culpritContainerClass;this.errorStylePersonal=options.errorStylePersonal==null?false:options.errorStylePersonal;this.errorPreserveFieldCase=options.errorPreserveFieldCase==null?false:options.errorPreserveFieldCase;this.requiredSuffix=options.requiredSuffix==null?'':options.requiredSuffix;this.requiredPrefix=options.requiredPrefix==null?'':options.requiredPrefix;this.errorRemovePattern=options.errorRemovePattern==null?'':options.errorRemovePattern;}
else
{this.autoFocus=true;this.autoSelect=true;this.culpritClass='culprit';this.culpritLabelClass='culprit';this.culpritContainerClass='culprit';this.requiredSuffix='';this.requiredPrefix='';this.containerClass=null;this.errorStylePersonal=false;this.errorPreserveFieldCase=false;this.errorRemovePattern='';this.validators=new Array();}
this.errormsg=new Object();this.errormsgall=new Object();this.inlineErrors=new Object();this.containers=new Object();this.labels=new Object();this.labelsText=new Object();this.culprits=new Array();this.errors=new Array();this.culpritContainers=new Array();this.fieldsEnabled=new Object();this.fields=new Array();this.setup();this.events={culpritOnKeyPress:this.culpritOnKeyPress.bindAsEventListener(this),culpritOnChange:this.culpritOnChange.bindAsEventListener(this),culpritOnClick:this.culpritOnClick.bindAsEventListener(this),culpritByNameOnClick:this.culpritByNameOnClick.bindAsEventListener(this)};},clearErrors:function(bIgnoreHideCallback)
{if(this.culpritContainerClass)
{$H(this.containers).each
(function(container)
{Element.removeClassName(container.value,this.culpritContainerClass);}.bind(this));}
if(this.culpritLabelClass)
{$H(this.labels).each
(function(label)
{Element.removeClassName(label.value,this.culpritLabelClass);}.bind(this));}
if(this.culpritClass)
{this.fields.each
(function(field)
{Element.removeClassName(field,this.culpritClass);}.bind(this));}
if(this.onHideErrors&&!bIgnoreHideCallback)
this.onHideErrors(this.form);},disableFields:function()
{$A(arguments).each
(function(argument)
{if(argument.id)
this.fieldsEnabled[argument.id]=false;else
this.fieldsEnabled[argument]=false;}.bind(this));},enableFields:function()
{$A(arguments).each
(function(argument)
{if(argument.id)
this.fieldsEnabled[argument.id]=true;else
this.fieldsEnabled[argument]=true;}.bind(this));},registerMessage:function(field,cssClass,message)
{if(field.id)
{if(!this.errormsg[field.id])
this.errormsg[field.id]=new Object();if(!cssClass||cssClass=='')
{this.errormsgall[field.id]=message;}
else
this.errormsg[field.id][cssClass]=message;}},addField:function(field)
{if(field.tagName.match(/input|select|textarea/i))
{this.fields.push(field);this.fieldsEnabled[field.id]=true;}},setup:function()
{Event.observe(this.form,'submit',this.formOnSubmit.bindAsEventListener(this));var fieldsByName=new Object();$A(this.form.elements).each
(function(field)
{if(!(field.name&&fieldsByName[field.name]))
{this.addField(field);var fieldName=field.name;if(fieldName)
fieldsByName[fieldName]=true;}}.bind(this));this.labelsIndex=new Object();var allLabels=$$('form#'+this.form.id+' label');var label=allLabels.each
(function(con)
{if(con.attributes['for'])
this.labels[con.attributes['for'].value]=con;else
this.labels[con.getAttribute('for')]=con;}.bind(this));this.fields.each
(function(field)
{this.setupLabel(field);this.setupCustomErrorMessages(field);}.bind(this));if(this.containerClass)
{var allContainers=$A(document.getElementsByClassName(this.containerClass,this.form));this.fields.each
(function(field)
{var pf=new RedSquare.ParentFinder(field);var container=pf.findTag('div.'+this.containerClass);if(container)
{this.containers[field.id]=container;if(this.isInputRadio(field)||this.isInputCheckbox(field))
{var arNames=$A(document.getElementsByName(field.name));arNames.each(function(el)
{if(el&&el.id&&container)
{var pf=new RedSquare.ParentFinder(el);var nameContainer=pf.findTag('div.'+this.containerClass);if(nameContainer==container)
this.containers[el.id]=container;}}.bind(this));}}}.bind(this));}},setupCustomErrorMessages:function(field)
{var pf=new RedSquare.ParentFinder(field);var container=pf.findTag('div.fieldContainer');if(container&&container.className=='fieldContainer')
{if(container.select)
var oMsgs=$A(container.select(".errorMessage"));else
var oMsgs=$A(document.getElementsByClassName("errorMessage",container));if(oMsgs.length)
{oMsgs.each(function(msgDiv)
{var aClasses=msgDiv.className.replace(/errorMessage/gi,'').split(' ');aClasses.each(function(className)
{this.registerMessage(field,className,msgDiv.innerHTML);}.bind(this));}.bind(this));}}},setupLabel:function(field)
{var label;if(this.labels[field.id])
{label=this.labels[field.id];this.labelsText[field.id]=label.innerHTML.stripTags().replace(new RegExp(this.errorRemovePattern,'g'),'');if(Element.hasClassName(field,'required')&&label.innerHTML.length&&!RedSquare.isInputRadio(field))
Element.update(label,(this.requiredPrefix?this.requiredPrefix:'')+label.innerHTML.stripTags()+(this.requiredSuffix?this.requiredSuffix:''));}},reset:function()
{this.clearCulprits();this.fields.each
(function(field)
{this.removeCulpritClass(field);}.bind(this));},clearCulprits:function()
{if(this.culprits&&this.culprits.length)
this.culprits=null;if(this.errors&&this.errors.length)
this.errors=null;if(this.culpritContainers&&this.culpritContainers.length)
this.culpritContainers=null;this.culprits=new Array();this.errors=new Array();this.culpritContainers=new Array();},submit:function()
{if(this.validateForm())
{this.form.submit();return true;}
return false;},validateForm:function()
{this.clearCulprits();if(!this.willSubmit())
{this.displayCulprits();return false;}
if(this.onHideErrors)
this.onHideErrors(this.form);return true;},displayCulprits:function()
{this.culprits.each(this.displayCulprit.bind(this));if(this.onDisplayErrors)
this.onDisplayErrors(this.culprits,this.errors,this.form);else
this.displayErrors();if(this.autoFocus&&(this.culprits[0]&&this.culprits[0].type&&this.culprits[0].type!='hidden'))
{if(Element.visible(this.culprits[0]))
this.culprits[0].focus();}
if(this.culprits[0]&&this.culprits[0].tagName.match(/input|textarea/i))
{if(this.autoFocus&&this.autoSelect&&(this.type&&this.type!='hidden'))
this.culprits[0].select();}},formOnSubmit:function(event)
{this.clearCulprits();if(!this.validateForm())
{Event.stop(event);return false;}
return true;},willSubmit:function()
{this.fields.each(this.validateField.bind(this));if(this.onValidate)
this.onValidate(this.culprits,this.errors,this.form);return this.errors.length==0;},displayErrors:function()
{alert(this.errors.join("\n"));},displayCulprit:function(element)
{if(this.culpritClass)
{Element.addClassName(element,this.culpritClass);if(this.isSelect(element))
{Event.stopObserving(element,'change',this.events.culpritOnChange);Event.observe(element,'change',this.events.culpritOnChange);}
else if(this.isInputRadio(element)||this.isInputCheckbox(element))
{Event.stopObserving(element,'click',this.events.culpritOnClick);Event.observe(element,'click',this.events.culpritOnClick);var elmName=element.name;var arNames=$A(document.getElementsByName(elmName));arNames.each(function(el)
{Element.addClassName(el,this.culpritClass);if(this.culpritContainerClass&&this.containerClass)
{if(!this.containers[el.id])
this.containers[el.id]=el;if(this.containers[el.id])
{Element.addClassName(this.containers[el.id],this.culpritContainerClass);}}
Event.stopObserving(el,'click',this.events.culpritByNameOnClick);Event.observe(el,'click',this.events.culpritByNameOnClick);}.bind(this));}
else
{Event.stopObserving(element,'keypress',this.events.culpritOnKeyPress);Event.observe(element,'keypress',this.events.culpritOnKeyPress);}}
if(this.culpritContainerClass&&this.containerClass)
{if(this.containers[element.id])
{Element.addClassName(this.containers[element.id],this.culpritContainerClass);}}
if(this.labels[element.id]&&this.culpritLabelClass)
{Element.addClassName(this.labels[element.id],this.culpritLabelClass);}},addCulprit:function(element,errorMessage,className)
{if(!this.culprits)
this.clearCulprits();if(this.culprits.indexOf(element)==-1)
{this.culprits.push(element);if(errorMessage)
this.errors.push(errorMessage);else
{if(this.labels[element.id])
{var labelText=this.labelsText[element.id];var baseErrorMessage='';if(!this.errorPreserveFieldCase)
labelText=labelText.toLowerCase();if(this.isSelect(element))
{if(this.errorStylePersonal)
baseErrorMessage=labelText.precedeWithAn()?RedSquare.Lang.FormValidator.ERROR_SELECT_PERSONAL_AN:RedSquare.Lang.FormValidator.ERROR_SELECT_PERSONAL_A;else
baseErrorMessage=labelText.precedeWithAn()?RedSquare.Lang.FormValidator.ERROR_SELECT_AN:RedSquare.Lang.FormValidator.ERROR_SELECT_A;}
else
{var anMessagePersonal=RedSquare.Lang.FormValidator.ERROR_PERSONAL_AN;var aMessagePersonal=RedSquare.Lang.FormValidator.ERROR_PERSONAL_A;var anMessage=RedSquare.Lang.FormValidator.ERROR_AN;var aMessage=RedSquare.Lang.FormValidator.ERROR_A;if(RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()])
aMessage=RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()];if(RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()+'_AN'])
anMessage=RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()+'_AN'];if(RedSquare.Lang.FormValidator['ERROR_PERSONAL_'+className.toUpperCase()])
aMessagePersonal=RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()];if(RedSquare.Lang.FormValidator['ERROR_PERSONAL_'+className.toUpperCase()+'_AN'])
anMessagePersonal=RedSquare.Lang.FormValidator['ERROR_'+className.toUpperCase()+'_AN'];if(this.errorStylePersonal)
baseErrorMessage=labelText.precedeWithAn()?anMessagePersonal:aMessagePersonal;else
baseErrorMessage=labelText.precedeWithAn()?anMessage:aMessage;}
this.errors.push(baseErrorMessage.replace('[field_name]',labelText));}
else
{this.errors.push(element.title);}}}},validateField:function(element)
{if(this.fieldsEnabled[element.id])
{element.setAttribute('autocomplete','off');var classNames=element.className.split(" ");for(var i=0;i<classNames.length;i++)
this.validate(element,classNames[i]);}},culpritOnKeyPress:function(event)
{var element=Event.element(event);if(event.keyCode!=Event.KEY_TAB&&!event.shiftKey)
{this.removeCulpritClass(element);Event.stopObserving(element,'keypress',this.events.culpritOnKeyPress);}},culpritOnChange:function(event)
{var element=Event.element(event);this.removeCulpritClass(element);Event.stopObserving(element,'change',this.events.culpritOnChange);},removeCulpritClass:function(element,ignoreContainer)
{Element.removeClassName(element,this.culpritClass);if(this.culpritContainerClass&&this.containerClass&&!ignoreContainer)
{if(this.containers[element.id])
Element.removeClassName(this.containers[element.id],this.culpritContainerClass);}
if(this.labels[element.id]&&this.culpritLabelClass)
{Element.removeClassName(this.labels[element.id],this.culpritLabelClass);}},culpritByNameOnClick:function(event)
{this.culpritOnClick(event);var elm=Event.element(event);$A(document.getElementsByName(elm.name)).each(function(el)
{this.removeCulpritClass(el);}.bind(this));},culpritOnClick:function(event)
{var element=Event.element(event);this.removeCulpritClass(element);Event.stopObserving(element,'click',this.events.culpritOnClick);},isSelect:function(element)
{return element.tagName.match(/select/i)!=null;},isInputText:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i).length!=0&&element.getAttribute('type').match(/text/i)!=null;return element.tagName.match(/input/i).length!=0;},isInputRadio:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)&&element.getAttribute('type').match(/radio/i);return false;},isInputCheckbox:function(element)
{if(element.getAttribute('type'))
return element.tagName.match(/input/i)&&element.getAttribute('type').match(/checkbox/i);return false;},isTextArea:function(element)
{return element.tagName.match(/textarea/i)!=null;},containerOf:function(element)
{},validate:function(element,className)
{var valid=true;var errorMessage;switch(className)
{case'required':{if(element.getAttribute('type')=='checkbox'||element.getAttribute('type')=='radio')
{var oForm=this.form;if(oForm[element.name].length)
{var bChecked=false;$A(oForm[element.name]).each(function(elm)
{if(elm.checked)
bChecked=true;}.bind(this));valid=valid&&bChecked;}
else
valid=valid&&element.checked;}
else if(RedSquare.isSelect(element))
{valid=valid&&(Form.Element.getValue(element)!=''&&Form.Element.getValue(element)!=0);}
else
valid=valid&&element.value.trim()!='';break;}
case'email':{valid=valid&&element.value.trim()==''||element.value.isEmailAddress();break;}
case'integer':{valid=valid&&element.value.trim()==''||element.value.isInteger();break;}
case'float':{valid=valid&&element.value.trim()==''||element.value.isFloat();break;}
case'float1dp':{valid=valid&&element.value.trim()==''||(element.value.isFloat()&&(new Number(element.value)).toFixed(1)==(new Number(element.value)));break;}
case'currency':{var numVal=(new Number(element.value));var isInt=numVal.toFixed(0)==element.value;var isOneDp=numVal.toFixed(1)==element.value;var isTwoDp=numVal.toFixed(2)==element.value;valid=valid&&element.value.trim()==''||(element.value.isFloat()&&(isInt||isOneDp||isTwoDp));break;}
case'float2dp':{valid=valid&&element.value.trim()==''||(element.value.isFloat()&&(new Number(element.value)).toFixed(2)==element.value);break;}
case'float3dp':{valid=valid&&element.value.trim()==''||(element.value.isFloat()&&(new Number(element.value)).toFixed(3)==element.value);break;}
case'float4dp':{valid=valid&&element.value.trim()==''||(element.value.isFloat()&&(new Number(element.value)).toFixed(4)==element.value);break;}
case'percent':{valid=valid&&element.value.trim()==''||(element.value.isFloat()&&element.value<=100&&element.value>=0);break;}
case'time12':{var validTime=true;var validTimeSyntax=element.value.match(/^\d{1,2}:\d{1,2}$/);if(validTimeSyntax)
{var aTimeParts=element.value.split(':');var hourPart=aTimeParts[0];var minutePart=aTimeParts[1];if(parseInt(hourPart)<=0||parseInt(hourPart)>12)
{validTime=false;}
if(parseInt(minutePart)<0||parseInt(minutePart)>59)
{validTime=false;}}
valid=valid&&element.value.trim()==''||(validTimeSyntax&&validTime);break;}
case'time24':{var validTime=true;var validTimeSyntax=element.value.match(/^\d{1,2}:\d{1,2}$/);if(validTimeSyntax)
{var aTimeParts=element.value.split(':');var hourPart=aTimeParts[0];var minutePart=aTimeParts[1];if(parseInt(hourPart)<=0||parseInt(hourPart)>23)
{validTime=false;}
if(parseInt(minutePart)<0||parseInt(minutePart)>59)
{validTime=false;}}
valid=valid&&element.value.trim()==''||(validTimeSyntax&&validTime);break;}
case'date':{var validDateSyntax=element.value.match(/^\d{1,2}(\/)\d{1,2}\1\d{4}$/);if(validDateSyntax)
{var aDateParts=element.value.split('/');var dayVal=aDateParts[0];var monVal=aDateParts[1]-1;var yrVal=aDateParts[2];var oDate=new Date(yrVal,monVal,dayVal);if(oDate&&(oDate.getFullYear()==yrVal)&&(oDate.getMonth()==monVal)&&(oDate.getDate()==dayVal))
var validDateObj=true;}
valid=valid&&element.value.trim()==''||(validDateSyntax&&validDateObj);break;}
default:{this.validators.each
(function(validator)
{if(className==validator.className)
{valid=valid&&validator.validate(element.value);errorMessage=validator.errorMessage;}}.bind(this));}}
if(!valid)
{if(this.errormsg[element.id])
if(this.errormsg[element.id][className])
errorMessage=this.errormsg[element.id][className];if(this.errormsgall[element.id])
if(!errorMessage)
errorMessage=this.errormsgall[element.id];this.addCulprit(element,errorMessage,className);}
else
{if(this.culprits.indexOf(element)==-1)
{this.removeCulpritClass(element,true);}}}});RedSquare.FieldValidator=Base.extend
({initialize:function(className,validate,errorMessage)
{this.className=className;this.validate=validate;this.errorMessage=errorMessage;}});Object.extend
(RedSquare.FieldValidator,{PATTERN_PHONE_BASIC:'^[0123456789()\. -+]+$',PATTERN_DATE_UK:'(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})',validatePhoneBasic:function(value)
{return value.trim()==''||value.match(new RegExp(RedSquare.FieldValidator.PATTERN_PHONE_BASIC));},parseDateUK:function(value)
{var matches=value.trim().match(new RegExp(RedSquare.FieldValidator.PATTERN_DATE_UK));if(matches&&matches.length>0)
{var day=parseInt(matches[1]);var month=parseInt(matches[2]);var year=parseInt(matches[3]);if(RedSquare.FieldValidator.isValidDateParts(year,month,day))
return new Date(Date.UTC(year,month,day-1,0,0,0));return false;}},isValidDateParts:function(year,month,day)
{if(isNaN(day)||day==0||day>31)
return false;if(isNaN(month)||month==0||month>12)
return false;if(isNaN(year)||year==0)
return false;switch(month)
{case 9,4,6,11:if(day>30)
return false;break;case 2:if((year%4==0&&day>29)||(year%4!=0&&day>28))
return false;break;default:if(day>31)
return false;}
return true;}});RedSquare.InPlaceEditor=Base.extend({constructor:function(control,options)
{this.control=control;this.value='';this.autoSelect=false;this.emptyText=' ';this.emptySelectText=' ';this.emptyClassName='inplaceempty';this.inplaceClassName='inplace';this.otherControls=new Array();this.matchWidth=true;this.BLUR_TIMEOUT=200;this.control.setAttribute('autocomplete','off');if(options)
{this.autoSelect=options.autoSelect==null?false:options.autoSelect;this.emptyText=options.emptyText==null?' ':options.emptyText;this.emptySelectText=options.emptySelectText==null?' ':options.emptySelectText;this.emptyClassName=options.emptyClassName==null?'inplaceempty':options.emptyClassName;if(options.otherControls)
this.otherControls=options.otherControls;if(options.inplaceClassName)
this.inplaceClassName=this.options.inplaceClassName;if(options.getViewValue)
this.getViewValue=options.getViewValue;this.onBlur=options.onBlur?options.onBlur.bind(this):null;this.onFocus=options.onFocus?options.onFocus.bind(this):null;this.onChange=options.onChange?options.onChange.bind(this):null;this.onKeyPress=options.onKeyPress?options.onKeyPress.bind(this):null;this.onClick=options.onClick?options.onClick.bind(this):null;if(options.matchWidth)
this.matchWidth=options.matchWidth;}
if(this.onKeyPress)
Event.observe(this.control,'keypress',this.onKeyPress);new Insertion.After(this.control,'<div id="'+this.control.id+'Inplace" class="inplace"></div>');this.inplace=$(this.control.id+'Inplace');Event.observe(this.inplace,'click',this.inPlaceOnClick.bindAsEventListener(this));Event.observe(this.control,'blur',this.controlOnBlur.bindAsEventListener(this));Event.observe(this.control,'focus',this.controlOnFocus.bindAsEventListener(this));var label=RedSquare.labelOf(this.control);if(label)
Event.observe(label,'click',this.controlOnFocusFromLabel.bindAsEventListener(this));Event.observe(this.control,'keypress',this.controlOnKeyPress.bindAsEventListener(this));if(this.control.options)
Event.observe(this.control,'change',this.controlOnKeyPress.bindAsEventListener(this));this.otherControls.each
(function(control)
{Event.observe(control,'focus',this.controlOnFocus.bindAsEventListener(this));Event.observe(control,'blur',this.controlOnBlur.bindAsEventListener(this));var label=RedSquare.labelOf(control);if(label)
{Event.observe(label,'click',this.controlOnFocusFromLabel.bindAsEventListener(this));}}.bind(this));if(this.matchWidth)
{this.inplace.style.width=(this.control.offsetWidth-6)+'px';}
this.control.blur();this.value=this.control.value;this.updateFromControl();this.viewMode();this.resetValue=this.value;},refresh:function()
{this.updateFromControl(true);this.viewMode();},setValue:function(value)
{this.inplace.value=value;Form.Element.setValue(this.control.id,value);},reset:function()
{this.control.value=this.resetValue;this.viewMode();},setResetValue:function(value)
{this.resetValue=this.value;},focus:function()
{this.editMode();if(Element.visible(this.control))
this.control.focus();},inPlaceOnClick:function()
{if(!this.control.disabled&&!this.control.readOnly)
{this.editMode();if(Element.visible(this.control))
this.control.focus();if(this.autoSelect)
{if(this.control.select)
this.control.select();}
if(this.onFocus)
this.onFocus(this);if(this.onClick)
{this.onClick();}}},controlOnKeyPress:function(event)
{if(this.onKeyPress)
{this.onKeyPress(event);}
if(event.keyCode==Event.KEY_TAB)
{if(event.shiftKey)
{if(this.previousControl)
{this.blur();this.otherControlFocused=false;if(this.previousControl.focus)
this.previousControl.focus();Event.stop(event);}}
else
{if(this.nextControl)
{this.blur();this.otherControlFocused=false;if(this.nextControl.focus)
this.nextControl.focus();Event.stop(event);}}}
if(event.keyCode==Event.KEY_RETURN)
{this.otherControlFocused=false;}
else if(event.keyCode==Event.KEY_ESC)
{this.control.value=this.value;this.viewMode();}},controlOnBlur:function(event)
{this.blur();this.otherControlFocused=false;},controlOnFocusFromLabel:function(event)
{var elm=Event.element(event);if(this.nTimeout)
window.clearTimeout(this.nTimeout);this.otherControlFocused=true;this.editMode();},controlOnFocus:function(event)
{if(this.nTimeout)
window.clearTimeout(this.nTimeout);this.otherControlFocused=true;this.editMode();},blur:function()
{this.updateFromControl();this.nTimeout=window.setTimeout(this.delayViewMode.bind(this),this.BLUR_TIMEOUT);},delayViewMode:function()
{this.viewMode();if(this.onBlur)
this.onBlur(this);},updateFromControl:function(preventOnChange)
{var newValue;if(!this.getViewValue)
{if(this.control.options)
{if(this.control.options[this.control.selectedIndex].value=='')
newValue='';else
newValue=this.control.options[this.control.selectedIndex].text;}
else
{newValue=this.control.value;}}
else
{newValue=this.getViewValue();}
if(newValue.trim()=='')
{if(this.control.options)
this.inplace.update(this.emptySelectText);else
this.inplace.update(this.emptyText);}
else
{this.inplace.update(newValue);}
if(this.value!=newValue)
{if(this.onChange&&!preventOnChange)
this.onChange();}
this.value=newValue;},updateToControl:function()
{if(this.inplace.innerHTML.trim()!=this.emptyText)
this.control.value=this.inplace.innerHTML;},editMode:function()
{Element.hide(this.inplace);Element.show(this.control);this.otherControls.each
(function(control)
{Element.show(control);});if(this.onEditMode)
this.onEditMode();},viewMode:function()
{if(this.control.value.trim()=='')
this.inplace.addClassName(this.emptyClassName);else
this.inplace.removeClassName(this.emptyClassName);Element.hide(this.control);Element.show(this.inplace);this.otherControls.each
(function(control)
{Element.hide(control);});}});RedSquare.JSONClient=Base.extend({constructor:function(options)
{this.lastRequest=new Object();this.responses=new Object();this.cache=new Object();this.all=new Object();if(options)
{this.onResponse=options.onResponse;}},cacheResponse:function(response,isCached)
{if(response.url&&response.url!=""&&!isCached)
{this.cache[response.url]=response;}
this.updateAll(response);if(this.onResponse)
{this.onResponse(response.url,response.bindings);}},updateAll:function(response)
{$H(response.bindings).each
(function(binding)
{this.all[binding.key]=binding.value;}.bind(this));},sendFormRequest:function(form,options,cacheOptions)
{this.sendRequest
(form.getAttribute('action'),Object.extend(options,{parameters:Form.serialize(form)}));},retryLastRequest:function()
{if(this.lastRequest.url&&this.lastRequest.options)
{var request=new Ajax.Request(this.lastRequest.url,this.lastRequest.options);}},sendRequest:function(url,options)
{var startTime=(new Date()).valueOf();this.lastRequest.url=url;this.lastRequest.options=options;if(options&&options.parameters&&options.parameters.length>0)
options.parameters+='&d='+startTime;else
options.parameters='&d='+startTime;console.log('Request URL: '+url);console.log('Request Params: '+options.parameters);if(this.cache[url])
{this.cacheResponse(this.cache[url],true);}else{var request=new Ajax.Request
(url,options);}}});var detect=navigator.userAgent.toLowerCase();var OS,browser,version,total,thestring;function getBrowserInfo(){if(checkIt('konqueror')){browser="Konqueror";OS="Linux";}
else if(checkIt('safari'))browser="Safari";else if(checkIt('omniweb'))browser="OmniWeb";else if(checkIt('opera'))browser="Opera";else if(checkIt('webtv'))browser="WebTV";else if(checkIt('icab'))browser="iCab";else if(checkIt('msie'))browser="Internet Explorer";else if(!checkIt('compatible')){browser="Netscape Navigator";version=detect.charAt(8);}
else browser="An unknown browser";if(!version)version=detect.charAt(place+thestring.length);if(!OS){if(checkIt('linux'))OS="Linux";else if(checkIt('x11'))OS="Unix";else if(checkIt('mac'))OS="Mac";else if(checkIt('win'))OS="Windows";else OS="an unknown operating system";}}
function checkIt(string){place=detect.indexOf(string)+1;thestring=string;return place;}
Event.observe(window,'load',getBrowserInfo,false);RedSquare.LightBox=Base.extend({yPos:0,xPos:0,constructor:function(container,options)
{this.container=container;this.closeButtons=new Array();RedSquare.LightBox.initOverlay();this.events={documentOnKeyPress:this.documentOnKeyPress.bindAsEventListener(this)};this.showOverlay=true;this.verticalCenter=false;if(options)
{if(options.showOverlay!=null)
this.showOverlay=options.showOverlay;if(options.draggable)
new Draggable($(this.container));if(options.closeButtons)
{this.closeButtons=options.closeButtons;this.closeButtons.each
(function(closeButton)
{Event.observe(closeButton,'click',this.btnCloseOnClick.bindAsEventListener(this));}.bind(this));}
if(options.verticalCenter)
this.verticalCenter=options.verticalCenter;if(options.horizontalCenter)
this.horizontalCenter=options.horizontalCenter;}},btnCloseOnClick:function(event)
{this.hide();Event.stop(event);},documentOnKeyPress:function(event)
{if(event.keyCode==Event.KEY_ESC)
this.hide();},prepareIE:function(height,overflow)
{bod=document.getElementsByTagName('body')[0];bod.style.height=height;bod.style.overflow=overflow;htm=document.getElementsByTagName('html')[0];htm.style.height=height;htm.style.overflow=overflow;},hideSelects:function(visibility)
{selects=document.getElementsByTagName('select');for(i=0;i<selects.length;i++)
{var pf=new RedSquare.ParentFinder(selects[i]);if(!pf.findElement(this.container))
{selects[i].style.visibility=visibility;}}},getScroll:function()
{if(self.pageYOffset)
{this.yPos=self.pageYOffset;}
else if(document.documentElement&&document.documentElement.scrollTop)
{this.yPos=document.documentElement.scrollTop;}
else if(document.body)
{this.yPos=document.body.scrollTop;}},setScroll:function(x,y)
{window.scrollTo(x,y);},show:function(eventElement)
{if(browser=='Internet Explorer')
{this.getScroll();this.prepareIE('98%','hidden');this.setScroll(0,0);this.hideSelects('hidden');}
this.eventElement=eventElement;this.displayLightBox('block');Event.observe(document,'keypress',this.events.documentOnKeyPress);this.centerVertical();this.centerHorizontal();if(this.onShow)
this.onShow(eventElement);},centerVertical:function()
{if(this.verticalCenter)
{var nTop=((this.getWindowHeight()-this.container.offsetHeight)/2);if(nTop>1000)
nTop=145;this.container.style.top=nTop+'px';}},centerHorizontal:function()
{if(this.horizontalCenter)
{this.container.style.left=((this.getWindowWidth()-this.container.offsetWidth)/2)+'px';}},getWindowHeight:function()
{if(document.all)
return document.documentElement.clientHeight;else
return window.innerHeight;},getWindowWidth:function()
{if(document.all)
return document.documentElement.clientWidth;else
return window.innerWidth;},hide:function()
{this.displayLightBox("none");if(browser=="Internet Explorer")
{this.setScroll(0,this.yPos);this.prepareIE("auto","auto");this.hideSelects("visible");}
Event.stopObserving(document,'keypress',this.events.documentOnKeyPress);if(this.onHide)
this.onHide();},displayLightBox:function(display)
{if(this.showOverlay)
$('overlay').style.display=display;if(display=='block')
{this.hideSelects('hidden');$('overlay').style.height=(this.getWindowHeight()+'px');}
else
this.hideSelects('visible');$(this.container).style.display=display;}});Object.extend(RedSquare.LightBox,{initOverlay:function()
{if(!RedSquare.LightBox.overlayAvailable)
{bod=document.getElementsByTagName('body')[0];overlay=document.createElement('div');overlay.id='overlay';bod.appendChild(overlay);RedSquare.LightBox.overlayAvailable=true;}}});RedSquare.ParentFinder=Base.extend({constructor:function(element)
{this.element=element;},findTag:function(tagName)
{var matches;var className;var id;var useTagName;matches=tagName.match(/\.([\w\-]+)/i);if(matches)
className=matches[1];matches=tagName.match(/\#([\w\-]+)/i);if(matches)
id=matches[1];matches=tagName.match(/^([\w\-]+)/i);if(matches)
useTagName=matches[1];else
useTagName=tagName;return this.doFindTag(this.element,useTagName,className,id);},doFindTag:function(element,tagName,className,id)
{var re=new RegExp('^'+tagName+'$','i');if(element.tagName)
{if(element.tagName.match(re))
{if(className&&id)
{if(Element.hasClassName(element,className)&&element.id==id)
return element;}
else if(className)
{if(Element.hasClassName(element,className))
return element;}
else if(id)
{if(element.id==id)
return element;}
else
return element;}}
else if(element.nodeType==3)
{var ft;}
else
{return false;}
if(element.parentNode)
return this.doFindTag(element.parentNode,tagName,className,id);else
return false;},findElement:function(element)
{return this.doFindElement(this.element,element);},doFindElement:function(baseElement,element)
{if(baseElement==element)
return element;else
{if(baseElement.parentNode)
{return this.doFindElement(baseElement.parentNode,element);}
else
return false;}}});RedSquare.PopupBuilder=Base.extend({constructor:function(linkClassName,windowName,options,linksById)
{if(linkClassName&&linkClassName!='')
this.links=$$("a."+linkClassName);else if(linksById)
this.links=linksById;else
{this.links=$A(document.getElementsByTagName('a'));}
this.windowName=windowName;this.options=options;this.setup();},setup:function()
{this.processOptions();this.links.each
(function(element)
{Event.observe(element,'click',this.linkOnClick.bindAsEventListener(this));element.onclick=function(){return false;};}.bind(this));},linkOnClick:function(event)
{var element=Event.element(event);var pf=new RedSquare.ParentFinder(element);var link=pf.findTag('a');alert('called');if(link)
{this.window=window.open(link.href,this.windowName,this.options);this.window.focus();}
Event.stop(event);return false;},processOptions:function()
{var matches;var width;var height;matches=this.options.match(/width=([\d]+)/);if(matches)
{width=parseInt(matches[1]);this.options=this.options.replace(/left\=c/,'left='+((screen.availWidth-width)/2));}
matches=this.options.match(/height=([\d]+)/);if(matches)
{height=parseInt(matches[1]);this.options=this.options.replace(/top\=c/,'top='+((screen.availHeight-height)/2));}}});RedSquare.Repainter=Base.extend({constructor:function(element,interval)
{if(interval)
this.interval=interval;else
this.interval=10;this.element=element;Event.observe(window,'scroll',this.windowOnScroll.bindAsEventListener(this));},windowOnScroll:function(event)
{if(this.timeout)
window.clearTimeout(this.timeout);this.timeout=window.setTimeout(this.repaint.bind(this),this.interval);},repaint:function()
{if(this.element)
this.element.className=this.element.className;}});RedSquare.ShuffleBox=Base.extend({constructor:function()
{},setup:function()
{this.boxes=$A(document.getElementsByClassName("shufflebox"));this.hiddenDelim=',';this.boxes.each
(function(oShuffle,index)
{var btnAdd=document.getElementsByClassName("add",oShuffle)[0];var btnRemove=document.getElementsByClassName("remove",oShuffle)[0];if(btnAdd)
Event.observe(btnAdd,'click',this.addOnClick.bindAsEventListener(this));if(btnRemove)
Event.observe(btnRemove,'click',this.removeOnClick.bindAsEventListener(this));this.loadFromHidden(oShuffle);}.bind(this));},reset:function(element)
{var oSelected=document.getElementsByClassName('selected',element)[0];var oAvailable=document.getElementsByClassName('available',element)[0];var aOpts=$A(oSelected.options);aOpts.each
(function(opt,idx)
{var optNew=new Option(opt.text,opt.value);oAvailable.options[oAvailable.options.length]=optNew;}.bind(this));while(oSelected.options.length)
{oSelected.options[oSelected.options.length-1]=null;}},getSelectedTextList:function(element)
{var oSelected=document.getElementsByClassName('selected',element)[0];var aOpts=$A(oSelected.options);var sList='';aOpts.each
(function(opt,idx)
{sList+=opt.text+', ';}.bind(this));return sList.replace(/,\s$/gi,'');},loadFromHidden:function(element)
{var oHidden=document.getElementsByClassName('valueList',element.parentNode)[0];var oSelected=document.getElementsByClassName('selected',element)[0];var oAvailable=document.getElementsByClassName('available',element)[0];if(oHidden&&oHidden.value)
{var aValues=oHidden.value.split(this.hiddenDelim);aValues.each
(function(element)
{var aRemoves=new Array();var aOpts=$A(oAvailable.options);aOpts.each
(function(opt,idx)
{if(element==opt.value)
{var optNew=new Option(opt.text,opt.value);oSelected.options[oSelected.options.length]=optNew;aRemoves.push(idx);oAvailable.selectedIndex=idx;}}.bind(this));oAvailable.options[oAvailable.selectedIndex]=null;}.bind(this));}},removeCulpritClass:function(element)
{var oContainer=new RedSquare.ParentFinder(element).findTag("div.fieldContainer");if(oContainer&&Element.hasClassName(oContainer,'culprit'))
Element.removeClassName(oContainer,'culprit');if(oContainer)
{$A(document.getElementsByClassName('culprit',oContainer)).each(function(oCulprit)
{Element.removeClassName(oCulprit,'culprit');});}},addOnClick:function(event)
{var element=Event.element(event);this.removeCulpritClass(element);var classNames=Element.classNames(element);var fieldName='';if(classNames.toArray().length)
fieldName=classNames.toArray()[0];var oSelectAvail=document.getElementsByClassName(fieldName+' available')[0];var oSelectSelected=document.getElementsByClassName(fieldName+' selected')[0];if(oSelectAvail.selectedIndex>=0)
{for(var i=0;i<oSelectAvail.options.length;i++)
{if(oSelectAvail.options[i].selected)
{var opt=oSelectAvail.options[i];var optNew=new Option(opt.text,opt.value);oSelectSelected.options[oSelectSelected.options.length]=optNew;}}
for(var i=0;i<oSelectAvail.options.length;i++)
{if(oSelectAvail.options[i].selected)
{oSelectAvail.options[i]=null;i--;}}
this.rebuildFieldList(oSelectSelected,fieldName);}},removeOnClick:function(event)
{var element=Event.element(event);this.removeCulpritClass(element);var classNames=Element.classNames(element);var fieldName='';if(classNames.toArray().length)
fieldName=classNames.toArray()[0];var oSelectAvail=document.getElementsByClassName(fieldName+' available')[0];var oSelectSelected=document.getElementsByClassName(fieldName+' selected')[0];if(oSelectSelected.selectedIndex>=0)
{for(var i=0;i<oSelectSelected.options.length;i++)
{if(oSelectSelected.options[i].selected)
{var opt=oSelectSelected.options[i];var optNew=new Option(opt.text,opt.value);oSelectAvail.options[oSelectAvail.options.length]=optNew;}}
for(var i=0;i<oSelectSelected.options.length;i++)
{if(oSelectSelected.options[i].selected)
{oSelectSelected.options[i]=null;i--;}}
this.rebuildFieldList(oSelectSelected,fieldName);}},rebuildFieldList:function(oSelectSelected,fieldName)
{var aOpts=$A(oSelectSelected.options);var sVal='';aOpts.each(function(opt){sVal+=opt.value+',';}.bind(this));$(fieldName).value=sVal.replace(/,$/gi,'');}});RedSquare.Tab=Base.extend({constructor:function(button,panel,options,events)
{this.button=button;this.panel=panel;if(events)
{this.onBlur=events.onBlur;this.onFocus=events.onFocus;}},blur:function()
{if(this.onBlur)
this.onBlur();},focus:function()
{if(this.onFocus)
this.onFocus();}});RedSquare.TabGroup=Base.extend
({constructor:function(tabs,options,events)
{this.tabs=tabs;this.tabButtonCurrentClassName='current';this.maxPanelHeight=0;this.currentTab=this.tabs[0];this.matchPanelHeights=false;if(options)
{if(options.tabButtonCurrentClassName)
this.tabButtonCurrentClassName=options.tabButtonCurrentClassName;if(options.startTab)
this.currentTab=options.startTab;if(options.matchPanelHeights)
this.matchPanelHeights=options.matchPanelHeights;}
if(events)
{this.tabFocus=events.tabFocus;this.tabBlur=events.tabBlur;}
this.tabCount=this.tabs.length;this.tabs.each
(function(tab)
{Event.observe(tab.button,'click',this.tabButtonOnClick.bindAsEventListener(this));}.bind(this));this.showCurrentTab();},panelOf:function(button)
{return this.tabs.detect
(function(tab)
{return tab.button=button;});},buttonOf:function(panel)
{return this.tabs.detect
(function(tab)
{return tab.panel=panel;});},tabButtonOnClick:function(event)
{var element=Event.element(event);element.blur();var tab;tab=this.findTab(element);if(tab!=this.currentTab)
{if(this.tabBlur)
this.tabBlur();this.currentTab.blur();this.currentTab=tab;this.showCurrentTab();if(this.tabFocus)
this.tabFocus(this.currentTab);this.currentTab.focus();}
Event.stop(event);},showCurrentTab:function()
{Element.show(this.currentTab.panel);this.currentTab.button.addClassName(this.tabButtonCurrentClassName);if(this.matchPanelHeights)
{var height;if(this.currentTab.panel.style.height)
height=parseInt(this.currentTab.panel.style.height);else
height=this.currentTab.panel.offsetHeight;if(height>this.maxPanelHeight)
{this.maxPanelHeight=height;}
this.currentTab.panel.style.height=this.maxPanelHeight+'px';this.maxPanelHeight=parseInt(this.currentTab.panel.style.height);}
this.idleOtherButtons();this.hideOtherPanels();},hideOtherPanels:function()
{this.tabs.each
(function(tab)
{if(tab.panel!=this.currentTab.panel)
Element.hide(tab.panel);}.bind(this));},idleOtherButtons:function()
{this.tabs.each
(function(tab)
{if(tab.button!=this.currentTab.button)
tab.button.removeClassName(this.tabButtonCurrentClassName);}.bind(this));},findTab:function(element)
{var pf=new RedSquare.ParentFinder(element);return this.tabs.detect
(function(tab)
{return pf.findElement(tab.button)!=false;});}});RedSquare.TextCounter=Base.extend({constructor:function(field)
{Event.observe(field,'change',this.onLenChange.bindAsEventListener(this));Event.observe(field,'keydown',this.onLenChange.bindAsEventListener(this));Event.observe(field,'keyup',this.onLenChange.bindAsEventListener(this));this.calculateLength(field);},onLenChange:function(event)
{var elm=Event.element(event);this.calculateLength(elm);},calculateLength:function(elm)
{var maxLen=parseInt($(elm.id+'Limit').innerHTML);var currentLen=elm.value.length;$(elm.id+'Current').innerHTML=currentLen;if(currentLen>=maxLen)
{Element.addClassName($(elm.id+'Counter'),'invalid');if($(elm.id)&&$(elm.id).parentElement&&$(elm.id).parentElement.parentElement)
Element.addClassName($(elm.id).parentElement.parentElement,'culprit');}
else
{Element.removeClassName($(elm.id+'Counter'),'invalid');if($(elm.id)&&$(elm.id).parentElement&&$(elm.id).parentElement.parentElement)
Element.removeClassName($(elm.id).parentElement.parentElement,'culprit');}}});
 /*<!-- mp_trans_disable_end -->*/