// 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;i7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('