﻿/**
* Browser Detection script to show the user an update browser message
*
* @version	1.0
* @author	Jasal Vadgama for Live Nation UK
* @require  jquery
* @uses 	ppk's detection script 2.0 - http://www.quirksmode.org/js/detect.html
*           - shortened to only capture browsers we want to test for
* @license	GPL v3
**/

/** perform detection **/
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";
        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.vendor,
		    subString: "Apple",
		    identity: "Safari",
		    versionSearch: "Version"
		},
		{
		    string: navigator.userAgent,
		    subString: "Firefox",
		    identity: "Firefox"
		},
		{
		    string: navigator.userAgent,
		    subString: "MSIE",
		    identity: "Explorer",
		    versionSearch: "MSIE"
		}
	],
    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.userAgent,
		    subString: "iPad",
		    identity: "iPad"
		},
		{
		    string: navigator.platform,
		    subString: "Linux",
		    identity: "Linux"
		}
	]

};
BrowserDetect.init();

// cookie stuff
function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.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 "";
};

function addUpgradeBar(browser, browserName, upgradeUrl) {
    // build container and add to page
    upgradeBar = $("<div id='browser_upgrade'></div>").attr("class", browser).css("opacity", 0).appendTo($("body"));

    // build upgrade copy
    upgradeCopy = $("<p></p>").html("Your version of " + browserName + " is out of date. To get the best experience ").appendTo(upgradeBar);

    // build upgrade link
    upgradeLink = $("<a title=''>upgrade now</a>").attr("href", upgradeUrl).appendTo(upgradeCopy);

    // build close link
    close_link = $("<a class='close_link' href='#' title='' onclick='hideUpgradeBar(); return false;'>Close</a>").appendTo(upgradeBar);

    $("body").animate({
        paddingTop: $("#browser_upgrade").height()
    });

    upgradeBar.animate({
        opacity: 1
    });
};

function hideUpgradeBar() {
    // fade out upgrade bar
    upgradeBar.animate({
        opacity: 0
    });

    // move up body
    $("body").animate({
        paddingTop: 0
    });

    // set cookie for 24 hours
    var today = new Date();
    today.setTime(today.getTime());
    expires = 1000 * 60 * 60 * 24; // one day in ms
    //expires = 1000 * 60 * 60; // 1hour for testing and dev
    expires_date = new Date(today.getTime() + (expires));

    // uncomment the following line to set the cookie
    document.cookie = "browser_upgrade=hide; expires=" + expires_date + "; path=/";
};

$(function() {
    if (getCookie('browser_upgrade') != "hide" || BrowserDetect.OS != "iPad" || BrowserDetect.OS != "iPhone/iPod") {
        switch (BrowserDetect.browser) {
            case "Explorer":
                if (BrowserDetect.version < 7) {
                    addUpgradeBar("explorer", "Internet Explorer", "http://www.microsoft.com/windows/internet-explorer/default.aspx");
                }
                break;
            case "Firefox":
                if (BrowserDetect.version < 3) {
                    addUpgradeBar("firefox", "Firefox", "http://www.getfirefox.com/");
                }
                break;
            case "Safari":
                if (BrowserDetect.version < 4) {
                    addUpgradeBar("safari", "Safari", "http://www.apple.com/safari");
                }
                break;
            case "Chrome":
                if (BrowserDetect.version < 5) {
                    addUpgradeBar("chrome", "Chrome", "http://www.google.com/chrome");
                }
                break;
            default:
                // do nothing
        }
    }
});
