/**
 * Project: Success Control V2.1
 * Copyright: doppelpack werbeagentur 2010
 * Author: Andreas Rauchenbacher
 * 
 * 
 */
 
 
 
function go_stat_class ( user, isFlash ) {

//// Variablen zur Konfiguration der Klasse
	this.flash = isFlash;
	this.userName = user; // Benutzername
	this.cookieUserIdName = "_sccolvaluid"; // Name des Cookies in dem die UserID gespeichert wird
	this.cookieSessionIdName = "_sccolvalsid"; // Name des Cookies in dem die SessionID gespeichert wird
	this.cookieDomain = "auto"; // Cookie Domain
	this.cookiePath = "/"; // Cookie Pfad
	this.cookieUserIdExpires = "Sun, 18 Jan 2038 00:00:00 GMT;"; // Ablauf des Cookies UserID
	this.cookieSessionIdTimeout = 60; // timeout in minuten
	
	now = new Date();
	var ablauf = now.getTime();
	var sessionAblauf = ablauf + ( this.cookieSessionIdTimeout * 60 * 1000 );
	now.setTime( sessionAblauf );
	var sessionAbgelaufen =  now.toGMTString();
	this.cookieSessionIdExpires = sessionAbgelaufen; // Ablauf des SessionID Cookies
	
	this.cookieVar = "";
	this.cookieValSize = 255;
	


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////       METHODEN                                                                                                                           ///////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//// Kodierungsmethoden
	var base64s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	function encode(decStr){
		decStr=escape(decStr);		//line add for chinese char
		var bits, dual, i = 0, encOut = '';
		while(decStr.length >= i + 3){
			bits = (decStr.charCodeAt(i++) & 0xff) <<16 | (decStr.charCodeAt(i++) & 0xff) <<8  | decStr.charCodeAt(i++) & 0xff;
			encOut += base64s.charAt((bits & 0x00fc0000) >>18) + base64s.charAt((bits & 0x0003f000) >>12) + base64s.charAt((bits & 0x00000fc0) >> 6) + base64s.charAt((bits & 0x0000003f));
		}
		if(decStr.length -i > 0 && decStr.length -i < 3){
			dual = Boolean(decStr.length -i -1);
			bits = ((decStr.charCodeAt(i++) & 0xff) <<16) | (dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);
			encOut += base64s.charAt((bits & 0x00fc0000) >>18) + base64s.charAt((bits & 0x0003f000) >>12) + (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '=') + '=';
		}
		return encOut
	}

//// Methoden zum erstellen der SessionID
	function getRandomNumber(range) {
		return Math.floor(Math.random() * range);
	}
	
	function getRandomChar() {
		var chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";
		return chars.substr( getRandomNumber(62), 1 );
	}
	
//// Methoden zum Verarbeiten von Cookies
	function genCookieVal(size) {
		var str = "";
		for(var i = 0; i < size; i++) {
			str += getRandomChar();
		}
		return str;
	}
	
	function funcCookieval(size) {
		var str = "";
		for(var i = 0; i < size; i++) {
			str += getRandomChar();
		}
		return str;
	}
	
	function getCookie(name) {
	   var i=0  //Suchposition im Cookie
	   var suche = name+"="
	   while (i<document.cookie.length){
		  if (document.cookie.substring(i, i+suche.length)==suche){
			 var ende = document.cookie.indexOf(";", i+suche.length)
			 ende = (ende>-1) ? ende : document.cookie.length
			 var cook = document.cookie.substring(i+suche.length, ende)
			 return unescape(cook)
		  }
		  i++
	   }
	   return null
	}
	
	
	function setCookie(name, wert, domain, expire, path){
	   var cook = name+"="+unescape( wert );
	   //cook += (domain) ? "; domain="+ domain : ""
	   cook += (expire) ? "; expires="+expire : ""
	   cook += (path) ? "; path="+path : ""
	   document.cookie = cook
	}
	
//// Methoden zum bestimmen der Plugins und des Systems

	// Browser Info
		function get_browser_info() {
			offName = navigator.appName;
			codeName = navigator.appCodeName;
			bVers = navigator.appVersion;
			bAgent = navigator.userAgent;
			bPlattform = navigator.plattform;
			bLang = navigator.language;
			
			return new Array( offName, codeName, bVers, bAgent, bPlattform, bLang );
		}

	// Viewport
		function get_viewport() {
			// Breite
			if( window.innerWidth ) { pxVpBreite = window.innerWidth; } // alle ausser IE
			//else if( document.documentElement.clientWidth ) { pxVpBreite = document.documentElement.clientWidth; }
			else if( document.body ) { pxVpBreite = document.body.clientWidth; }
			else { pxVpBreite = 0; }
			
			// Hoehe
			if( window.innerHeight ) { pxVpHoehe = window.innerHeight; } // alle ausser IE
			//else if( document.documentElement.clientHeight ) { pxVpHoehe = document.documentElement.clientHeight; }
			else if( document.body ) { pxVpHoehe = document.body.clientHeight; }
			else { pxVpHoehe = 0; }
			
			return new Array( pxVpBreite, pxVpHoehe );
		}
	
	// Aufloesung
		function get_resolution() {
			pxResBreite = screen.width;
			pxResHoehe  = screen.height;
			
			return new Array( pxResBreite, pxResHoehe );
		}
	
	// Farbtiefe / Pixeltiefe
		function get_colordepth() {
			clientName = navigator.appName;
			pxTiefe    = screen.pixelDepth;
			farbTiefe  = screen.colorDepth;
			
			if( clientName == "Microsoft Internet Explorer" ) {
				pxTiefe = farbTiefe;
			}
			else {
				farbTiefe = Math.pow( 2, farbTiefe );
			}
			
			return new Array( farbTiefe, pxTiefe );
		}

	// Plugins
		function get_plugins() {
			var agt=navigator.userAgent.toLowerCase();
			var ie  = (agt.indexOf("msie") != -1);
			var ns  = (navigator.appName.indexOf("Netscape") != -1);
			var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
			var mac = (agt.indexOf("mac")!=-1);
			
			if (ie && win) {	
				var svg = new Array("Adobe.SVGCtl");
				var divx = new Array("npdivx.DivXBrowserPlugin.1", "npdivx.DivXBrowserPlugin");
				var dir = new Array("SWCtl.SWCtl.1", "SWCtl.SWCtl.11","SWCtl.SWCtl.10.1.1","SWCtl.SWCtl.10","SWCtl.SWCtl.9","SWCtl.SWCtl.8","SWCtl.SWCtl.7","SWCtl.SWCtl.6","SWCtl.SWCtl.5","SWCtl.SWCtl.4");
				var flash = new Array("ShockwaveFlash.ShockwaveFlash.11","ShockwaveFlash.ShockwaveFlash.10","ShockwaveFlash.ShockwaveFlash.9", "ShockwaveFlash.ShockwaveFlash.8.5", "ShockwaveFlash.ShockwaveFlash.8", "ShockwaveFlash.ShockwaveFlash.7", "ShockwaveFlash.ShockwaveFlash.6", "ShockwaveFlash.ShockwaveFlash.5", "ShockwaveFlash.ShockwaveFlash.4");
				var real = new Array("RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)", "RealVideo.RealVideo(tm) ActiveX Control (32-bit)", "rmocx.RealPlayer G2 Control","rmocx.RealPlayer G2 Control.1");
				var qt = new Array("QuickTime.QuickTime");
				var wmp = new Array("WMPlayer.OCX", "MediaPlayer.MediaPlayer.1");
				var pdf = new Array("PDF.PdfCtrl.7", "PDF.PdfCtrl.6", "PDF.PdfCtrl.5", "PDF.PdfCtrl.4", "PDF.PdfCtrl.3", "AcroPDF.PDF.1");
				var sil = new Array("AgControl.AgControl");
				
				
				
				pluginlist = 	detectIE(svg,"SVG Viewer") + 
						 detectIE(divx, "DivX Player") +
						 detectIE(dir,"Shockwave Player") + 
						 detectIE(flash,"Adobe Flash") + 
						 detectIE(real,"RealPlayer Plugin") + 
						 detectIE(qt,"QuickTime") + 
						 detectIE(wmp,"Windows Media Player") + 
						 detectIE(pdf,"Acrobat Reader") +
						 detectIE(sil,"Microsoft Silverlight"); 
			}
			if (ns || !win) {
					nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
					pluginlist = detectNS("image/svg-xml","SVG Viewer") + 
								 detectNS("video/divx", "DivX Player") +
								 detectNS("application/itunes-plugin", "iTunes Plugin") +
								 detectNS("*", "Mozilla Default Plugin") +
								 detectNS("application/futuresplash", "FutureSplash Player") +
								 detectNS("application/x-director","Shockwave Player") + 
								 detectNS("application/x-shockwave-flash","Adobe Flash") + 
								 detectNS("audio/x-pn-realaudio-plugin","RealPlayer G2 Plugin") + 
								 detectNS("application/vnd.rn-realplayer-javascript", "RealPlayer Plugin") +
								 detectNS("video/quicktime","QuickTime") + 
								 detectNS("application/x-mplayer2","Windows Media Player") + 
								 detectNS("application/pdf","Acrobat Reader") + 
								 detectNS("application/x-silverlight","Microsoft Silverlight");
			}
			
			function detectIE(ClassID,name) { 
				result = false; 
				for(var u = 0; u < ClassID.length; u++){
					//alert("Länge:" +ClassID.length+" - u: "+u+" - trying: "+ClassID[u]);
					document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID[u] + '"))</SCR'+'IPT>\n'); 
				
					if (result) 
						return name+"\n";
					else if (u == ClassID.length-1)
					 name = "";
					else 
						continue; 
				}
				return name;
			}function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; }
			
			pluginlist += navigator.javaEnabled() ? "Java," : "";
			if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
			
			//Ausgabe der Plugins
			if (pluginlist.indexOf("Windows Media Player")!=-1)
			var wmp = 1;
			else
			var wmp = 0;
			
			if (pluginlist.indexOf("Java")!=-1)
			var java = 1;
			else
			var java = 0;
			
			if (pluginlist.indexOf("QuickTime")!=-1)
			var qt = 1;
			else
			var qt = 0;
			
			if (pluginlist.indexOf("iTunes")!=-1)
			var itunes = 1;
			else
			var itunes = 0;
			
			if (pluginlist.indexOf("DivX")!=-1)
			var divx = 1;
			else
			var divx = 0;
			
			if (pluginlist.indexOf("Mozilla")!=-1)
			var moz = 1;
			else
			var moz = 0;
			
			if (pluginlist.indexOf("Silverlight")!=-1)
			var silverlight = 1;
			else
			var silverlight = 0;
			
			if (pluginlist.indexOf("RealPlayer")!=-1)
			var rp = 1;
			else
			var rp = 0;
			
			if (pluginlist.indexOf("RealPlayer G2")!=-1)
			var rp2 = 1;
			else
			var rp2 = 0;
			
			if (pluginlist.indexOf("Acrobat Reader")!=-1)
			var ar = 1;
			else
			var ar = 0;
			
			if (pluginlist.indexOf("Flash")!=-1)
			var flash = 1;
			else
			var flash = 0;
			
			if (pluginlist.indexOf("FutureSplash")!=-1)
			var fs = 1;
			else
			var fs = 0;
			
			if (pluginlist.indexOf("Shockwave")!=-1)
			var shock = 1;
			else
			var shock = 0;
			
			if (pluginlist.indexOf("SVG Viewer")!=-1)
			var svg = 1;
			else
			var svg = 0;
			
			//var plugins = "" + wmp + "," + java + "," + qt + "," + rp + "," + ar + "," + flash + "," + shock + "," + svg + "";
			
			var pluginsArr = new Array();
			pluginsArr['wmp'] = wmp;
			pluginsArr['moz'] = moz;
			pluginsArr['divx'] = divx;
			pluginsArr['silverlight'] = silverlight;
			pluginsArr['itunes'] = itunes;
			pluginsArr['java'] = java;
			pluginsArr['qt'] = qt;
			pluginsArr['rp'] = rp;
			pluginsArr['rp2'] = rp2;
			pluginsArr['ar'] = ar;
			pluginsArr['flash'] = flash;
			pluginsArr['fs'] = fs;
			pluginsArr['shock'] = shock;
			pluginsArr['svg'] = svg;
			/*plugins[0] = wmp;
			plugins[1] = java;
			plugins[2] = qt;
			plugins[3] = rp;
			plugins[4] = ar;
			plugins[5] = flash;
			plugins[6] = shock;
			plugins[7] = svg;*/
			
			return pluginsArr;
		}

	// Referrer
		function get_referrer() {
			var valReferrer = "no_ref";
			
			if( document.referrer ) { valReferrer = document.referrer; }
			//alert(document.referrer);
			return valReferrer;
		}
	
	// Aktuelle Seite
		function get_akt_site() {
			aktSeite = '';
			
			if( location.href ) { aktSeite = location.href; }
			if( aktSeite == "" && document.URL ) { aktSeite = document.URL; }
			
			
			return aktSeite;
		}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////       VERARBEITUNG                                                                                                                       ///////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//// Cookie Ueberpruefen
	
	// SessionID Checken
	var contentCookieSessionId = getCookie(this.cookieSessionIdName);
	if( contentCookieSessionId!=null ) {
		this.aktCookieSessionIdVal = contentCookieSessionId;
		this.visitStatusCookie = false;
	}
	else {
		this.aktCookieSessionIdVal = genCookieVal(this.cookieValSize);
		setCookie(this.cookieSessionIdName, this.aktCookieSessionIdVal, this.cookieDomain, this.cookieSessionIdExpires, this.cookiePath);
		this.visitStatusCookie = true;
	}
	
	// UserID Checken
	var contentCookieUserId = getCookie(this.cookieUserIdName);
	if( contentCookieUserId!=null ) {
		this.aktCookieUserIdArr = contentCookieUserId.split( "|||" )
	    this.aktCookieUserIdVal = this.aktCookieUserIdArr[0];
		this.aktCookieUserIdAnz = this.aktCookieUserIdArr[1];		
		this.returningUser = 1;
		
		// Besuche hinaufsetzten
		if( this.visitStatusCookie==true ) {
		    this.aktCookieUserIdAnzNew = parseInt( this.aktCookieUserIdAnz ) + 1;
		    setCookie(this.cookieUserIdName, this.aktCookieUserIdVal+"|||"+this.aktCookieUserIdAnzNew, this.cookieDomain, this.cookieUserIdExpires, this.cookiePath);
		    
		    this.aktCookieUserIdAnz = this.aktCookieUserIdAnzNew;
		    
		}
	}
	else {
		this.aktCookieUserIdVal = genCookieVal(this.cookieValSize);
		this.aktCookieUserIdAnz = 1;
		setCookie(this.cookieUserIdName, this.aktCookieUserIdVal+"|||"+this.aktCookieUserIdAnz, this.cookieDomain, this.cookieUserIdExpires, this.cookiePath);
		this.returningUser = 0;	
	}
	
	
//// Systemdaten des Benutzers	
	this.usrBrowserInfo = get_browser_info();
		this.usrBrowserName      = this.usrBrowserInfo[0];
		this.usrBrowserCodeName  = this.usrBrowserInfo[1];
		this.usrBrowserVersion   = this.usrBrowserInfo[2];
		this.usrBrowserAgent     = this.usrBrowserInfo[3];
		this.usrBrowserPlattform = this.usrBrowserInfo[4];
		this.usrBrowserLang      = this.usrBrowserInfo[5];	
	
	this.usrResolution = get_resolution();
		this.usrResWidth  = this.usrResolution[0];
		this.usrResHeight = this.usrResolution[1];
	
	this.usrViewport = get_viewport();
		this.usrViewportWidth  = this.usrViewport[0];
		this.usrViewportHeight = this.usrViewport[1];
	
	this.usrColorDepth = get_colordepth();
		this.usrFarbtiefe  = this.usrColorDepth[0];
		this.usrPixeltiefe = this.usrColorDepth[1];
	
	this.usrPlugins = get_plugins();
		this.usrPlugWmp   = this.usrPlugins['wmp'];
		this.usrPlugJava  = this.usrPlugins['java'];
		this.usrPlugQt    = this.usrPlugins['qt'];
		this.usrPlugRp    = this.usrPlugins['rp'];
		this.usrPlugAr    = this.usrPlugins['ar'];
		this.usrPlugFlash = this.usrPlugins['flash'];
		this.usrPlugShock = this.usrPlugins['shock'];
		this.usrPlugSvg   = this.usrPlugins['svg'];
		this.usrPlugDivX   = this.usrPlugins['divx'];
		this.usrPlugFs   = this.usrPlugins['fs'];
		this.usrPlugSilverlight   = this.usrPlugins['silverlight'];
		this.usrPlugiTunes   = this.usrPlugins['itunes'];
		this.usrPlugRp2   = this.usrPlugins['rp2'];
		this.usrPlugMoz   = this.usrPlugins['moz'];


//// Surfdaten des Benutzers
	this.usrReferrer = get_referrer();
	this.usrAktSite  = get_akt_site();

//// Cookie-Daten des Users
	this.usrCookieUserIdVal    = this.aktCookieUserIdVal;
	this.usrCookieSessionIdVal = this.aktCookieSessionIdVal;	

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////       DATEN SENDEN                                                                                                                       ///////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	strSeparator = "|||";
	
	var sendScStr = "";
	
	// User Info
	sendScStr += this.userName + strSeparator;
	sendScStr += this.usrCookieUserIdVal + strSeparator;
	sendScStr += this.usrCookieSessionIdVal + strSeparator;
	// Browser Info
	sendScStr += this.usrBrowserName + strSeparator;
	sendScStr += this.usrBrowserCodeName + strSeparator;
	sendScStr += this.usrBrowserVersion + strSeparator;
	sendScStr += this.usrBrowserAgent + strSeparator;
	sendScStr += this.usrBrowserPlattform + strSeparator;
	sendScStr += this.usrBrowserLang + strSeparator;
	// Sys Info
	sendScStr += this.usrResWidth + strSeparator;
	sendScStr += this.usrResHeight + strSeparator;
	sendScStr += this.usrViewportWidth + strSeparator;
	sendScStr += this.usrViewportHeight + strSeparator;
	sendScStr += this.usrFarbtiefe + strSeparator;
	sendScStr += this.usrPixeltiefe + strSeparator;
	sendScStr += this.usrPlugWmp + strSeparator;
	sendScStr += this.usrPlugJava + strSeparator;
	sendScStr += this.usrPlugQt + strSeparator;
	sendScStr += this.usrPlugRp + strSeparator;
	sendScStr += this.usrPlugAr + strSeparator;
	sendScStr += this.usrPlugFlash + strSeparator;
	sendScStr += this.usrPlugShock + strSeparator;
	sendScStr += this.usrPlugSvg + strSeparator;
	sendScStr += this.usrPlugDivX + strSeparator;
	sendScStr += this.usrPlugFs + strSeparator;
	sendScStr += this.usrPlugSilverlight + strSeparator;
	sendScStr += this.usrPlugiTunes + strSeparator;
	sendScStr += this.usrPlugRp2 + strSeparator;
	sendScStr += this.usrPlugMoz + strSeparator;
	// Surf Info
	sendScStr += this.usrReferrer + strSeparator;
	sendScStr += this.usrAktSite + strSeparator;
	sendScStr += this.returningUser + strSeparator;
	sendScStr += this.aktCookieUserIdAnz + strSeparator;
	sendScStr += this.flash + strSeparator;
	
	var encodedScInfo = encode(sendScStr);

	document.write( "<img src=\"http://www.success-control.com/collect/collect.php?data=" + encodedScInfo + "\" width=\"1px\" style=\"display: none;\"height=\"1px\" alt=\"\" />" );

}

var SCnewStat;

function go_stat_new( usrName, isFlash ) {
	if(isFlash == "" || isFlash == undefined) isFlash = 0;
	SCnewStat = new go_stat_class( usrName, isFlash );
}

function getFlashCookie(){
	
	var returnString = '';
	
	if(SCnewStat.usrCookieUserIdVal != "") returnString += SCnewStat.usrCookieUserIdVal;
	else returnString += 0;
	
	returnString += '|||';
	
	if(SCnewStat.usrCookieSessionIdVal != "") returnString += SCnewStat.usrCookieSessionIdVal;
	else returnString += 0;
	
	returnString += '|||';
	
	returnString += SCnewStat.flash;
	
	return returnString;
	
}

function getUserCookie() {
	
	var name = "_sccolvaluid";
  	var mein_cookie = document.cookie; 
  	if (mein_cookie.indexOf(name) == -1) return "";
  	
  	var anfang = mein_cookie.indexOf(name) + name.length + 1;  
  	var ende = mein_cookie.indexOf(";", anfang); 
  	if (ende == -1) ende = mein_cookie.length;
  	
  	var laenge = ende-anfang;
  	var cookie_wert = unescape(mein_cookie.substr(anfang, laenge));
  	
  	var returnVal = cookie_wert.split("|||");
  	
  	return returnVal[0]; 
}

function getSessionCookie() {
	
	var name = "_sccolvalsid";
  	var mein_cookie = document.cookie; 
  	if (mein_cookie.indexOf(name) == -1) return "";
  	
  	var anfang = mein_cookie.indexOf(name) + name.length + 1;  
  	var ende = mein_cookie.indexOf(";", anfang); 
  	if (ende == -1) ende = mein_cookie.length;
  	
  	var laenge = ende-anfang;
  	var cookie_wert = unescape(mein_cookie.substr(anfang, laenge));
  	
  	return cookie_wert; 
}
 
 
 