document.getWindowWidth=function(){return $(window).width();}
document.getWindowHeight=function(){return $(window).height();}
document.getScrollLeft=function(){return this._filterResults(window.pageXOffset?window.pageXOffset:0,document.documentElement?document.documentElement.scrollLeft:0,document.body?document.body.scrollLeft:0);}
document.getScrollTop=function(){return this._filterResults(window.pageYOffset?window.pageYOffset:0,document.documentElement?document.documentElement.scrollTop:0,document.body?document.body.scrollTop:0);}
document._filterResults=function(n_win,n_docel,n_body){var n_result=n_win?n_win:0;if(n_docel&&(!n_result||(n_result>n_docel))){n_result=n_docel;}
return n_body&&(!n_result||(n_result>n_body))?n_body:n_result;}
document.getDocumentWidth=function(){return $(document).width();}
document.getDocumentHeight=function(){return $(document).height();}
document.getElementWidth=function(element){var width;do{if(element.offsetWidth){width=element.offsetWidth;}else{width=element.clientWidth;}
styleWidth=document.getStyleValue(element,'width');if(styleWidth.indexOf('%')>=0||styleWidth==='auto'){styleWidth=0}else{styleWidth=parseInt(styleWidth.replace(/[^0-9\.]/,''));}
element=element.parentNode;}while(element!=null&&width==0&&styleWidth==0);if(width==0){width=styleWidth;}
return width;}
document.getElementHeight=function(element){var height;do{if(element.offsetHeight){height=element.offsetHeight;}else{height=element.clientHeight;}
styleHeight=document.getStyleValue(element,'height');if(styleHeight.indexOf('%')>=0||styleHeight==='auto'){styleHeight=0}else{styleHeight=parseInt(styleHeight.replace(/[^0-9\.]/,''));}
element=element.parentNode;}while(element!=null&&height==0&&styleHeight==0);if(height==0){height=styleHeight;}
return height;}
document.getElementX=function(obj){var x=obj.x?obj.x:obj.offsetLeft;while((obj=obj.offsetParent)!=null){x+=obj.offsetLeft;}
return x;}
document.getElementY=function(obj){var y=obj.y?obj.y:obj.offsetTop;while((obj=obj.offsetParent)!=null){y+=obj.offsetTop;}
return y;}
document.preloadImage=function(imageSrc){if(document._visioncms_preloadImage==null){document._visioncms_preloadImage=document.createElement('IMG');}
document._visioncms_preloadImage.src=imageSrc;}
document.showLoadingMessage=function(status,message,zIndex){if(status==null||status){$.showLoadingMessage({message:message,zIndex:zIndex});}else{$.hideLoadingMessage();}}
var enabledSelects=new Array();document.blockInput=function(status,zIndex,exception,opacity){if(status==null){status=true;}
if(status){if(zIndex==null){zIndex=2000;}
if(opacity==null){opacity=80;}
$.blockUI({message:null,baseZ:zIndex,overlayCSS:{backgroundColor:'#fff',opacity:(opacity/10)}});}else{$.unblockUI();}}
document.isChildOf=function(childObj,parentObj){while(childObj.parentNode!=parentObj&&childObj.parentNode!=null){childObj=childObj.parentNode;}
return(childObj.parentNode==parentObj);}
document.getElementsByClassName=function(className,tag,elm){var testClass=new RegExp("(^|\\s)"+className+"(\\s|$)");var tag=tag||"*";var elm=elm||document;var elements=(tag=="*"&&elm.all)?elm.all:elm.getElementsByTagName(tag);var returnElements=[];var current;var length=elements.length;for(var i=0;i<length;i++){current=elements[i];if(testClass.test(current.className)){returnElements.push(current);}}
return returnElements;}
document.loadStylesheet=function(href,media){$.loadStylesheet(href,media);}
document.stylePropertyHashTable={'float':'cssFloat'}
document.getStylePropertyJsName=function(property){if(document.stylePropertyHashTable[property]!=null){return document.stylePropertyHashTable[property];}else{var jsProperty='';for(var i=0;i<property.length;i++){if(property.charAt(i)=='-'){jsProperty+=property.charAt(i+1).toUpperCase();++i;}else{jsProperty+=property.charAt(i);}}
document.stylePropertyHashTable[property]=jsProperty;return jsProperty;}}
document.getStyleValue=function(element,property){if(typeof(element.currentStyle)!='undefined'){var value=element.currentStyle[this.getStylePropertyJsName(property)];}else{var value=window.getComputedStyle(element,null).getPropertyValue(property);}
switch(property){case'color':case'background-color':if(value.indexOf('rgb')==0){var rgba=value.indexOf('rgba')==0;value=value.substr(rgba?5:4,value.length-(rgba?6:5));value=value.split(', ');var colour='#';if(rgba&&value[3]==0){colour='transparent';}else{for(i=0;i<3;i++){var part=parseInt(value[i]).toString(16);if(part.length==1){part='0'+part;}
colour+=part;}}
value=colour;}
break;case'background-position-y':if(value==''){value='top';}
break;case'background-position-x':if(value==''){value='left';}
break;}
return value;}
document.setStyleValue=function(element,property,value){switch(property){case'background-position-x':if(document.browserInfo.isFirefox){element.style.backgroundPosition=value+' '+this.getStyleValue(element,'background-position-y');return;}
break;case'background-position-y':if(document.browserInfo.isFirefox){element.style.backgroundPosition=this.getStyleValue(element,'background-position-x')+' '+value;return;}
break;}
element.style[this.getStylePropertyJsName(property)]=value;}
document.assignStyleClass=function(element,className){if(!document.hasStyleClass(element,className)){element.className+=(element.className==''?'':' ')+className;}}
document.hasStyleClass=function(element,className){return(element.className.indexOf(className)>=0);}
document.removeStyleClass=function(element,className){if(document.hasStyleClass(element,className)){element.className=element.className.replace(className,'').trim();}}
String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,'');}
String.prototype.ltrim=function(){return this.replace(/^\s+/,'');}
String.prototype.rtrim=function(){return this.replace(/\s+$/,'');}
Array.prototype.binarySearchFilter=function(key){if(key==''){return-1;}
key=key.toLowerCase();var low=0;var high=this.length-1;var middle;var text;while(low<=high){middle=(low+high)>>>1;text=this[middle].substring(0,key.length);if(key==text){while(middle>0&&this[middle-1].substring(0,key.length)==key){--middle;}
return middle;}else if(key<text){high=middle-1;}else{low=middle+1;}}
return-1;}
Array.prototype.contains=function(item){for(var i=0;i<this.length;i++){if(this[i]==item){return true;}}
return false;}
document.textarea_enforceMaxlength=function(e){var e=new EventInfo(e,'TEXTAREA');var maxlength=e.target.getAttribute('maxlength');switch(e.type){case'keypress':if(e.keyCode<32){return true;}
if(e.target.value.length>=maxlength){e.cancel();return false;}
return true;break;case'keyup':if(e.target.value.length>maxlength){alert('A maximum of '+maxlength+' characters can be entered in this field. Your input will be truncated to meet this restriction.');e.target.value=e.target.value.substring(0,maxlength);e.target.focus();}
document.getElementById(e.target.id+'_charCount').innerHTML=e.target.value.length;break;}
return true;}
document.input_limitChars=function(e){e=new EventInfo(e);var availableChars=e.target.getAttribute('availableChars');if(e.keyCharacter==null){return;}
if(availableChars.indexOf(e.keyCharacter)==-1){e.cancel();return false;}
return true;}
document.browserInfo=new BrowserInfo();function BrowserInfo(){this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=(navigator.userAgent.indexOf('Gecko')!=-1);this.isSafari=(navigator.userAgent.indexOf('Safari')!=-1);this.isMac=(navigator.userAgent.indexOf('Mac')!=-1);this.isOpera=(navigator.userAgent.indexOf('Opera')!=-1);this.isFirefox=(navigator.userAgent.indexOf('Firefox')!=-1);this.version=(navigator.appName=='Microsoft Internet Explorer')?parseFloat((new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})")).exec(navigator.userAgent)[1]):-1;}
document.cancelEvent=function(e){if(e.event!=null){e=e.event;}
if(document.browserInfo.isMSIE){e.returnValue=false;e.cancelBubble=true;}
if(e.stopPropagation){e.stopPropagation();}
if(e.preventDefault){e.preventDefault();}}
document.registerEventHandler=function(parent,eventName,handler){if(parent==null){return;}
if(this.browserInfo.isMSIE){if(parent.eventHandlers==null){parent.eventHandlers=new Array();}
if(parent.eventHandlers[eventName]==null){parent.eventHandlers[eventName]=new Array();parent.attachEvent('on'+eventName,document.executeEventHandlers);}
parent.eventHandlers[eventName][parent.eventHandlers[eventName].length]=handler;}else{return parent.addEventListener(eventName,handler,true);}}
document.executeEventHandlers=function(e){e=new EventInfo(e);while((e.target.eventHandlers==null||e.target.eventHandlers[e.type]==null)&&e.target.parentNode!=null){e.target=e.target.parentNode;}
if(e.target.eventHandlers==null||e.target.eventHandlers[e.type]==null){return false;}
for(var i=0;i<e.target.eventHandlers[e.type].length;i++){e.target.eventHandlers[e.type][i](e.event);}
return true;}
function EventInfo(e,tagName){if(!e){e=window.event;}
this.event=e;this.type=e.type;this.currentTarget=e.currentTarget;this.target=(e.target!=null?e.target:e.srcElement);if(this.target!=null&&this.target.nodeType==3){this.target=this.target.parentNode;}
if(document.browserInfo.isMSIE&&this.target==null){this.target=parent;}
if(tagName!=null){this.target=this.getTarget(tagName);}
if(e.which){this.keyCode=e.which;}else{this.keyCode=e.keyCode;}
if(e.which==null||(e.which!=0&&e.which!=8)){this.keyCharacter=String.fromCharCode(this.keyCode);}else{this.keyCharacter=null;}
this.rightClick=(e.button==2);this.mouseX=0;this.mouseY=0;if(e.pageX||e.pageY){this.mouseX+=e.pageX;this.mouseY+=e.pageY;}else if(e.clientX||e.clientY){this.mouseX+=e.clientX+document.getScrollLeft();this.mouseY+=e.clientY+document.getScrollTop();}}
EventInfo.prototype.getTarget=function(tagName){if(typeof(tagName)=='undefined'||this.target.tagName==tagName.toUpperCase()){return this.target;}
target=this.target;while(target!=null){if(target.tagName==tagName.toUpperCase()){return target;}
target=target.parentNode;}
return null;}
EventInfo.prototype.cancel=function(){document.cancelEvent(this.event);}