Advertisement
Blade83

Collecting Browser Settings about Flash

Nov 25th, 2012
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * Author: $ Blade83
  3.  * Filename: client.js
  4.  *
  5.  * This Script collects settings about Flashplayer- Plugin on the Client´s side and
  6.  * stored them in cookies. So we can access via PHP on that cookies and get the
  7.  * informations about the Flashplayer on the Client Browser.
  8. */
  9.  
  10. function set_a_Cookie(c_name,value,exdays)
  11. {
  12.     var exdate=new Date();
  13.     exdate.setDate(exdate.getDate() + exdays);
  14.     var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
  15.     document.cookie=c_name + "=" + c_value;
  16. }
  17. var FlashDetect = new function(){
  18.     var self = this;
  19.     self.installed = false;
  20.     self.raw = "";
  21.     self.major = -1;
  22.     self.minor = -1;
  23.     self.revision = -1;
  24.     self.revisionStr = "";
  25.     var activeXDetectRules = [
  26.         {
  27.             "name":"ShockwaveFlash.ShockwaveFlash.7",
  28.             "version":function(obj){
  29.                 return getActiveXVersion(obj);
  30.             }
  31.         },
  32.         {
  33.             "name":"ShockwaveFlash.ShockwaveFlash.6",
  34.             "version":function(obj){
  35.                 var version = "6,0,21";
  36.                 try{
  37.                     obj.AllowScriptAccess = "always";
  38.                     version = getActiveXVersion(obj);
  39.                 }catch(err){}
  40.                 return version;
  41.             }
  42.         },
  43.         {
  44.             "name":"ShockwaveFlash.ShockwaveFlash",
  45.             "version":function(obj){
  46.                 return getActiveXVersion(obj);
  47.             }
  48.         }
  49.     ];
  50.     var getActiveXVersion = function(activeXObj){
  51.         var version = -1;
  52.         try{
  53.             version = activeXObj.GetVariable("$version");
  54.         }catch(err){}
  55.         return version;
  56.     };
  57.     var getActiveXObject = function(name){
  58.         var obj = -1;
  59.         try{
  60.             obj = new ActiveXObject(name);
  61.         }catch(err){
  62.             obj = {activeXError:true};
  63.         }
  64.         return obj;
  65.     };
  66.     var parseActiveXVersion = function(str){
  67.         var versionArray = str.split(",");//replace with regex
  68.         return {
  69.             "raw":str,
  70.             "major":parseInt(versionArray[0].split(" ")[1], 10),
  71.             "minor":parseInt(versionArray[1], 10),
  72.             "revision":parseInt(versionArray[2], 10),
  73.             "revisionStr":versionArray[2]
  74.         };
  75.     };
  76.     var parseStandardVersion = function(str){
  77.         var descParts = str.split(/ +/);
  78.         var majorMinor = descParts[2].split(/\./);
  79.         var revisionStr = descParts[3];
  80.         return {
  81.             "raw":str,
  82.             "major":parseInt(majorMinor[0], 10),
  83.             "minor":parseInt(majorMinor[1], 10),
  84.             "revisionStr":revisionStr,
  85.             "revision":parseRevisionStrToInt(revisionStr)
  86.         };
  87.     };
  88.     var parseRevisionStrToInt = function(str){
  89.         return parseInt(str.replace(/[a-zA-Z]/g, ""), 10) || self.revision;
  90.     };
  91.     self.majorAtLeast = function(version){
  92.         return self.major >= version;
  93.     };
  94.     self.minorAtLeast = function(version){
  95.         return self.minor >= version;
  96.     };
  97.     self.revisionAtLeast = function(version){
  98.         return self.revision >= version;
  99.     };
  100.     self.versionAtLeast = function(major){
  101.         var properties = [self.major, self.minor, self.revision];
  102.         var len = Math.min(properties.length, arguments.length);
  103.         for(i=0; i < len; i++){
  104.             if(properties[i] >= arguments[i]){
  105.                 if(i+1 < len && properties[i]==arguments[i]){
  106.                     continue;
  107.                 }else{
  108.                     return true;
  109.                 }
  110.             }else{
  111.                 return false;
  112.             }
  113.         }
  114.     };
  115.     self.FlashDetect = function(){
  116.         if(navigator.plugins && navigator.plugins.length>0){
  117.             var type = 'application/x-shockwave-flash';
  118.             var mimeTypes = navigator.mimeTypes;
  119.             if(mimeTypes && mimeTypes[type] && mimeTypes[type].enabledPlugin && mimeTypes[type].enabledPlugin.description){
  120.                 var version = mimeTypes[type].enabledPlugin.description;
  121.                 var versionObj = parseStandardVersion(version);
  122.                 self.raw = versionObj.raw;
  123.                 self.major = versionObj.major;
  124.                 self.minor = versionObj.minor;
  125.                 self.revisionStr = versionObj.revisionStr;
  126.                 self.revision = versionObj.revision;
  127.                 self.installed = true;
  128.             }
  129.         }
  130.         else if(navigator.appVersion.indexOf("Mac")==-1 && window.execScript){
  131.             var version = -1;
  132.             for(var i=0; i < activeXDetectRules.length && version==-1; i++){
  133.                 var obj = getActiveXObject(activeXDetectRules[i].name);
  134.                 if(!obj.activeXError){
  135.                     self.installed = true;
  136.                     version = activeXDetectRules[i].version(obj);
  137.                     if(version!=-1){
  138.                         var versionObj = parseActiveXVersion(version);
  139.                         self.raw = versionObj.raw;
  140.                         self.major = versionObj.major;
  141.                         self.minor = versionObj.minor;
  142.                         self.revision = versionObj.revision;
  143.                         self.revisionStr = versionObj.revisionStr;
  144.                     }
  145.                 }
  146.             }
  147.         }
  148.         // lets write this information in a cookie
  149.         set_a_Cookie("flash_raw",self.raw,1);
  150.         set_a_Cookie("flash_major",self.major,1);
  151.         set_a_Cookie("flash_minor",self.minor,1);
  152.         set_a_Cookie("flash_revisionStr",self.revisionStr,1);
  153.         set_a_Cookie("flash_revision",self.revision,1);
  154.         set_a_Cookie("flash_installed",self.installed,1);
  155.     }();
  156. };
  157.  
  158. var Browserdimensions = new function(){
  159.     var self = this;
  160.     self.winW = 0;
  161.     self.winH = 0;
  162.     if (document.body && document.body.offsetWidth) {
  163.         self.winW = document.body.offsetWidth;
  164.         self.winH = document.body.offsetHeight;
  165.     }
  166.     if (document.compatMode=='CSS1Compat' && document.documentElement && document.documentElement.offsetWidth ) {
  167.         self.winW = document.documentElement.offsetWidth;
  168.         self.winH = document.documentElement.offsetHeight;
  169.     }
  170.     if (window.innerWidth && window.innerHeight) {
  171.         self.winW = window.innerWidth;
  172.         self.winH = window.innerHeight;
  173.     }
  174.     set_a_Cookie("windowWidth",self.winW,1);
  175.     set_a_Cookie("windowHeight",self.winH,1);
  176. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement