if (typeof Central == "undefined") var Central = {};
if (typeof Central.Remote == "undefined") Central.Remote = {};
if (typeof Central.Remote.Tools == "undefined") Central.Remote.Tools = {};
if (typeof Central.Remote.Tools.Stats == "undefined") Central.Remote.Tools.Stats = {};

Central.Remote.Tools.Stats = {
    NewHitForWm: function(idProject,wid)
    {
	    this.d = document;
	    this.dl = document.location;
	    this.dd = document.domain;
	    this.dc = document.cookie;
        
        
        if(!idProject)
        {
            this._showError("NewHitForWm: missing parameter 'id_project'");
            return;
        }
        if(typeof wid == "undefined")
        {
            wid = '';
        }
        this.BrowserDetect.init();
        var url = 'http://central.intermax-ag.com/remote/tools/1.0/stats/i/i.gif';
        url += "?id_project=" + idProject;
        url += "&wid=" + wid;
        url += "&screenRes=" + this._getScreenResolution();
        url += "&osName=" + this._getOsName();
        //url += "&pageURI=" + this._getCurrentPageUrl();
        url += "&agntType=" + this.BrowserDetect.browser; 
        url += "&agntVer=" + this.BrowserDetect.version; 
        url += "&osLang=" + this._getOsLanguage(); 
        url += "&dRef=" + this._getDocReferrer(); 
        //url += "&dPg=" + this._getDocPage();
        //url += "&dPg=" + this._getDocPage();
        //url += "&dDom=" + this._getDocDomain();
        url += "&dLoc=" + this._getDocFullLocation();
        url += "&dCook=" + this._getDocFullCookie();
        var i = new Image();
        //alert(url); return;
        i.src = url;     
    },
    _getOsLanguage: function()
    {
        var lang = navigator.systemLanguage || navigator.language || '';  
        return lang;
    },
    _getOsName: function()
    {   
        var osName ="Unknown OS";
        var val = navigator.appVersion; 
        if (val.indexOf("Win")!=-1) osName="Windows";
        if (val.indexOf("Mac")!=-1) osName="MacOS";
        if (val.indexOf("X11")!=-1) osName="UNIX";
        if (val.indexOf("Linux")!=-1) osName="Linux";
        return osName;

    },
    _getDocFullLocation : function()
    {
        return this.URL_Encode(this.dl);
    },
    _getDocFullCookie : function()
    {
        if (!this.dc) return '0';
        return this.URL_Encode(this.dc);
    },
    _getDocDomain : function()
    {
        return this.URL_Encode(this.dd);
    },
    _getDocPage : function()
    {
        var pg =  this.dl.pathname + this.dl.search;
        pg = this.URL_Encode(pg);
        return pg;
    },
    _getDocReferrer : function()
    {
        var ref = this.d.referrer;
        if (!ref || ref=="") 
        { 
            ref="0"; 
            return ref;
        }
        var dom = this.dd;   
        page = ref.indexOf(dom);
        if ((page>=0) && (page<=8)) { ref="0"; }
        else if (ref.indexOf("[")==0 && ref.lastIndexOf("]")==(ref.length-1)) { ref="0"; }
        
        ref = this.URL_Encode(ref);
        return ref;
    },
    _getCurrentPageUrl: function()
    {   
        var val  = new String(window.location);
        val = val.substring(0,255);
        return val;
    },
    _showError: function(msg)
    {
        var err = "Central Javascript ERROR\n";
        err += "Class: Central.Remote.Stats\n";
        err += "Error message follows:\n----------------------\n";
        err += msg;
        alert(err);
    },
    _getScreenResolution: function()
    {
        var screenW = 640, screenH = 480;
        if (parseInt(navigator.appVersion)>3) 
        {
            screenW = screen.width;
            screenH = screen.height;
        }
        else if (navigator.appName == "Netscape" && parseInt(navigator.appVersion)==3 && navigator.javaEnabled()) 
        {
            var jToolkit = java.awt.Toolkit.getDefaultToolkit();
            var jScreenSize = jToolkit.getScreenSize();
            screenW = jScreenSize.width;
            screenH = jScreenSize.height;
        }
        return screenW + "x" + screenH;

    },
    BrowserDetect : {
    	init: function () {
    		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    		this.version = this.searchVersion(navigator.userAgent)
    			|| this.searchVersion(navigator.appVersion)
    			|| "";
    	},
    	searchString: function (data) {
    		for (var i=0;i<data.length;i++)	{
    			var dataString = data[i].string;
    			var dataProp = data[i].prop;
    			this.versionSearchString = data[i].versionSearch || data[i].identity;
    			if (dataString) {
    				if (dataString.indexOf(data[i].subString) != -1)
    					return data[i].identity;
    			}
    			else if (dataProp)
    				return data[i].identity;
    		}
    	},
    	searchVersion: function (dataString) {
    		var index = dataString.indexOf(this.versionSearchString);
    		if (index == -1) return;
    		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    	},
    	dataBrowser: [
    		{ 	string: navigator.userAgent,
    			subString: "OmniWeb",
    			versionSearch: "OmniWeb/",
    			identity: "OmniWeb"
    		},
    		{
    			string: navigator.vendor,
    			subString: "Apple",
    			identity: "Safari"
    		},
    		{
    			prop: window.opera,
    			identity: "Opera"
    		},
    		{
    			string: navigator.vendor,
    			subString: "iCab",
    			identity: "iCab"
    		},
    		{
    			string: navigator.vendor,
    			subString: "KDE",
    			identity: "Konqueror"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "Firefox",
    			identity: "Firefox"
    		},
    		{
    			string: navigator.vendor,
    			subString: "Camino",
    			identity: "Camino"
    		},
    		{		// for newer Netscapes (6+)
    			string: navigator.userAgent,
    			subString: "Netscape",
    			identity: "Netscape"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "MSIE",
    			identity: "Internet Explorer",
    			versionSearch: "MSIE"
    		},
    		{
    			string: navigator.userAgent,
    			subString: "Gecko",
    			identity: "Mozilla",
    			versionSearch: "rv"
    		},
    		{ 		// for older Netscapes (4-)
    			string: navigator.userAgent,
    			subString: "Mozilla",
    			identity: "Netscape",
    			versionSearch: "Mozilla"
    		}
    	]
    },
    
     // public method for url encoding   
    URL_Encode : function (string) 
    {   
    	return escape(this._URL_utf8_encode(string));   
    },   
    // private method for UTF-8 decoding   
    _URL_utf8_encode : function (string) {   
    	var string = new String(string);
    	string = string.replace(/\r\n/g,"\n");   
    	var utftext = "";   
    
    	for (var n = 0; n < string.length; n++) {   
    
    		var c = string.charCodeAt(n);   
    
    		if (c < 128) {   
    			utftext += String.fromCharCode(c);   
    		}   
    		else if((c > 127) && (c < 2048)) {   
    			utftext += String.fromCharCode((c >> 6) | 192);   
    			utftext += String.fromCharCode((c & 63) | 128);   
    		}   
    		else {   
    			utftext += String.fromCharCode((c >> 12) | 224);   
    			utftext += String.fromCharCode(((c >> 6) & 63) | 128);   
    			utftext += String.fromCharCode((c & 63) | 128);   
    		}   
    
    	}   
    
    	return utftext;   
    }

};