// xstatistics.js -- Report user information to Drupal // $Id$ function XSTAT(url, imagesrc, filesize) { // methods this.send = XSTATsend; this.run = XSTATrun; // save constructor arguments this.url = url; this.imagesrc = imagesrc; this.filesize = filesize; } function XSTATrun() { var obj = this; // general technical information this.enabled_java = navigator.javaEnabled(); this.user_agent = navigator.userAgent.toLowerCase(); this.agent_os = navigator.platform; this.screen_resx = screen.width; this.screen_resy = screen.height; this.color_depth = screen.colorDepth; if (navigator.language) { this.user_lang = navigator.language.toLowerCase(); } else if (navigator.browserLanguage) { this.user_lang = navigator.browserLanguage.toLowerCase(); } // some data for later var agent_moz = (navigator.appName.indexOf("Netscape") != -1); var agent_ie= (this.user_agent.indexOf("msie") != -1); var os_win = ((this.user_agent.indexOf("win")!=-1) || (this.user_agent.indexOf("32bit")!=-1)); // enabled plugins if (!os_win || agent_moz){ var mimelist = ''; for (var i=0; i < navigator.mimeTypes.length; i++) mimelist += navigator.mimeTypes[i].type.toLowerCase(); this.enabled_dir = plugMoz(mimelist, "application/x-director"); this.enabled_flash = plugMoz(mimelist, "application/x-shockwave-flash"); this.enabled_pdf = plugMoz(mimelist, "application/pdf"); this.enabled_qt = plugMoz(mimelist, "video/quicktime"); this.enabled_real = plugMoz(mimelist, "audio/x-pn-realaudio-plugin"); this.enabled_wma = plugMoz(mimelist, "application/x-mplayer2"); } else if (os_win && agent_ie){ this.enabled_dir = plugIE("SWCtl.SWCtl.1"); this.enabled_flash = plugIE("ShockwaveFlash.ShockwaveFlash.1"); this.enabled_pdf = (plugIE("PDF.PdfCtrl.1") || plugIE('PDF.PdfCtrl.5') || plugIE('PDF.PdfCtrl.6')); this.enabled_qt = plugIE("QuickTimeCheckObject.QuickTimeCheck.1"); this.enabled_real = plugIE("rmocx.RealPlayer G2 Control.1"); this.enabled_wma = plugIE("MediaPlayer.MediaPlayer.1"); } if (document.images) { var start = (new Date()).getTime(); var pic = new Image(1,1); pic.src = this.imagesrc; var end = (new Date()).getTime(); this.speed = compute_speed(start, end, this.filesize) } } function XSTATsend() { var end = (new Date()).getTime(); // make up the GET uri var geturl = this.url + "?"; geturl = geturl + "&java=" + this.enabled_java; geturl = geturl + "&os=" + escape(this.agent_os); geturl = geturl + "&resx=" + this.screen_resx; geturl = geturl + "&resy=" + this.screen_resy; geturl = geturl + "&color=" + this.color_depth; geturl = geturl + "&lang=" + escape(this.user_lang); geturl = geturl + "&director=" + this.enabled_dir; geturl = geturl + "&flash=" + this.enabled_flash; geturl = geturl + "&pdf=" + this.enabled_pdf; geturl = geturl + "&qt=" + this.enabled_qt; geturl = geturl + "&real=" + this.enabled_real; geturl = geturl + "&wma=" + this.enabled_wma; geturl = geturl + "&speed=" + this.speed; HTTPGet(geturl); } // helper functions function compute_speed(start, end, filesize) { return (Math.floor((((filesize * 8) / ((end - start) / 1000)) / 1024) * 10) / 10); } function plugMoz(mimetypes, plugin) { return (mimetypes.indexOf(plugin) != -1 && (navigator.mimeTypes[plugin].enabledPlugin != null)); } function plugIE(plugin) { found = false; document.write('\n on error resume next \n found = IsObject(CreateObject("' + plugin + '"))\n'); return found; }