﻿// Senast ändrad 2009-09-21
window.browsers = {

	//	Strings used for browser checking
	verIdent: "Unknown",
	verMajor: 0,
	verMinor: 0,

	//	Boolean values
	isChrome: false,
	isSafari: false,
	isFirefox: false,
	isOpera: false,
	isIE: false,

	//	The actual checking mechanism
	initBrowsers: function() {
		var ua = navigator.userAgent.toLowerCase();
		//ua = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4pre) Gecko/2008021714 Firefox/3.0b4pre (Swiftfox)".toLowerCase();
		//ua = "Mozilla/4.0 (compatible; MSIE 4.01; Windows NT)".toLowerCase();

		//	Check for Google Chrome
		if( ua.indexOf(' chrome/') != -1 ) {
			this.isChrome = true;
			this.verIdent = "Chrome";
			m = ua.match( / chrome\/([\d\w\.]+)/ );
			v = m[1].match( /(\d+)\.(\d+)\.(\d+)\.(\d+)/ );
			this.verMajor = v[1];
			this.verMinor = v[2];

		//	Check for Apple's Safari
		} else if( ua.indexOf(' safari/') != -1 ) {
			this.isSafari = true;
			this.verIdent = "Safari"
			//	This is for Safari 3+
			if( ua.indexOf(' version/') != -1 ) {
				m = ua.match( / version\/([\d\w\.]+) safari\// );
				v = m[1].match( /(\d+)\.(\d+)[^\d]*/ );
				this.verMajor = v[1];
				this.verMinor = v[2];
			//	This is for Safari 2 or earlier
			} else {
				m = ua.match( / applewebkit\/([\d\w\.]+)/ );
				v = parseFloat( m[1] );
				if( v > 312 ) {
					this.verMajor = 2;
					this.verMinor = 0;
				} else if( v > 125 ) {
					this.verMajor = 1;
					this.verMinor = 3;
				} else if( v > 85 ) {
					this.verMajor = 1;
					this.verMinor = 2;
				} else {
					this.verMajor = 1;
					this.verMinor = 0;
				}
			}

		//	Check for Opera
		} else if( ua.indexOf( 'opera' ) != -1 ) {
			this.isOpera = true;
			this.verIdent = "Opera";
			m = ua.match( /opera[ \/]([\d\w\.]+)/ );
			v = m[1].match( /(\d+)\.(\d+)[^\d]*/ );
			this.verMajor = v[1];
			this.verMinor = v[2];

		//	Check for Mozilla Firefox
		} else if( ua.indexOf( ' firefox/' ) != -1 ) {
			this.isFirefox = true;
			this.verIdent = "Firefox";
			m = ua.match( / firefox\/([\d\w\.]+)/ );
			v = m[1].match( /(\d+)\.(\d+)[^\d]*/ );
			this.verMajor = v[1];
			this.verMinor = v[2];

		//	Check for Internet Explorer
		} else if( ua.indexOf( 'msie ' ) != -1 ) {
			this.isIE = true;
			this.verIdent = "Internet Explorer";
			m = ua.match( /[\( ]msie ([\d\w\.]+)/ );
			v = m[1].match( /(\d+)\.(\d+)[^\d]*/ );
			this.verMajor = v[1];
			this.verMinor = v[2];
		}

		//	Compare to our list of browsers and dates
		for( var i = 0; i < this.browserList.length; i++ ) {
			if( this.verIdent == this.browserList[i].name ) {
				brMajor = this.browserList[i].major;
				brMinor = this.browserList[i].minor;
				if( brMajor.substr(0,1) != '<' ) brMajor = '==' + brMajor;
				if( brMinor.substr(0,1) != '<' && brMinor.substr(0,1) != '*' ) brMinor = '==' + brMinor;
				if( brMinor == '*' ) brMinor = '==' + this.verMinor.toString();
				if( eval( this.verMajor + brMajor ) && eval( this.verMinor + brMinor ) ) {
					br = this.browserList[i].released.split('-');
					var brRelease = new Date(br[0],br[1]-1,br[2]);
					var brToday = new Date();
					this.browserYears = ( brToday.getTime() - brRelease.getTime() ) / ( 1000*60*60*24*365.25 );
					if( brMajor.substr(0,1) != '<' ) {
						if( Math.round( this.browserYears ) > parseFloat( this.browserYears ) ) {
							this.browserAge = "nästan " + Math.round( this.browserYears ) + " år gammal och";
							if( this.browserYears < 2 ) this.browserAge = this.browserAge + " kanske";
							// "almost " + Math.round( this.browserYears ) + " years old and doesn't";
						} else {
							this.browserAge = "drygt " + Math.round( this.browserYears ) + " år gammal och";
							if( this.browserYears < 2 ) this.browserAge = this.browserAge + " kanske";
							// "well over " + Math.round( this.browserYears ) + " years old and doesn't";
						}
					} else {
						this.browserAge = "minst " + Math.round( this.browserYears ) + " år gammal och";
					}
					break;
				}
			}
		}
	},

	remindOnlyOnce: true,
	browserThreshold: 1,
	browserYears: 0,
	browserAge: 'okänd för oss och kanske',
	// 'unknown to us and may not'

	browserString: [
						{ language:"english", content:"We want to inform you that your web browser is %s adhere to the latest web standards. Unfortunately we can't ensure that everything on this website works fully with your browser. Maybe it is time to upgrade? Click on one of the icons for a selection of modern browsers." },
						{ language:"swedish", content:"Vi vill upplysa dig om att din webbläsare är %s inte följer de senaste webbstandarderna. Tyvärr kan vi inte lova att allting på hemsidan fungerar fullt ut med din webbläsare. Kanske är det dags att uppdatera? Klicka på någon av ikonerna för moderna webbläsare." }
					],

	//	Our list of known browsers, versions and release dates
	browserList: [
				 	{ name:"Internet Explorer", major:"<5", minor:"*", released:"1999-03-18" },
					{ name:"Internet Explorer", major:"5", minor:"*", released:"1999-03-18" },
					{ name:"Internet Explorer", major:"5", minor:"5", released:"2000-07-15" },
					{ name:"Internet Explorer", major:"6", minor:"*", released:"2001-08-27" },
					{ name:"Internet Explorer", major:"7", minor:"*", released:"2006-10-18" },
					{ name:"Internet Explorer", major:"8", minor:"*", released:"2009-03-19" },
					{ name:"Firefox", major:"<2", minor:"*", released:"2006-10-24" },
					{ name:"Firefox", major:"2", minor:"*", released:"2006-10-24" },
					{ name:"Firefox", major:"3", minor:"0", released:"2008-06-17" },
					{ name:"Firefox", major:"3", minor:"5", released:"2009-06-30" },
					{ name:"Safari", major:"<3", minor:"*", released:"2008-03-18" },
					{ name:"Safari", major:"3", minor:"*", released:"2008-03-18" },
					{ name:"Safari", major:"4", minor:"*", released:"2009-06-08" },
					{ name:"Opera", major:"<9", minor:"*", released:"2006-06-20" },
					{ name:"Opera", major:"9", minor:"0", released:"2006-06-20" },
					{ name:"Opera", major:"9", minor:"5", released:"2008-06-12" },
					{ name:"Opera", major:"10", minor:"*", released:"2009-09-01" },
					{ name:"Chrome", major:"1", minor:"*", released:"2008-09-02" },
					{ name:"Chrome", major:"2", minor:"*", released:"2009-05-22" },
					{ name:"Chrome", major:"3", minor:"*", released:"2009-09-15" }
				 ],

	privSetCookie: function( n, v, d ) {
		var exdate = new Date();
		exdate.setDate( exdate.getDate() + d );
		document.cookie = n + "=" + escape( v ) + ( ( d == null ) ? "" : ";expires=" + exdate.toGMTString() );
	},

	privGetCookie: function( n ) {
		if( document.cookie.length > 0 ) {
			c_start = document.cookie.indexOf( n + "=" );
			if( c_start != -1 ) {
				c_start = c_start + n.length + 1;
				c_end = document.cookie.indexOf( ";", c_start );
				if( c_end == -1 ) c_end = document.cookie.length;
				return unescape( document.cookie.substring( c_start, c_end ) );
			}
		}
		return "";
	},

	forceClearCookie: function() {
		this.privSetCookie( "brwTest", "", -1 );
	},

	//	Set up the HTML, styling and javascript (using jQuery)
	checkBrowser: function() {
		if( this.remindOnlyOnce ) {
			if( this.privGetCookie( "brwTest" ) != "true" ) {
				this.privSetCookie( "brwTest", "true", 14 );
				boolReminded = false;
			} else {
				boolReminded = true;
			}
		} else {
			boolReminded = false;
		}
		if( boolReminded == false && this.browserYears > this.browserThreshold ) {
			$("body").append(	'<div id="browsers-panel">' +
												'<div id="browsers-text"></div>' +
												'<a href="http://www.getfirefox.com" id="browsers-firefox"><span>Mozilla Firefox</span></a>' +
												'<a href="http://www.google.com/chrome" id="browsers-chrome"><span>Google Chrome</span></a>' +
												'<a href="http://www.microsoft.com/windows/internet-explorer" id="browsers-ie"><span>Internet Explorer</span></a>' +
												'<a href="http://www.apple.com/safari/download" id="browsers-safari"><span>Apple Safari</span></a>' +
												'<a href="http://www.opera.com" id="browsers-opera"><span>Opera</span></a>' +
												'<a href="#" id="browsers-close"><span>X</span></a>' +
												'<div id="browsers-hover"></div>' +
												'</div>' );
			if( this.isIE && this.verMajor < 7 ) {
				$("#browsers-panel a").css({behavior:"url(/iepngfix.htc)"});
				$("#browsers-panel").css({backgroundImage:"url(browsers/browsers-bg.gif)"});
			}
			$("#browsers-panel #browsers-text").text( this.browserString[1].content.replace('%s',this.browserAge) );
			$("#browsers-panel").show();
			var textHeight = $("#browsers-panel #browsers-text").height();
			$("#browsers-panel").animate({top: "+=" + ( textHeight + 66 ) + "px"}, 1200, "swing", function() {
				$("#browsers-panel").animate({top:"-=10px"},500,"swing");
				setTimeout( '$("#browsers-panel").animate({top: "-=' + ( textHeight + 56 ) + 'px"}, 1200, "swing", function() { $("#browsers-panel").hide(); });', 60*1000 );
			});
			$("#browsers-close").each(function(){
				$(this).focus(function(){$(this).blur();}).click(function(){
					$("#browsers-panel").animate({top: "-=" + ( textHeight + 56 ) + "px"}, 1200, "swing", function() {
						$("#browsers-panel").hide();
					});
				});
			});
			$("#browsers-firefox,#browsers-opera,#browsers-safari,#browsers-chrome,#browsers-ie").each( function() {
				$(this).attr({target:"_blank"}).focus(function(){$(this).blur();}).mouseover( function() {
					$("#browsers-hover").html( $(this).text() + "<span>" + $(this).text() + "</span>" ).show().css({left: ( 2 + ( this.offsetLeft + ( this.offsetWidth / 2 ) ) ) + "px"});
				}).mouseout( function() {
					$("#browsers-hover").hide();
				});
			});
		}
	}

}

