/*
 * jReject (jQuery Browser Rejection Plugin)
 * Version 0.6-Beta
 * URL: http://jreject.turnwheel.com/
 * Description: jReject gives you a customizable and easy solution to reject/allowing specific browsers access to your pages
 * Author: Steven Bower (TurnWheel Designs) http://turnwheel.com/
 * Copyright: Copyright (c) 2009 Steven Bower under dual MIT/GPL license.
 * Depends On: jQuery Browser Plugin (http://jquery.thewikies.com/browser)
 */
(function($){
    $.reject = function(opts){
        var opts = $.extend(true, {
            reject: {
                all: false,
                msie5: true,
                msie6: true
            },
            display: [],
            browserInfo: {
                firefox: {
                    text: 'Firefox 3.5+',
                    url: 'http://www.mozilla.com/firefox/'
                },
                safari: {
                    text: 'Safari 3+',
                    url: 'http://www.apple.com/safari/download/'
                },
                opera: {
                    text: 'Opera 9+',
                    url: 'http://www.opera.com/download/'
                },
                chrome: {
                    text: 'Chrome 2+',
                    url: 'http://www.google.com/chrome/'
                },
                msie: {
                    text: 'Internet Explorer 7+',
                    url: 'http://www.microsoft.com/windows/Internet-explorer/default.aspx'
                },
                gcf: {
                    text: 'Google Chrome Frame',
                    url: 'http://code.google.com/chrome/chromeframe/',
                    allow: {
                        all: false,
                        msie: true
                    }
                }
            },
            header: 'Vet du om att din webbl&auml;sare &auml;r en gammal dinosaurie?',
            paragraph1: 'Din webbl&auml;sare &auml;r f&ouml;r&aring;ldrad, och &auml;r inte kompatibel med v&aring;r webbsida.  H&auml;r under hittar du en lista med popul&auml;ra webbl&auml;sare som du kan ladda hem.',
            paragraph2: 'Klicka p&aring; l&auml;nken under ikonerna f&ouml;r att komma till n&aring;gon av deras sidor ',
            close: true,
            closeMessage: '',
            closeLink: 'St&auml;ng f&ouml;nstret',
            closeURL: '#',
            closeESC: true,
            closeCookie: false,
            imagePath: '/images/',
            overlayBgColor: '#000',
            overlayOpacity: 0.8,
            fadeOutTime: 'fast'
        }, opts);
        if ($.isFunction(opts.beforeReject)) 
            opts.beforeReject(opts);
        var browserCheck = function(settings){
            return (settings['all'] ? true : false) || (settings[$.os.name] ? true : false) || (settings[$.layout.name] ? true : false) || (settings[$.browser.name] ? true : false) || (settings[$.browser.className] ? true : false);
        };
        if (browserCheck(opts.reject)) {
            if (opts.close && opts.closeCookie) {
                var COOKIE_NAME = 'jreject-close';
                var _cookie = function(name, value){
                    if (typeof value != 'undefined') 
                        document.cookie = name + '=' + encodeURIComponent(value === null ? '' : value);
                    else {
                        var cookie, val = null;
                        if (document.cookie && document.cookie != '') {
                            var cookies = document.cookie.split(';');
                            for (var i = 0; i < cookies.length; ++i) {
                                cookie = $.trim(cookies[i]);
                                if (cookie.substring(0, name.length + 1) == (name + '=')) {
                                    val = decodeURIComponent(cookie.substring(name.length + 1));
                                    break;
                                }
                            }
                        }
                        return val;
                    }
                };
                if (_cookie(COOKIE_NAME) != null) 
                    return false;
            }
            var html = '<div id="jr_overlay"></div><div id="jr_wrap"><div id="jr_inner"><h1 id="jr_header">' + opts.header + '</h1>' +
            (opts.paragraph1 === '' ? '' : '<p>' + opts.paragraph1 + '</p>') +
            (opts.paragraph2 === '' ? '' : '<p>' + opts.paragraph2 + '</p>') +
            '<ul>';
            if (opts.display.length < 1) 
                opts.display = ['firefox', 'chrome', 'msie', 'safari', 'opera', 'gcf'];
            var displayNum = 0;
            for (var x in opts.display) {
                var browser = opts.display[x];
                var info = opts.browserInfo[browser] || false;
                if (!info || (info['allow'] != undefined && !browserCheck(info['allow']))) 
                    continue;
                html += '<li id="jr_' + browser + '"><div class="jr_icon"></div><div><a href="' + (info.url || '#') + '">' + (info.text || 'Unknown') + '</a></div></li>';
                ++displayNum;
            }
            html += '</ul><div style="clear:both;"><a href="http://www.egnasteg.se/ie6/">' + opts.closeLink + '</a></div>' + '</div></div>';
            var _closeReject = function(){
                if (!opts.close) 
                    return false;
                if ($.isFunction(opts.beforeClose)) 
                    opts.beforeClose(opts);
                $('#jr_overlay,#jr_wrap').fadeOut(opts.fadeOutTime, function(){
                    $(this).remove();
                    if ($.isFunction(opts.afterClose)) 
                        opts.afterClose(opts);
                });
                $('embed, object, select, applet').show();
                if (opts.closeCookie) 
                    _cookie(COOKIE_NAME, 'true');
                if (opts.closeURL === '#') 
                    return false;
            };
            var element = $('<div>' + html + '</div>');
            var size = _pageSize();
            var scroll = _scrollSize();
            element.find('#jr_overlay').css({
                width: size[0],
                height: size[1],
                position: 'absolute',
                top: 0,
                left: 0,
                background: opts.overlayBgColor,
                zIndex: 200,
                opacity: opts.overlayOpacity,
                padding: 0,
                margin: 0
            }).next('#jr_wrap').css({
                position: 'absolute',
                width: '100%',
                top: scroll[1] + (size[3] / 4),
                left: scroll[0],
                zIndex: 300,
                textAlign: 'center',
                padding: 0,
                margin: 0
            }).children('#jr_inner').css({
                background: '#FFF',
                border: '1px solid #CCC',
        
                color: '#4F4F4F',
                margin: '0 auto',
                position: 'relative',
                height: 'auto',
                minWidth: displayNum * 100,
                maxWidth: displayNum * 140,
                width: $.layout.name == 'trident' ? displayNum * 155 : 'auto',
                padding: 20,
                fontSize: 12
            }).children('#jr_header').css({
                display: 'block',
                fontSize: '2.6em',
                marginBottom: '0.5em',
                color: '#333',
                fontFamily: 'Helvetica,Arial,sans-serif',
                fontWeight: 'bold',
                textAlign: 'left',
                padding: 5,
                margin: 0
            }).nextAll('p').css({
                textAlign: 'left',
                padding: 5,
                margin: 0
            }).siblings('ul').css({
                listStyleImage: 'none',
                listStylePosition: 'outside',
                listStyleType: 'none',
                margin: 0,
                padding: 0
            }).children('li').css({
                background: 'transparent url("' + opts.imagePath + 'background_browser.gif") no-repeat scroll left top',
                cusor: 'pointer',
                float: 'left',
                width: 120,
                height: 122,
                margin: '0 10px 10px 10px',
                padding: 0,
                textAlign: 'center'
            }).children('div.jr_icon').css({
                width: 100,
                height: 100,
                margin: '1px auto',
                padding: 0,
                background: 'transparent no-repeat scroll left top'
            }).each(function(){
                var self = $(this);
                self.css('background', 'transparent url(' + opts.imagePath + 'browser_' + (self.parent('li').attr('id').replace(/jr_/, '')) + '.gif) no-repeat scroll left top');
            }).siblings('div').css({
                color: '#808080',
                fontSize: '0.8em',
                height: 18,
                lineHeight: '17px',
                margin: '1px auto',
                padding: 0,
                width: 118,
                textAlign: 'center'
            }).children('a').css({
                color: '#333',
                textDecoration: 'none',
                padding: 0,
                margin: 0
            }).hover(function(){
                $(this).css('textDecoration', 'underline');
            }, function(){
                $(this).css('textDecoration', 'none');
            }).click(function(){
                window.open($(this).attr('href'), '_new');
                return false;
            }).parents('#jr_inner').children('#jr_closer').css({
                margin: '0 0 0 50px',
                clear: 'both',
                textAlign: 'left',
                padding: 0,
                margin: 0
            }).children('a').css({
                color: '#000',
                display: 'block',
                width: 'auto',
                margin: 0,
                padding: 0,
                textDecoration: 'underline'
            }).click(_closeReject).nextAll('p').css({
                padding: '10px 0 0 0',
                margin: 0
            });
            $('embed, object, select, applet').hide();
            $('body').append(element);
            $(window).bind('resize scroll', function(){
                var size = _pageSize();
                $('#jr_overlay').css({
                    width: size[0],
                    height: size[1]
                });
                var scroll = _scrollSize();
                $('#jr_wrap').css({
                    top: scroll[1] + (size[3] / 4),
                    left: scroll[0]
                });
            });
            if (opts.close && opts.closeESC) {
                $(document).keydown(function(event){
                    if (event.keyCode == 27) 
                        _closeReject();
                });
            }
            if ($.isFunction(opts.afterReject)) 
                opts.afterReject(opts);
            return true;
        }
        else {
            if ($.isFunction(opts.onFail)) 
                opts.onFail(opts);
            return false;
        }
    };
    var _pageSize = function(){
        var xScroll = window.innerWidth && window.scrollMaxX ? window.innerWidth + window.scrollMaxX : (document.body.scrollWidth > document.body.offsetWidth ? document.body.scrollWidth : document.body.offsetWidth);
        var yScroll = window.innerHeight && window.scrollMaxY ? window.innerHeight + window.scrollMaxY : (document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight);
        var windowWidth = window.innerWidth ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth);
        var windowHeight = window.innerHeight ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight);
        return [xScroll < windowWidth ? xScroll : windowWidth, yScroll < windowHeight ? windowHeight : yScroll, windowWidth, windowHeight];
    };
    var _scrollSize = function(){
        return [window.pageXOffset ? window.pageXOffset : (document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollLeft : document.body.scrollLeft), window.pageYOffset ? window.pageYOffset : (document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop)];
    };
})(jQuery);

/*
 * jQuery Browser Plugin
 * Version 2.3
 * 2008-09-17 19:27:05
 * URL: http://jquery.thewikies.com/browser
 * Description: jQuery Browser Plugin extends browser detection capabilities and can assign browser selectors to CSS classes.
 * Author: Nate Cavanaugh, Minhchau Dang, & Jonathan Neal
 * Copyright: Copyright (c) 2008 Jonathan Neal under dual MIT/GPL license.
 */
(function($){
    $.browserTest = function(a, z){
        var u = 'unknown', x = 'X', m = function(r, h){
            for (var i = 0; i < h.length; i = i + 1) {
                r = r.replace(h[i][0], h[i][1]);
            }
            return r;
        }, c = function(i, a, b, c){
            var r = {
                name: m((a.exec(i) || [u, u])[1], b)
            };
            r[r.name] = true;
            r.version = (c.exec(i) || [x, x, x, x])[3];
            if (r.name.match(/safari/) && r.version > 400) {
                r.version = '2.0';
            }
            if (r.name === 'presto') {
                r.version = ($.browser.version > 9.27) ? 'futhark' : 'linear_b';
            }
            r.versionNumber = parseFloat(r.version, 10) || 0;
            r.versionX = (r.version !== x) ? (r.version + '').substr(0, 1) : x;
            r.className = r.name + r.versionX;
            return r;
        };
        a = (a.match(/Opera|Navigator|Minefield|KHTML|Chrome/) ? m(a, [[/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''], ['Chrome Safari', 'Chrome'], ['KHTML', 'Konqueror'], ['Minefield', 'Firefox'], ['Navigator', 'Netscape']]) : a).toLowerCase();
        $.browser = $.extend((!z) ? $.browser : {}, c(a, /(camino|chrome|firefox|netscape|konqueror|lynx|msie|opera|safari)/, [], /(camino|chrome|firefox|netscape|netscape6|opera|version|konqueror|lynx|msie|safari)(\/|\s)([a-z0-9\.\+]*?)(\;|dev|rel|\s|$)/));
        $.layout = c(a, /(gecko|konqueror|msie|opera|webkit)/, [['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto']], /(applewebkit|rv|konqueror|msie)(\:|\/|\s)([a-z0-9\.]*?)(\;|\)|\s)/);
        $.os = {
            name: (/(win|mac|linux|sunos|solaris|iphone)/.exec(navigator.platform.toLowerCase()) || [u])[0].replace('sunos', 'solaris')
        };
        if (!z) {
            $('html').addClass([$.os.name, $.browser.name, $.browser.className, $.layout.name, $.layout.className].join(' '));
        }
    };
    $.browserTest(navigator.userAgent);
})(jQuery);
