/*
	Name:		SiteKey
	File:		/js/sitekey/sitekey.js
	Version:	2009-07-17
	Notes: 		SiteKey
----------------------------------------------- */

/*	SiteKey Wrapper
	- MooTools 1.2 dependency
	- Randomly generates an IP address
----------------------------------------------- */
var siteKey = new Class({
	initialize: function(swfPath){
		this.swfPath = swfPath;
		this.addSwf();
		this.formSubmit();
	},
	addSwf: function() {	
		var ip_address = this.getRandIp();
		var swf = new Swiff(this.swfPath, {
		    id: 'SiteKeySwf',
		    width: 1,
		    height: 1,
		    params: {
		        bgcolor: '#FFFFF'
		    },
		    vars: {
		        rsa_flash_id: 'SiteKeySwf',
		        field_name: 'SiteKeyDeviceFSO',
				ip_address: ip_address
		    }
		});
		swf.inject(document.body);
	},
	formSubmit: function() {
		$('SiteKeyForm').addEvent('submit', function(){
			$(document.body).addClass('loading')
		    $('SiteKeyDeviceFingerPrint').set('value', add_deviceprint());	
		});	
	},
	getRandIp : function() {
		var ip = $random(0, 255)+'.'+$random(0, 255)+'.'+$random(0, 255)+'.'+$random(0, 255);
		return ip;
	}
});

/*	SWF Function
----------------------------------------------- */
function getFlashMovieObject(swf) {
	return $(swf);
}

/*	SiteKey Functions
----------------------------------------------- */
var SEP="|";var PAIR="=";var DEV="~";var ver=1;ua=navigator.userAgent.toLowerCase();opera=ua.indexOf("opera")>=0;ie=ua.indexOf("msie")>=0&&!opera;iemac=ie&&ua.indexOf("mac")>=0;moz=ua.indexOf("mozilla")&&!ie&&!opera;os=navigator.platform;function activeXDetect(a){componentVersion=document.body.getComponentVersion("{"+a+"}","ComponentID");return(componentVersion!=null)?componentVersion:false}function extractVersions(b){extractedVersions="";for(var a=0;a<b.length;a++){charAtValue=b.charAt(a);if((charAtValue>="0"&&charAtValue<="9")||charAtValue=="."||charAtValue=="_"||charAtValue==","){extractedVersions+=charAtValue}}return extractedVersions}function stripIllegalChars(a){t="";a=a.toLowerCase();for(i=0;i<a.length;i++){if(a.charAt(i)!="\n"&&a.charAt(i)!="/"&&a.charAt(i)!="\\"){t+=a.charAt(i)}else{if(a.charAt(i)=="\n"){t+="n"}}}return t}function stripFullPath(b,a){fileName=b;filenameStart=0;filenameStart=fileName.lastIndexOf(a);if(filenameStart<0){return b}filenameFinish=fileName.length;fileName=fileName.substring(filenameStart+a.length,filenameFinish);return fileName}function deviceprint_browser(){t=ua+SEP+navigator.appVersion+SEP+navigator.platform;if(ie){t+=SEP+navigator.appMinorVersion+SEP+navigator.cpuClass+SEP+navigator.browserLanguage;t+=SEP+ScriptEngineBuildVersion()}else{if(moz){t+=SEP+navigator.language}}return t}function deviceprint_display(){t="";if(self.screen){t+=screen.colorDepth+SEP+screen.width+SEP+screen.height+SEP+screen.availHeight}return t}function deviceprint_software(){t="";isFirst=true;var b=new Hashtable();b.put("npnul32.dll","def");b.put("npqtplugin6.dll","qt6");b.put("npqtplugin5.dll","qt5");b.put("npqtplugin4.dll","qt4");b.put("npqtplugin3.dll","qt3");b.put("npqtplugin2.dll","qt2");b.put("npqtplugin.dll","qt1");b.put("nppdf32.dll","pdf");b.put("NPSWF32.dll","swf");b.put("NPJava11.dll","j11");b.put("NPJava12.dll","j12");b.put("NPJava13.dll","j13");b.put("NPJava32.dll","j32");b.put("NPJava14.dll","j14");b.put("npoji600.dll","j61");b.put("NPJava131_16.dll","j16");b.put("NPOFFICE.DLL","mso");b.put("npdsplay.dll","wpm");b.put("npwmsdrm.dll","drm");b.put("npdrmv2.dll","drn");b.put("nprjplug.dll","rjl");b.put("nppl3260.dll","rpl");b.put("nprpjplug.dll","rpv");b.put("npchime.dll","chm");b.put("npCortona.dll","cor");b.put("np32dsw.dll","dsw");b.put("np32asw.dll","asw");if(navigator.plugins.length>0){temp="";moz="";key="";lastDir="Plugins";for(i=0;i<navigator.plugins.length;i++){plugin=navigator.plugins[i];moz=stripFullPath(plugin.filename,lastDir);if(isFirst==true){key=b.containsKey(moz);if(key){temp+=b.get(moz);isFirst=false}else{temp="";isFirst=false}}else{key=b.containsKey(moz);if(key){temp+=SEP+b.get(moz)}else{temp+=""}}}t=stripIllegalChars(temp)}else{if(navigator.mimeTypes.length>0){key="";for(i=0;i<navigator.mimeTypes.length;i++){mimeType=navigator.mimeTypes[i];if(isFirst==true){key=b.containsKey(mimeType);if(key){t+=b.get(mimeType)+PAIR+mimeType;isFirst=false}else{t+="unknown"+PAIR+mimeType;isFirst=false}}else{key=b.containsKey(mimeType);if(key){t+=SEP+b.get(mimeType)+PAIR+mimeType}else{temp+=""}}}}else{if(ie){names=new Array("abk","wnt","aol","arb","chs","cht","dht","dhj","dan","dsh","heb","ie5","icw","ibe","iec","ieh","iee","jap","krn","lan","swf","shw","msn","wmp","obp","oex","net","pan","thi","tks","uni","vtc","vnm","mvm","vbs","wfd");components=new Array("7790769C-0471-11D2-AF11-00C04FA35D02","89820200-ECBD-11CF-8B85-00AA005B4340","47F67D00-9E55-11D1-BAEF-00C04FC2D130","76C19B38-F0C8-11CF-87CC-0020AFEECF20","76C19B34-F0C8-11CF-87CC-0020AFEECF20","76C19B33-F0C8-11CF-87CC-0020AFEECF20","9381D8F2-0288-11D0-9501-00AA00B911A5","4F216970-C90C-11D1-B5C7-0000F8051515","283807B5-2C60-11D0-A31D-00AA00B92C03","44BBA848-CC51-11CF-AAFA-00AA00B6015C","76C19B36-F0C8-11CF-87CC-0020AFEECF20","89820200-ECBD-11CF-8B85-00AA005B4383","5A8D6EE0-3E18-11D0-821E-444553540000","630B1DA0-B465-11D1-9948-00C04F98BBC9","08B0E5C0-4FCB-11CF-AAA5-00401C608555","45EA75A0-A269-11D1-B5BF-0000F8051515","DE5AED00-A4BF-11D1-9948-00C04F98BBC9","76C19B30-F0C8-11CF-87CC-0020AFEECF20","76C19B31-F0C8-11CF-87CC-0020AFEECF20","76C19B50-F0C8-11CF-87CC-0020AFEECF20","D27CDB6E-AE6D-11CF-96B8-444553540000","2A202491-F00D-11CF-87CC-0020AFEECF20","5945C046-LE7D-LLDL-BC44-00C04FD912BE","22D6F312-B0F6-11D0-94AB-0080C74C7E95","3AF36230-A269-11D1-B5BF-0000F8051515","44BBA840-CC51-11CF-AAFA-00AA00B6015C","44BBA842-CC51-11CF-AAFA-00AA00B6015B","76C19B32-F0C8-11CF-87CC-0020AFEECF20","76C19B35-F0C8-11CF-87CC-0020AFEECF20","CC2A9BA0-3BDD-11D0-821E-444553540000","3BF42070-B3B1-11D1-B5C5-0000F8051515","10072CEC-8CC1-11D1-986E-00A0C955B42F","76C19B37-F0C8-11CF-87CC-0020AFEECF20","08B0E5C0-4FCB-11CF-AAA5-00401C608500","4F645220-306D-11D2-995D-00C04F98BBC9","73FA19D0-2D75-11D2-995D-00C04F98BBC9");document.body.addBehavior("#default#clientCaps");for(i=0;i<components.length;i++){ver=activeXDetect(components[i]);var a=names[i];if(ver){if(isFirst==true){t+=a+PAIR+ver;isFirst=false}else{t+=SEP+a+PAIR+ver}}else{t+="";isFirst=false}}}}}return t}function deviceprint_timezone(){var a=(new Date().getTimezoneOffset()/60)*(-1);return a}function deviceprint_language(){var a;if(typeof(navigator.language)!="undefined"){a="lang"+PAIR+navigator.language+SEP}else{if(typeof(navigator.browserLanguage)!="undefined"){a="lang"+PAIR+navigator.browserLanguage+SEP}else{a="lang"+PAIR+""+SEP}}(typeof(navigator.systemLanguage)!="undefined")?a+="syslang"+PAIR+navigator.systemLanguage+SEP:a+="syslang"+PAIR+""+SEP;(typeof(navigator.userLanguage)!="undefined")?a+="userlang"+PAIR+navigator.userLanguage:a+="userlang"+PAIR+"";return a}function deviceprint_java(){var a;a=(navigator.javaEnabled())?1:0;return a}function deviceprint_cookie(){var a=(navigator.cookieEnabled)?1:0;if(typeof navigator.cookieEnabled=="undefined"&&!a){document.cookie="testcookie";a=(document.cookie.indexOf("testcookie")!=-1)?1:0}return a}function form_add_data(b,a,c){if(b&&b.length>0){b+="&"}else{b=""}b+=a+"="+escape(c);return b}function form_add_deviceprint(b,a,c){b=form_add_data(b,a+"d",c);return b}function asyncpost_deviceprint(a){var c=false;if(!c&&typeof XMLHttpRequest!="undefined"){c=new XMLHttpRequest()}if(!c){return false}c.open("POST",a,true);c.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var b;b=form_add_deviceprint(b,"fp_browser",deviceprint_browser());b=form_add_deviceprint(b,"fp_display",deviceprint_display());b=form_add_deviceprint(b,"fp_software",deviceprint_software());b=form_add_deviceprint(b,"fp_timezone",deviceprint_timezone());b=form_add_deviceprint(b,"fp_language",deviceprint_language());b=form_add_deviceprint(b,"fp_java",deviceprint_java());b=form_add_deviceprint(b,"fp_cookie",deviceprint_cookie());c.send(b);return true}function post_deviceprint(){document.forms[0].pm_fp.value=encode_deviceprint();return true}function URLencode(a){encodedString=escape(a).replace(/\*/g,"%2A").replace(/\+/g,"%2B").replace(/-/g,"%2D").replace(/\./g,"%2E").replace(/\//,"%2F").replace(/_/g,"%5F").replace(/@/g,"%40");return encodedString}function encode_deviceprint(){var a="version="+ver+"&pm_fpua="+deviceprint_browser("")+"&pm_fpsc="+deviceprint_display("")+"&pm_fpsw="+deviceprint_software("")+"&pm_fptz="+deviceprint_timezone("")+"&pm_fpln="+deviceprint_language("")+"&pm_fpjv="+deviceprint_java("")+"&pm_fpco="+deviceprint_cookie("");return URLencode(a)}function decode_deviceprint(){var a="version="+ver+"&pm_fpua="+deviceprint_browser("")+"&pm_fpsc="+deviceprint_display("")+"&pm_fpsw="+deviceprint_software("")+"&pm_fptz="+deviceprint_timezone("")+"&pm_fpln="+deviceprint_language("")+"&pm_fpjv="+deviceprint_java("")+"&pm_fpco="+deviceprint_cookie("");return unescape(URLencode(a))}function post_fingerprints(a){a.deviceprint.value=add_deviceprint()}function add_deviceprint(){var a="version="+ver+"&pm_fpua="+deviceprint_browser("")+"&pm_fpsc="+deviceprint_display("")+"&pm_fpsw="+deviceprint_software("")+"&pm_fptz="+deviceprint_timezone("")+"&pm_fpln="+deviceprint_language("")+"&pm_fpjv="+deviceprint_java("")+"&pm_fpco="+deviceprint_cookie("");return a}function Hashtable(){var d={__indexToValue:[],__indexToKeys:[]};var b=[];var e=0;var c=this;function a(g){var h=null;var f=0;while(typeof b[f]=="number"){f+=1}b[f]=0;this.hasNext=this.hasMoreElements=function(){if(b[f]<e){return true}else{if(typeof b[f]=="number"){b[f]=null}return false}};this.next=this.nextElement=function(){if(this.hasNext){h=b[f];return d[g][b[f]++]}else{return null}};this.remove=function(){if(typeof h=="number"){c.remove(d.__indexToKeys[h]);h=null}}}this.get=function(f){if(typeof d[f]=="number"){return d.__indexToValue[d[f]]}else{return null}};this.put=function(f,g){if(typeof d[f]=="number"){d.__indexToValue[d[f]]=g}else{d[f]=e;d.__indexToValue[e]=g;d.__indexToKeys[e++]=f}};this.remove=function(g){var f=d[g];if(typeof f=="number"){delete d[g];e-=1;for(var h=f;h<e;h++){d.__indexToValue[h]=d.__indexToValue[h+1];d[(d.__indexToKeys[h]=d.__indexToKeys[h+1])]=h}for(var h=0;h<b.length;h++){if((b[h])&&(f<b[h])){b[h]-=1}}}};this.size=function(){return e};this.__enumerate=function(f){return new a(f)};Hashtable.prototype.elements=function(){return this.__enumerate("__indexToValue")};Hashtable.prototype.keys=function(){return this.__enumerate("__indexToKeys")};Hashtable.prototype.clear=function(){var f=this.keys();while(f.hasNext()){this.remove(f.next())}};Hashtable.prototype.toString=function(){var h,g=this.keys();var f="";while(g.hasNext()){h=g.next();f+=h+" =&gt; "+this.get(h)+"\r\n"}return f};Hashtable.prototype.contains=function(f){var g=this.elements();while(g.hasNext()){if(g.next()==f){return true}}return false};Hashtable.prototype.containsValue=Hashtable.prototype.contains;Hashtable.prototype.containsKey=function(f){return(this.get(f)!=null)};Hashtable.prototype.isEmpty=function(){return(this.size()==0)};Hashtable.prototype.putAll=function(g){if(g.constructor==Hashtable){var h,f=g.keys();while(f.hasNext()){h=f.next();this.put(h,g.get(h))}}};Hashtable.prototype.clone=function(){var f=new Hashtable();f.putAll(this);return f};Hashtable.prototype.equals=function(f){return(f==this)}};