var SAMISDAT = document.SAMISDAT || {};
SAMISDAT.Version = 0.6;

SAMISDAT.userAgent = function() {
    var o={

        /**
         * Internet Explorer version number or 0.  Example: 6
         * @property ie
         * @type float
         */
        ie:0,

        /**
         * Opera version number or 0.  Example: 9.2
         * @property opera
         * @type float
         */
        opera:0,

        /**
         * Gecko engine revision number.  Will evaluate to 1 if Gecko 
         * is detected but the revision could not be found. Other browsers
         * will be 0.  Example: 1.8
         * <pre>
         * Firefox 1.0.0.4: 1.7.8   <-- Reports 1.7
         * Firefox 1.5.0.9: 1.8.0.9 <-- Reports 1.8
         * Firefox 2.0.0.3: 1.8.1.3 <-- Reports 1.8
         * Firefox 3 alpha: 1.9a4   <-- Reports 1.9
         * </pre>
         * @property gecko
         * @type float
         */
        gecko:0,

        /**
         * AppleWebKit version.  KHTML browsers that are not WebKit browsers 
         * will evaluate to 1, other browsers 0.  Example: 418.9.1
         * <pre>
         * Safari 1.3.2 (312.6): 312.8.1 <-- Reports 312.8 -- currently the 
         *                                   latest available for Mac OSX 10.3.
         * Safari 2.0.2:         416     <-- hasOwnProperty introduced
         * Safari 2.0.4:         418     <-- preventDefault fixed
         * Safari 2.0.4 (419.3): 418.9.1 <-- One version of Safari may run
         *                                   different versions of webkit
         * Safari 2.0.4 (419.3): 419     <-- Tiger installations that have been
         *                                   updated, but not updated
         *                                   to the latest patch.
         * Webkit 212 nightly:   522+    <-- Safari 3.0 precursor (with native SVG
         *                                   and many major issues fixed).  
         * 3.x yahoo.com, flickr:422     <-- Safari 3.x hacks the user agent
         *                                   string when hitting yahoo.com and 
         *                                   flickr.com.
         * Safari 3.0.4 (523.12):523.12  <-- First Tiger release - automatic update
         *                                   from 2.x via the 10.4.11 OS patch
         * Webkit nightly 1/2008:525+    <-- Supports DOMContentLoaded event.
         *                                   yahoo.com user agent hack removed.
         *                                   
         * </pre>
         * http://developer.apple.com/internet/safari/uamatrix.html
         * @property webkit
         * @type float
         */
        webkit: 0,

        /**
         * The mobile property will be set to a string containing any relevant
         * user agent information when a modern mobile browser is detected.
         * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series
         * devices with the WebKit-based browser, and Opera Mini.  
         * @property mobile 
         * @type string
         */
        mobile: null,

        /**
         * Adobe AIR version number or 0.  Only populated if webkit is detected.
         * Example: 1.0
         * @property air
         * @type float
         */
        air: 0

    };

    var ua=navigator.userAgent, m;

    // Modern KHTML browsers should qualify as Safari X-Grade
    if ((/KHTML/).test(ua)) {
        o.webkit=1;
    }
    // Modern WebKit browsers are at least X-Grade
    m=ua.match(/AppleWebKit\/([^\s]*)/);
    if (m&&m[1]) {
        o.webkit=parseFloat(m[1]);

        // Mobile browser check
        if (/ Mobile\//.test(ua)) {
            o.mobile = "Apple"; // iPhone or iPod Touch
        } else {
            m=ua.match(/NokiaN[^\/]*/);
            if (m) {
                o.mobile = m[0]; // Nokia N-series, ex: NokiaN95
            }
        }

        m=ua.match(/AdobeAIR\/([^\s]*)/);
        if (m) {
            o.air = m[0]; // Adobe AIR 1.0 or better
        }

    }

    if (!o.webkit) { // not webkit
        // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)
        m=ua.match(/Opera[\s\/]([^\s]*)/);
        if (m&&m[1]) {
            o.opera=parseFloat(m[1]);
            m=ua.match(/Opera Mini[^;]*/);
            if (m) {
                o.mobile = m[0]; // ex: Opera Mini/2.0.4509/1316
            }
        } else { // not opera or webkit
            m=ua.match(/MSIE\s([^;]*)/);
            if (m&&m[1]) {
                o.ie=parseFloat(m[1]);
            } else { // not opera, webkit, or ie
                m=ua.match(/Gecko\/([^\s]*)/);
                if (m) {
                    o.gecko=1; // Gecko detected, look for revision
                    m=ua.match(/rv:([^\s\)]*)/);
                    if (m&&m[1]) {
                        o.gecko=parseFloat(m[1]);
                    }
                }
            }
        }
    }
    
    return o;
}();

SAMISDAT.forceVersion = function(){
	if(/(\/force-20)/g.test(window.location.pathname)){
		return 'webZwoNull';
	}
	if(/(\/force-10)/g.test(window.location.pathname)){
		return 'webEinsNull';
	}
	if(/(\/noscript)/g.test(window.location.pathname)){
		return 'noscript';
	}
	return false;
}();
SAMISDAT.VersionSwitcher = function(){
    var web20Browser = {
        ie:{min:7,max:8},
        opera:{min:9,max:9.5},
        gecko:{min:1.8,max:1.9},
        webkit:{min:523,max:530}
    };
    var isWeb20Agent = false;
    var userAgent = {'name':'unknown','version':'unknown','mobile':false};
    for (var Browser in web20Browser) {
        if (web20Browser.hasOwnProperty(Browser)) {
            if(SAMISDAT.userAgent[Browser] > 0){
                userAgent.name = Browser;
                userAgent.version = SAMISDAT.userAgent[Browser];
                if(SAMISDAT.userAgent[Browser] >= web20Browser[Browser].min && SAMISDAT.userAgent[Browser] <= web20Browser[Browser].max){
                   isWeb20Agent = true; 
                }
            }
        }
    }
    userAgent.mobile = (SAMISDAT.userAgent.mobile !== null)?SAMISDAT.userAgent.mobile:false
    SAMISDAT.isWeb20Agent = isWeb20Agent;
    SAMISDAT.userAgent = userAgent;
    var bodyElem = document.getElementsByTagName('body')[0];    
    var bodyClass = bodyElem.className.replace('noscript','');
    if(SAMISDAT.forceVersion !== false){
        bodyElem.className = bodyClass + ' ' +SAMISDAT.forceVersion;
        SAMISDAT.Deliver = SAMISDAT.forceVersion;
        return;
    }
    if(isWeb20Agent === false || SAMISDAT.userAgent.mobile !== false){
        SAMISDAT.Deliver = 'webEinsNull';
        return;
    }    
    SAMISDAT.Deliver = 'webZwoNull';
    bodyElem.className = bodyClass + ' webZwoNull';
}();
SAMISDAT.Video = [];
SAMISDAT.Flash = [];


