// This object implements the global $SESSION variable: function SESSION() { function OBJECT(){} this.REQUEST = new OBJECT(); var browser = new OBJECT(); browser.USER_AGENT = navigator.userAgent; var userAgent = navigator.userAgent.toLowerCase(); var appVersion = navigator.appVersion.toLowerCase(); // Detect OS: if ( userAgent.indexOf ( "mac" ) >= 0 ) { browser.os = "Mac"; } else if ( userAgent.indexOf ( "win" ) >= 0 || userAgent.indexOf ( "16bit" ) >= 0 ) { browser.os = "Windows"; } else if ( userAgent.indexOf ( "unix" ) >= 0 || userAgent.indexOf ( "x11" ) >= 0 || userAgent.indexOf ( "linux" ) >= 0 || userAgent.indexOf ( "bsd" ) >= 0 || userAgent.indexOf ( "sunos" ) >= 0 || userAgent.indexOf ( "irix" ) >= 0 || userAgent.indexOf ( "lynx" ) >= 0 || userAgent.indexOf ( "hp-ux" ) >= 0 || userAgent.indexOf ( "aix" ) >= 0 || userAgent.indexOf ( "sco" ) >= 0 || userAgent.indexOf ( "ncr" ) >= 0 || userAgent.indexOf ( "dec" ) >= 0 || userAgent.indexOf ( "osf1" ) >= 0 || userAgent.indexOf ( "ultrix" ) >= 0 || userAgent.indexOf ( "sinix" ) >= 0 ) { browser.os = "Unix"; } // Detect Browser: if ( userAgent.indexOf ( "opera" ) >= 0 ) { browser.name = "Opera"; browser.version = parseFloat ( appVersion ); } else if ( userAgent.indexOf ( "konqueror" ) >= 0 ) { browser.name = "Konqueror"; var p = userAgent.indexOf ( "konqueror" ); browser.version = parseFloat ( appVersion.substring ( p + 10, appVersion.indexOf ( ";", p ) ) ); } else if ( browser.os == "Mac" && userAgent.indexOf ( "safari" ) >= 0 ) { browser.name = "Safari"; browser.version = parseFloat ( appVersion ); } else if ( appVersion.indexOf ( "msie" ) >= 0 ) { browser.name = "Internet Explorer"; var p = appVersion.indexOf ( "msie" ); if ( browser.os == "Mac" ) { browser.version = parseFloat ( userAgent.substring ( p + 5, userAgent.indexOf ( ";", 5 ) ) ); } else { browser.version = parseFloat ( appVersion.substring ( p + 5, appVersion.indexOf ( ";", p ) ) ); } } else if ( userAgent.indexOf ( "mozilla" ) >= 0 && userAgent.indexOf ( "spoofer" ) < 0 && userAgent.indexOf ( "compatible" ) < 0 && userAgent.indexOf ( "webtv" ) < 0 && userAgent.indexOf ( "hotjava" ) < 0 ) { if ( navigator.product.toLowerCase() == "gecko" && userAgent.indexOf ( "mozilla/5" ) >= 0 && ( navigator.vendor == "Firefox" || userAgent.indexOf ( "firefox" ) >= 0 ) ) { browser.name = "Firefox"; if ( navigator.vendorSub ) { browser.version = navigator.vendorSub; } else { browser.version = parseFloat ( userAgent.substring ( userAgent.indexOf ( "firefox" ) + 8 ) ); } } else if ( navigator.product.toLowerCase() == "gecko" && userAgent.indexOf ( "mozilla/5" ) >= 0 && ( navigator.vendor == "Firebird" || navigator.vendor == "Mozilla" || navigator.vendor == "Debian" || navigator.vendor == "" ) ) { browser.name = "Other Browser"; browser.version = ""; } else { browser.name = "Netscape"; if ( navigator.vendor == "Netscape" || navigator.vendor == "Netscape6" ) { browser.version = parseFloat ( navigator.vendorSub ); } else { browser.version = parseFloat ( appVersion ); } } } else { browser.name = "Unknown"; browser.version = ""; } browser.screen = new OBJECT(); browser.screen.x = screen.width; browser.screen.y = screen.height; this.REQUEST.BROWSER = browser; this.REQUEST.REFERER = document.referrer; } var $SESSION = new SESSION(); /////////////////////////////////////////////////////////////////////////////// // From: http://www.json.org/ => json2.js - 2011-03-23 and Minified: /* http://www.JSON.org/json2.js 2011-02-23 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. See http://www.JSON.org/js.html */ var JSON;if(!JSON){JSON={};} (function(){"use strict";function f(n){return n<10?'0'+n:n;} if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+ f(this.getUTCMonth()+1)+'-'+ f(this.getUTCDate())+'T'+ f(this.getUTCHours())+':'+ f(this.getUTCMinutes())+':'+ f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};} var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';} function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);} if(typeof rep==='function'){value=rep.call(holder,key,value);} switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';} gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); /////////////////////////////////////////////////////////////////////////////// // This object provides some useful web tools: function web() { function escapeIDENT ( id ) { return ( id.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/])/g,'\\$1') ); } this.escapeIDENT = escapeIDENT; } var web = new web(); function error_handler ( $error, $url, $line ) { if ( $error == 'uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.statusText]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: https://getfirebug.com/firebug-lite.js :: anonymous :: line 1383" data: no]' ) return; // || $url == "https://getfirebug.com/firebug-lite.js" $.get ( "/.shared/app/error_handler/", { error: $error, url: $url, line: $line } ); } onerror = error_handler;