var StringUtils={labelReplace:function(b,d){var a=String(b);for(var c=0;c<d.length;c++){a=a.replace("{"+c+"}",d[c])}return a},formatBR:function(a){return a.replace("\n","<br />\n")},shortenText:function(h,d,f){var k=0;var e=-1;var j=-1;var a=0;for(var c=0,b=h.length;c<b;c++){var g=h.charAt(c);a++;if(g=="/r"){continue}else{if(g=="/n"){k++;e=0;j=0}else{if(g==" "){j=e++}else{e++}}}if(e==d){if(g!=" "){e-=j}else{e=0}k++;if(f>1){j=0}}if(k==f){break}}if(a<h.length){a=a-(d-j);return h.substr(0,a)}else{return h}},isEmail:function(f){f=f.toLowerCase();var g="abcdefghijklmnopqrstuvwxyz-1234567890";var d=g+"_.";var c=d;var e=0;var a=0;for(var b=0,h=f.length;b<h;b++){if(c.indexOf(f.charAt(b))==-1){if(f.charAt(b)=="@"){c=g;e++}else{if((c==g)&&(f.charAt(b)==".")){if(b-a<2){return false}a=b}else{return false}}}}if(e==1){return true}return false},isExtendedEmail:function(f){if(StringUtils.isEmail(f)){return true}f=f.toLowerCase();var h='"abcdefghijklmnopqrstuvwxyz-1234567890 []';var e=false;var j=-1;var b;for(var d=0,a=f.length;d<a;d++){var g;if(h.indexOf(g=f.charAt(d))==-1){if(g=="<"){j=d;e=true;break}}}if(!e){return false}if(j>-1){var c=-1;b=f.substring(j+1,f.length);for(var d=b.length-1;d>-1;d--){if(b.charAt(d)==">"){c=d;break}else{if(b.charCodeAt(d)!=32){return false}}}return StringUtils.isEmail(b.substring(0,c-1))}else{return false}},isPhone:function(d){var a=7;var b=0;if(d.length<a){return false}for(var c=0;c<d.length;c++){if(!isNaN(d.charAt(c))){b++}}if(a<=b){return true}return false},isNumber:function(c,b,a){if((isNaN(c))||((b)&&(c<b))||((a)&&(c>a))){return false}return true},trim:function(a){var d=0;var c=0;for(var b=0;b<a.length;b++){if(a.charCodeAt(b)!=32){d=b;break}}for(var b=a.length;b>-1;b--){if(a.charCodeAt(b)!=32){c=b;break}}if(d!=c){return a.substr(d,c-d)}else{return""}},getFilename:function(a){return a.substring(a.lastIndexOf("/")+1,a.length)}};var ImageUtils={newImage:function(b){var a=document.createElement("img");a.setAttribute("src",b.filename);a.setAttribute("height",b.height);a.setAttribute("width",b.width);a.setAttribute("alt",b.alt);return a},centre:function(d,b,a){function c(f,g){return Math.floor((g-f)/2)}var e=0;if(d.height<a){e=c(d.height,a)}d.style.marginTop=e+"px";e=0;if(d.width<b){e=c(d.width,b)}d.style.marginLeft=e+"px"}};var FormUtils={findDataSelect:function(a,b){var c=a.options[a.options.selectedIndex].value;return this.findDataId(c,b)},findDataId:function(c,b){if(b==null){return null}for(var a=b.length-1;a>-1;a--){if(c==b[a]["id"]){return b[a]}}return null},selectById:function(d,a){var b=a.options;for(var c=b.length-1;c>-1;c--){if(b[c].value==d){b.selectedIndex=c;return}}},populateSelect:function(a,f,e){var b,h;if(e){b=e.name;h=e.id}else{b="name";h="id"}for(var d=0,g=f.length;d<g;d++){try{a.add(new Option(f[d][b],f[d][h]),null)}catch(c){a.add(new Option(f[d][b],f[d][h]))}}},newOption:function(c,d,b){var a=new Option(d,c);if(b){a.className=b}return a},select:function(d,a){var b=a.options.length-1;for(var c=b;c>-1;c--){if(a.options[c].value==d){a.selectedIndex=c;return}}},isEmail:function(a){return StringUtils.isEmail(document.getElementById(a).value)},isPhone:function(a){return StringUtils.isPhone(document.getElementById(a).value)},hasString:function(a){return((StringUtils.trim(document.getElementById(a).value).length)!==0)},clearDefault:function(b){var a=document.getElementById(b);if(a.defaultValue==a.value){a.value=""}},isChecked:function(a){return document.getElementById(a).checked==true},doHidden:function(a,c){for(name in a){var b=document.createElement("input");b.setAttribute("type","hidden");b.setAttribute("name",name);b.setAttribute("value",a[name]);c.appendChild(b)}},getCookie:function(a){var b=document.cookie.match("(^|;) ?"+a+"=([^;]*)(;|$)");if(b){return(unescape(b[2]))}else{return null}},DW_STATUS_UNSET:0,DW_STATUS_INVALID:1,DW_STATUS_VALID:2,dwStatus:function(h){var g=h.id;var c=document.getElementById("day_"+g);var a=document.getElementById("month_"+g);var f=document.getElementById("year_"+g);if((c.selectedIndex==0)||(a.selectedIndex==0)||(f.selectedIndex==0)){return this.DW_STATUS_UNSET}var e=new Date();var b=a.options[a.selectedIndex].value-1;e.setFullYear(f.options[f.selectedIndex].value,b,c.options[c.selectedIndex].value);if(b!=e.getMonth()){return this.DW_STATUS_INVALID}document.getElementById("hdn_"+g).value=e.getFullYear()+"-"+e.getMonth()+"-"+e.getDate();return this.DW_STATUS_VALID},dwGetDate:function(c){var b=document.getElementById("hdn_"+c).value;if((b.length)==0){return null}b=b.split("-");var a=new Date();a.setFullYear(b[0],b[1],b[2]);a.setHours(0,0,0,0);return a},getInputData:function(d,h,g){var k;var j=null;if(d.id.indexOf("o_")===0){throw"option elements are part of a checkbox group and cannot be accessed this way"}else{if((d.nodeName=="INPUT")||(d.nodeName=="TEXTAREA")){k=(d.value.length==0)?null:d.value}else{if(d.nodeName=="SELECT"){var b=d.options[d.selectedIndex].value;if((b!=="0")&&(b!=="other")){k=d.options[d.selectedIndex].value;j=d.options[d.selectedIndex].text}}else{if(d.nodeName=="DIV"){if(d.className=="dateWidget"){k=this.dwGetDate(d.id)}else{if(d.className=="dtCalendar"){k=g.calendars[d.id].selectedDate}else{if(d.className=="chkBoxContainer"){var e=g.div.getElementsByTagName("form")[0].elements[d.id+"[]"];var a=e.length;k=[];for(var c=0;c<a;c++){var f=e[c];if(f.checked){k[k.length]={id:f.id,value:f.value,name:document.getElementById("lbl_"+f.id).innerHTML}}}if(k.length==0){k=null}}}}}else{throw ("unsupported node type "+criterion.input.nodeName)}}}}if((k!==null)&&(k!==undefined)){out={id:d.id,value:k,name:h};if(j!==null){out.valueLbl=j}return out}else{return null}}};function FormValidator(){this.criteria=[];this.messages=""}FormValidator.prototype.valid=true;FormValidator.prototype.addCriteria=function(b,a){this.criteria[this.criteria.length]={message:b,isValid:a}};FormValidator.prototype.validate=function(){this.messages="";this.valid=true;for(var a=0;a<this.criteria.length;a++){if(!this.criteria[a].isValid()){this.valid=false;this._addMessage(this.criteria[a].message)}}};FormValidator.prototype._addMessage=function(a){this.messages+="*   "+a+"\n"};BasicValidator.prototype=new FormValidator();BasicValidator.prototype.constructor=BasicValidator;function BasicValidator(a){if(a){this.errorTitle=a}}BasicValidator.prototype.errorTitle=null;BasicValidator.prototype.validate=function(){FormValidator.prototype.validate.call(this);if(!this.valid){alert(this.errorTitle+"\r\n"+this.messages);return false}else{return true}};function DomValidator(b,d,c,a){this.errorDivs=[];this.criteria=[];this.parentClassName=b;this.parentErrClassName=d;this.errClassName=c;this.errNodeType=a||"div"}DomValidator.prototype.addCriteria=function(d,a,e,f,c){var b=null;if(c){b=document.getElementById(a).parentNode.className}this.criteria[this.criteria.length]={message:e,validator:d,input:null,inputId:a,parentErrClassName:f,parentClassName:b}};DomValidator.prototype.removeCriteria=function(b){var d=this.criteria.length;var a=-1;for(var c=d;c>-1;c--){if(this.criteria[c].inputId==b){a=c;break}}if(a!=-1){this.criteria.splice(a,1)}};DomValidator.prototype.removeError=function(a){if(this.errorDivs[a]){var b=this.errorDivs[a];b.parentNode.className=this.parentClassName;b.parentNode.removeChild(b);this.errorDivs[a]=null}};DomValidator.prototype.getParams=function(){var c=[];for(var a=0;a<this.criteria.length;a++){var b=this.criteria[a];if(b.input.nodeName=="INPUT"){c[b.input.id]=b.input.value}else{if(b.input.nodeName=="SELECT"){c[b.input.id]=b.input.options[b.input.selectedIndex].value}}}return c};DomValidator.prototype.setDivError=function(a){errorDiv=document.createElement(this.errNodeType);errorDiv.className=this.errClassName;errorDiv.innerHTML=a.message;a.input.parentNode.appendChild(errorDiv);errorDiv.parentNode.className=((a.parentErrClassName)||(a.parentErrClassName===null))?a.parentErrClassName:this.parentErrClassName;return errorDiv};DomValidator.prototype.removeDivError=function(a){div=this.errorDivs[a.inputId];div.parentNode.className=(a.parentClassName)?a.parentClassName:this.parentClassName;div.parentNode.removeChild(div)};DomValidator.prototype.validate=function(){var a=true;var k=[];for(var d=this.criteria.length-1,g=d;g>-1;g--){var l=this.criteria[g];if(!l.input){var b=document.getElementById(l.inputId);if(b==null){throw"element does not exist "+l.inputId}l.input=b}var m=false;var h=(k.length-1);for(var f=h;f>-1;f--){if(k[f]==l.inputId){m=true}}if(m){continue}var c;if((l.input.nodeName=="INPUT")||(l.input.nodeName=="TEXTAREA")){c=l.validator(l.input.value)}else{if(l.input.nodeName=="SELECT"){c=l.validator(l.input)}else{if((l.input.nodeName=="DIV")&&((l.input.className=="dateWidget")||(l.input.className=="dtCalendar"))||(l.input.className=="chkBoxValidator")){c=l.validator(l.input)}else{throw ("unsupported node type "+l.input.nodeName)}}}var e=this.errorDivs[l.inputId];if(e){if(c){this.removeDivError(l);this.errorDivs[l.inputId]=null;continue}else{k.push(l.inputId);a=false;continue}}else{if(c){continue}}this.errorDivs[l.inputId]=this.setDivError(l);k.push(l.inputId);a=false}return a};var DOMTools={getOffsetTop:function(c){var b=c.offsetTop;var a=c.offsetParent;while(a){b+=a.offsetTop;a=a.offsetParent}return b},getOffsetLeft:function(c){var b=c.offsetLeft;var a=c.offsetParent;while(a){b+=a.offsetLeft;a=a.offsetParent}return b},positionChild:function(b,a){parent=document.getElementById(b);document.getElementById(a).style.left=this.getOffsetLeft(parent)+"px";document.getElementById(a).style.top=(this.getOffsetTop(parent)+parent.offsetHeight)+"px"},showHide:function(c,a){var b=document.getElementById(a);if(b.display=="none"){b.display=((b.display=="none")?"inline":"none");this.positionChild(c,a)}else{b.display="none"}},centre:function(a){var h=a.parentNode;function e(j,k){return Math.floor((k-j)/2)}function i(j){return Number(j.replace("px",""))}var f=i(a.style.height);var c=i(a.style.width);var g=i(h.style.height);var b=i(h.style.width);var d=0;if(f<g){d=e(f,g)}a.style.marginTop=d+"px";d=0;if(c<b){d=e(c,b)}a.style.marginLeft=d+"px"}};var EventUtils={attachClick:function(a,b){if(a.addEventListener){a.addEventListener("click",b,false)}else{if(a.attachEvent){a.attachEvent("onclick",b)}}}};var AJAXHandler=function(b,a){this.http=null;this.url=a;this.post=b;this.params=null;this.multiParams=null;try{this.http=new XMLHttpRequest()}catch(c){try{this.http=new ActiveXObject("Msxml2.XMLHTTP")}catch(c){try{this.http=new ActiveXObject("Microsoft.XMLHTTP")}catch(c){throw ("AJAX UNSUPPORTED")}}}};AJAXHandler.prototype.setStateChange=function(a){this.http.onreadystatechange=a};AJAXHandler.prototype.setParams=function(a){this.params=a};AJAXHandler.prototype.addParam=function(a,b){if(this.multiParams==null){this.multiParams=[]}this.multiParams.push(a+"="+encodeURIComponent(b))};AJAXHandler.prototype.doRequest=function(){var c="";if(this.params!=null){for(key in this.params){c+=((c.length==0)?"":"&")+key+"="+encodeURIComponent(this.params[key])}}if(this.multiParams!=null){var d=this.multiParams.length;for(var b=0;b<d;b++){c+=((c.length==0)?"":"&")+this.multiParams[b]}}var a=this.http;if(this.post){a.open("POST",this.url,true);a.setRequestHeader("Content-type","application/x-www-form-urlencoded");a.setRequestHeader("Content-length",c.length);a.setRequestHeader("Connection","close");a.send(c)}else{a.open("GET",this.url+"?"+c,true);a.send(null)}};var AJAXHelpers={formAssign:function(d){var e=new AJAXHandler((d.getAttribute("method")=="post"),d.getAttribute("action"));var a=d.elements.length-1;for(var c=a;c>-1;c--){var b=d.elements[c];var f;if(b.nodeName=="SELECT"){f=b.options[b.selectedIndex].value}else{if((b.nodeName=="INPUT")&&(b.type=="radio")){if(!b.checked){continue}f=b.value}else{if((b.nodeName=="INPUT")||(b.nodeName=="TEXTAREA")){f=b.value}else{throw"Unsupported node type: "+b.nodeName}}}e.addParam(b.name,f)}return e},stdRequestHandler:function(a){if(a.http.readyState==4){if((a.http.status!==200)||(a.http.responseText!="ok")){alert(a.http.responseText)}}}};