function isUserAgentOpera(){return navigator.userAgent.indexOf("Opera")!=-1}function isUserAgentSafari(){return navigator.userAgent.indexOf("Safari")!=-1}function isUserAgentGeckoLinuxBased(){return navigator.userAgent.indexOf("Linux",0)>0&&navigator.userAgent.indexOf("Gecko/20",0)>0}function base64_encode(s){var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",v="",i,n,p,m,o,q,r,t=0;do{i=s.charCodeAt(t++);n=s.charCodeAt(t++);p=s.charCodeAt(t++);m=i>>2;o=((i&3)<<4)|(n>>4);q=((n&15)<<2)|(p>>6);r=p&63;if(isNaN(n)){q=r=64}else{if(isNaN(p)){r=64}}v=v+u.charAt(m)+u.charAt(o)+u.charAt(q)+u.charAt(r)}while(t<s.length);return v}function base64_decode(s){var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",v="",i,n,p,m,o,q,r,t=0;s=s.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{m=u.indexOf(s.charAt(t++));o=u.indexOf(s.charAt(t++));q=u.indexOf(s.charAt(t++));r=u.indexOf(s.charAt(t++));i=(m<<2)|(o>>4);n=((o&15)<<4)|(q>>2);p=((q&3)<<6)|r;v=v+String.fromCharCode(i);if(q!=64){v=v+String.fromCharCode(n)}if(r!=64){v=v+String.fromCharCode(p)}}while(t<s.length);return v}function get_url_parameter(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var f="[\\?&]"+e+"=([^&#]*)",g=new RegExp(f),h=g.exec(window.location.href);return(h==null)?"":h[1]}function GetLocalDateString(e,f,d){return new Date(d,f-1,e).toLocaleDateString()}function isNullOrEmpty(b){return null==b||0==b.length||"null"==b}function disableEnterKey(c){var d=(window.event)?window.event.keyCode:c.which;return(d!=13)}function innerText(f){var e="",d=0;if(null==f||null==f.childNodes){return}for(d=0;d<f.childNodes.length;d++){switch(f.childNodes[d].nodeType){case 1:e+=innerText(f.childNodes[d]);break;case 3:e+=f.childNodes[d].nodeValue;break}}return e}function json_array_sort_by(d,e,f){e=(e)?-1:1;return function(a,b){a=a[d];b=b[d];if(typeof(f)!="undefined"){a=f(a);b=f(b)}if(a<b){return e*-1}if(a>b){return e*1}return 0}}function CheckOfbServerReply(d){if(null==d||null==d.result){info_message_panel_update("Error: server returned null response.");return true}var c=false==isNullOrEmpty(d.result.ERROR)?d.result.ERROR:null==d.result[0]?null:d.result[0].ERROR;if(isNullOrEmpty(c)){return false}info_message_panel_update(c);if("SESSION_EXPIRED"==c){location.reload(true)}return true}function getFileExtension(c){var d=c.lastIndexOf(".");if(d>0){c=c.substring(d+1).toLowerCase();d=c.indexOf("?");if(d>0){return c.substring(0,d)}return c}else{return null}}function isValidEmail(d){var c=/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;return c.test(d)}function getValue(b){if(typeof b=="string"){return document.getElementById(b).value}if(typeof b=="object"){return b.value}throw"utils::getValue::invalid argument"}function setValue(d,c){if(typeof d=="string"){document.getElementById(d).value=c}else{if(typeof d=="object"){d.value=c}else{throw"utils::setValue::invalid argument"}}}function setInnerHTML(d,c){if(typeof d=="string"){document.getElementById(d).innerHTML=c}else{if(typeof d=="object"){d.innerHTML=c}else{throw"utils::setInnerHTML::invalid argument"}}}function getInnerHTML(d,c){if(typeof d=="string"){return document.getElementById(d).innerHTML}else{if(typeof d=="object"){return d.innerHTML}}throw"utils::setInnerHTML::invalid argument"}function setClass(c,d){if(typeof c=="string"){return document.getElementById(c).setAttribute("class",d)}if(typeof c=="object"){return c.setAttribute("class",d)}throw"utils::setClass::invalid argument"}function getClass(c,d){if(typeof c=="string"){return document.getElementById(c).getAttribute("class")}if(typeof c=="object"){return c.getAttribute("class")}throw"utils::getClass::invalid argument"}function appendClass(d,f){var e=getClass(d)+" "+f;setClass(d,e)}function removeClass(d,f){var e=getClass(d).replace(f,"");setClass(d,e)}function showElement(d,c){if(typeof d=="string"){d=document.getElementById(d)}if(null!=d){d.style.visibility=c?"visible":"hidden"}else{throw"utils::showElement::invalid argument"}}function enableElement(c,d){if(typeof c=="string"){c=document.getElementById(c)}if(null!=c){c.disabled=!d}else{throw"utils::enableElement::invalid argument"}};