/**
* Place a message warning a user for his unsafe ie6 browser
*
* @author Kees Brandenburg (www.psyfactory.nl)
*/
var BrowserWarning = {
  init: function(language) {
    if (BrowserWarning.isOutdatedBrowser())
    {
      this.language = (language) ? language : 'nl';
      window.onload = function() {
        BrowserWarning.includeStylesheet();
        BrowserWarning.placeUpdateWarning();
      }
    }
  },
  isOutdatedBrowser: function() {
    BrowserDetect.init();
    
    var browser = BrowserDetect.browser.toLowerCase();
    var version = BrowserDetect.version;
    
    return (
        (browser == 'explorer' && version < 8) ||
        (browser == 'opera' && version < 10.51) ||
        (browser == 'firefox' && version < 3) ||
        (browser == 'chrome' && version < 4.1)
    );
  },
  placeUpdateWarning: function() {
    document.body.style.cursor = 'wait';
    
    var warning = document.createElement('div');
    warning.setAttribute('id', 'browser-warning');
    
    // Generate holder
    var holder = document.createElement('div');
    holder.setAttribute('id', 'browser-warning-holder');
    warning.appendChild(holder);
    
    // generate links
    var links = document.createElement('div');
    links.setAttribute('id', 'browser-warning-links');
    links.appendChild(this.createLink('download Opera', '/inc/browser-warning/opera_icon.gif', 'http://www.opera.com/browser/download/'));
    links.appendChild(this.createLink('download Firefox', '/inc/browser-warning/firefox.jpeg', 'http://www.mozilla.com/en-US/products/firefox/'));
    links.appendChild(this.createLink('download Chnome', '/inc/browser-warning/chnome.jpg', 'http://www.google.com/chrome/'));
    links.appendChild(this.createLink('download Internet explorer', '/inc/browser-warning/ie.jpg', 'http://www.microsoft.com/windows/internet-explorer/download-ie.aspx'));
    holder.appendChild(links);
    
    // Generate content
    var content = document.createElement('div');
    content.setAttribute('id', 'browser-warning-content');
    if (this.language == 'nl')
      var html = '<p>U maakt gebruik van een verouderde browser. Klik op 1 van de iconen rechts om een up-to-date browser te downloaden.</p>';
    else
      var html = '<p>You are using a depricated browser. It would be best to upgrade to a newer browser.</p>';
    content.innerHTML = html;
    holder.appendChild(content);
    
    document.body.appendChild(warning);
    document.body.style.cursor = 'auto';
  },
  createLink: function(title, icon, href) {
    var link = document.createElement('a');
    link.setAttribute('target', '_blank');
    link.setAttribute('title', title);
    link.setAttribute('href', href);
    var img = document.createElement('img');
    img.setAttribute('src', icon);
    img.setAttribute('alt', title);
    link.appendChild(img);
    
    return link;
  },
  includeStylesheet: function() {
    var html_doc  = document.getElementsByTagName('head').item(0);  
    var styles    = html_doc.getElementsByTagName('link');
    var src       = '/inc/browser-warning/browser-warning.css';
        
    for (var i = 0; i < styles.length; i++)
    {
      if (styles[i].href == src) return false;
    }
    
    var file = document.createElement("link");
    
    file.setAttribute('rel', "stylesheet");
    file.setAttribute('type', "text/css");
    file.setAttribute('href', src);
    
    html_doc.appendChild(file);
  }
}

/**
* Browser detect script
* 
* @author Peter Paul Koch (www.quircksmode.org)
*/
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
      
    if (this.browser == 'Opera' && this.version == 9.8)
    {
      this.versionSearchString = 'Version';
      this.version = this.searchVersion(navigator.userAgent) || this.version; 
    }
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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: "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"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
};

BrowserWarning.init();

