/*!
 * Modernizr v1.7
 * http://www.modernizr.com
 *
 * Developed by: 
 * - Faruk Ates  http://farukat.es/
 * - Paul Irish  http://paulirish.com/
 *
 * Copyright (c) 2009-2011
 * Dual-licensed under the BSD or MIT licenses.
 * http://www.modernizr.com/license/
 */
window.Modernizr = (function (p, y, m) {
    var f = "1.7",
        K = {},
        A = true,
        I = y.documentElement,
        j = y.head || y.getElementsByTagName("head")[0],
        J = "modernizr",
        G = y.createElement(J),
        E = G.style,
        h = y.createElement("input"),
        H = ":)",
        B = Object.prototype.toString,
        C = " -webkit- -moz- -o- -ms- -khtml- ".split(" "),
        r = "Webkit Moz O ms Khtml".split(" "),
        L = {
            svg: "http://www.w3.org/2000/svg"
        },
        l = {},
        e = {},
        z = {},
        F = [],
        D, d = function (O) {
            var N = y.createElement("style"),
                Q = y.createElement("div"),
                M;
            N.textContent = O + "{#modernizr{height:3px}}";
            j.appendChild(N);
            Q.id = "modernizr";
            I.appendChild(Q);
            M = Q.offsetHeight === 3;
            N.parentNode.removeChild(N);
            Q.parentNode.removeChild(Q);
            return !!M
        },
        v = (function () {
            var N = {
                select: "input",
                change: "input",
                submit: "form",
                reset: "form",
                error: "img",
                load: "img",
                abort: "img"
            };

            function M(O, R) {
                R = R || y.createElement(N[O] || "div");
                O = "on" + O;
                var Q = (O in R);
                if (!Q) {
                    if (!R.setAttribute) {
                        R = y.createElement("div")
                    }
                    if (R.setAttribute && R.removeAttribute) {
                        R.setAttribute(O, "");
                        Q = n(R[O], "function");
                        if (!n(R[O], m)) {
                            R[O] = m
                        }
                        R.removeAttribute(O)
                    }
                }
                R = null;
                return Q
            }
            return M
        })();
    var s = ({}).hasOwnProperty,
        q;
    if (!n(s, m) && !n(s.call, m)) {
        q = function (M, N) {
            return s.call(M, N)
        }
    } else {
        q = function (M, N) {
            return ((N in M) && n(M.constructor.prototype[N], m))
        }
    }
    function x(M) {
        E.cssText = M
    }
    function b(N, M) {
        return x(C.join(N + ";") + (M || ""))
    }
    function n(N, M) {
        return typeof N === M
    }
    function o(N, M) {
        return ("" + N).indexOf(M) !== -1
    }
    function g(N, O) {
        for (var M in N) {
            if (E[N[M]] !== m && (!O || O(N[M], G))) {
                return true
            }
        }
    }
    function a(Q, O) {
        var N = Q.charAt(0).toUpperCase() + Q.substr(1),
            M = (Q + " " + r.join(N + " ") + N).split(" ");
        return !!g(M, O)
    }
    l.flexbox = function () {
        function N(T, V, U, S) {
            V += ":";
            T.style.cssText = (V + C.join(U + ";" + V)).slice(0, -V.length) + (S || "")
        }
        function Q(T, V, U, S) {
            T.style.cssText = C.join(V + ":" + U + ";") + (S || "")
        }
        var R = y.createElement("div"),
            O = y.createElement("div");
        N(R, "display", "box", "width:42px;padding:0;");
        Q(O, "box-flex", "1", "width:10px;");
        R.appendChild(O);
        I.appendChild(R);
        var M = O.offsetWidth === 42;
        R.removeChild(O);
        I.removeChild(R);
        return M
    };
    l.canvas = function () {
        var M = y.createElement("canvas");
        return !!(M.getContext && M.getContext("2d"))
    };
    l.canvastext = function () {
        return !!(K.canvas && n(y.createElement("canvas").getContext("2d").fillText, "function"))
    };
    l.webgl = function () {
        return !!p.WebGLRenderingContext
    };
    l.touch = function () {
        return ("ontouchstart" in p) || d("@media (" + C.join("touch-enabled),(") + "modernizr)")
    };
    l.geolocation = function () {
        return !!navigator.geolocation
    };
    l.postmessage = function () {
        return !!p.postMessage
    };
    l.websqldatabase = function () {
        var M = !! p.openDatabase;
        return M
    };
    l.indexedDB = function () {
        for (var N = -1, M = r.length; ++N < M;) {
            var O = r[N].toLowerCase();
            if (p[O + "_indexedDB"] || p[O + "IndexedDB"]) {
                return true
            }
        }
        return false
    };
    l.hashchange = function () {
        return v("hashchange", p) && (y.documentMode === m || y.documentMode > 7)
    };
    l.history = function () {
        return !!(p.history && history.pushState)
    };
    l.draganddrop = function () {
        return v("dragstart") && v("drop")
    };
    l.websockets = function () {
        return ("WebSocket" in p)
    };
    l.rgba = function () {
        x("background-color:rgba(150,255,150,.5)");
        return o(E.backgroundColor, "rgba")
    };
    l.hsla = function () {
        x("background-color:hsla(120,40%,100%,.5)");
        return o(E.backgroundColor, "rgba") || o(E.backgroundColor, "hsla")
    };
    l.multiplebgs = function () {
        x("background:url(//:),url(//:),red url(//:)");
        return new RegExp("(url\\s*\\(.*?){3}").test(E.background)
    };
    l.backgroundsize = function () {
        return a("backgroundSize")
    };
    l.borderimage = function () {
        return a("borderImage")
    };
    l.borderradius = function () {
        return a("borderRadius", "", function (M) {
            return o(M, "orderRadius")
        })
    };
    l.boxshadow = function () {
        return a("boxShadow")
    };
    l.textshadow = function () {
        return y.createElement("div").style.textShadow === ""
    };
    l.opacity = function () {
        b("opacity:.55");
        return /^0.55$/.test(E.opacity)
    };
    l.cssanimations = function () {
        return a("animationName")
    };
    l.csscolumns = function () {
        return a("columnCount")
    };
    l.cssgradients = function () {
        var O = "background-image:",
            N = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
            M = "linear-gradient(left top,#9f9, white);";
        x((O + C.join(N + O) + C.join(M + O)).slice(0, -O.length));
        return o(E.backgroundImage, "gradient")
    };
    l.cssreflections = function () {
        return a("boxReflect")
    };
    l.csstransforms = function () {
        return !!g(["transformProperty", "WebkitTransform", "MozTransform", "OTransform", "msTransform"])
    };
    l.csstransforms3d = function () {
        var M = !! g(["perspectiveProperty", "WebkitPerspective", "MozPerspective", "OPerspective", "msPerspective"]);
        if (M && "webkitPerspective" in I.style) {
            M = d("@media (" + C.join("transform-3d),(") + "modernizr)")
        }
        return M
    };
    l.csstransitions = function () {
        return a("transitionProperty")
    };
    l.fontface = function () {
        var R, N, Q = j || I,
            S = y.createElement("style"),
            M = y.implementation || {
                hasFeature: function () {
                    return false
                }
            };
        S.type = "text/css";
        Q.insertBefore(S, Q.firstChild);
        R = S.sheet || S.styleSheet;
        var O = M.hasFeature("CSS2", "") ?
        function (V) {
            if (!(R && V)) {
                return false
            }
            var T = false;
            try {
                R.insertRule(V, 0);
                T = (/src/i).test(R.cssRules[0].cssText);
                R.deleteRule(R.cssRules.length - 1)
            } catch (U) {}
            return T
        } : function (T) {
            if (!(R && T)) {
                return false
            }
            R.cssText = T;
            return R.cssText.length !== 0 && (/src/i).test(R.cssText) && R.cssText.replace(/\r+|\n+/g, "").indexOf(T.split(" ")[0]) === 0
        };
        N = O('@font-face { font-family: "font"; src: url(data:,); }');
        Q.removeChild(S);
        return N
    };
    l.video = function () {
        var O = y.createElement("video"),
            M = !! O.canPlayType;
        if (M) {
            M = new Boolean(M);
            M.ogg = O.canPlayType('video/ogg; codecs="theora"');
            var N = 'video/mp4; codecs="avc1.42E01E';
            M.h264 = O.canPlayType(N + '"') || O.canPlayType(N + ', mp4a.40.2"');
            M.webm = O.canPlayType('video/webm; codecs="vp8, vorbis"')
        }
        return M
    };
    l.audio = function () {
        var N = y.createElement("audio"),
            M = !! N.canPlayType;
        if (M) {
            M = new Boolean(M);
            M.ogg = N.canPlayType('audio/ogg; codecs="vorbis"');
            M.mp3 = N.canPlayType("audio/mpeg;");
            M.wav = N.canPlayType('audio/wav; codecs="1"');
            M.m4a = N.canPlayType("audio/x-m4a;") || N.canPlayType("audio/aac;")
        }
        return M
    };
    l.localstorage = function () {
        try {
            return !!localStorage.getItem
        } catch (M) {
            return false
        }
    };
    l.sessionstorage = function () {
        try {
            return !!sessionStorage.getItem
        } catch (M) {
            return false
        }
    };
    l.webWorkers = function () {
        return !!p.Worker
    };
    l.applicationcache = function () {
        return !!p.applicationCache
    };
    l.svg = function () {
        return !!y.createElementNS && !! y.createElementNS(L.svg, "svg").createSVGRect
    };
    l.inlinesvg = function () {
        var M = y.createElement("div");
        M.innerHTML = "<svg/>";
        return (M.firstChild && M.firstChild.namespaceURI) == L.svg
    };
    l.smil = function () {
        return !!y.createElementNS && /SVG/.test(B.call(y.createElementNS(L.svg, "animate")))
    };
    l.svgclippaths = function () {
        return !!y.createElementNS && /SVG/.test(B.call(y.createElementNS(L.svg, "clipPath")))
    };

    function u() {
        K.input = (function (O) {
            for (var N = 0, M = O.length; N < M; N++) {
                z[O[N]] = !! (O[N] in h)
            }
            return z
        })("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));
        K.inputtypes = (function (Q) {
            for (var O = 0, N, S, R, M = Q.length; O < M; O++) {
                h.setAttribute("type", S = Q[O]);
                N = h.type !== "text";
                if (N) {
                    h.value = H;
                    h.style.cssText = "position:absolute;visibility:hidden;";
                    if (/^range$/.test(S) && h.style.WebkitAppearance !== m) {
                        I.appendChild(h);
                        R = y.defaultView;
                        N = R.getComputedStyle && R.getComputedStyle(h, null).WebkitAppearance !== "textfield" && (h.offsetHeight !== 0);
                        I.removeChild(h)
                    } else {
                        if (/^(search|tel)$/.test(S)) {} else {
                            if (/^(url|email)$/.test(S)) {
                                N = h.checkValidity && h.checkValidity() === false
                            } else {
                                if (/^color$/.test(S)) {
                                    I.appendChild(h);
                                    I.offsetWidth;
                                    N = h.value != H;
                                    I.removeChild(h)
                                } else {
                                    N = h.value != H
                                }
                            }
                        }
                    }
                }
                e[Q[O]] = !! N
            }
            return e
        })("search tel url email datetime date month week time datetime-local number range color".split(" "))
    }
    for (var k in l) {
        if (q(l, k)) {
            D = k.toLowerCase();
            K[D] = l[k]();
            F.push((K[D] ? "" : "no-") + D)
        }
    }
    if (!K.input) {
        u()
    }
    K.crosswindowmessaging = K.postmessage;
    K.historymanagement = K.history;
    K.addTest = function (M, N) {
        M = M.toLowerCase();
        if (K[M]) {
            return
        }
        N = !! (N());
        I.className += " " + (N ? "" : "no-") + M;
        K[M] = N;
        return K
    };
    x("");
    G = h = null;
    if (A && p.attachEvent && (function () {
        var M = y.createElement("div");
        M.innerHTML = "<elem></elem>";
        return M.childNodes.length !== 1
    })()) {
        (function (X, ab) {
            var M = "abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
                S = M.split("|"),
                Q = S.length,
                N = new RegExp("(^|\\s)(" + M + ")", "gi"),
                U = new RegExp("<(/*)(" + M + ")", "gi"),
                Z = new RegExp("(^|[^\\n]*?\\s)(" + M + ")([^\\n]*)({[\\n\\w\\W]*?})", "gi"),
                ac = ab.createDocumentFragment(),
                V = ab.documentElement,
                aa = V.firstChild,
                O = ab.createElement("body"),
                T = ab.createElement("style"),
                W;

            function R(ae) {
                var ad = -1;
                while (++ad < Q) {
                    ae.createElement(S[ad])
                }
            }
            function Y(ah, af) {
                var ae = -1,
                    ad = ah.length,
                    ai, ag = [];
                while (++ae < ad) {
                    ai = ah[ae];
                    if ((af = ai.media || af) != "screen") {
                        ag.push(Y(ai.imports, af), ai.cssText)
                    }
                }
                return ag.join("")
            }
            R(ab);
            R(ac);
            aa.insertBefore(T, aa.firstChild);
            T.media = "print";
            X.attachEvent("onbeforeprint", function () {
                var ae = -1,
                    ah = Y(ab.styleSheets, "all"),
                    ag = [],
                    aj;
                W = W || ab.body;
                while ((aj = Z.exec(ah)) != null) {
                    ag.push((aj[1] + aj[2] + aj[3]).replace(N, "$1.iepp_$2") + aj[4])
                }
                T.styleSheet.cssText = ag.join("\n");
                while (++ae < Q) {
                    var af = ab.getElementsByTagName(S[ae]),
                        ai = af.length,
                        ad = -1;
                    while (++ad < ai) {
                        if (af[ad].className.indexOf("iepp_") < 0) {
                            af[ad].className += " iepp_" + S[ae]
                        }
                    }
                }
                ac.appendChild(W);
                V.appendChild(O);
                O.className = W.className;
                O.innerHTML = W.innerHTML.replace(U, "<$1font")
            });
            X.attachEvent("onafterprint", function () {
                O.innerHTML = "";
                V.removeChild(O);
                V.appendChild(W);
                T.styleSheet.cssText = ""
            })
        })(p, y)
    }
    K._enableHTML5 = A;
    K._version = f;
    I.className = I.className.replace(/\bno-js\b/, "") + " js " + F.join(" ");
    return K
})(this, this.document);

function css_browser_selector(p) {
    var a = p.toLowerCase(),
        j = function (b) {
            return a.indexOf(b) > -1
        },
        k = "gecko",
        n = "webkit",
        q = "safari",
        d = "opera",
        e = "mobile",
        f = document.documentElement,
        l = [(!(/opera|webtv/i.test(a)) && /msie\s(\d)/.test(a)) ? ("ie ie" + RegExp.$1) : j("firefox/2") ? k + " ff2" : j("firefox/3.5") ? k + " ff3 ff3_5" : j("firefox/3.6") ? k + " ff3 ff3_6" : j("firefox/3") ? k + " ff3" : j("gecko/") ? k : j("opera") ? d + (/version\/(\d+)/.test(a) ? " " + d + RegExp.$1 : (/opera(\s|\/)(\d+)/.test(a) ? " " + d + RegExp.$2 : "")) : j("konqueror") ? "konqueror" : j("blackberry") ? e + " blackberry" : j("android") ? e + " android" : j("chrome") ? n + " chrome" : j("iron") ? n + " iron" : j("applewebkit/") ? n + " " + q + (/version\/(\d+)/.test(a) ? " " + q + RegExp.$1 : "") : j("mozilla/") ? k : "", j("j2me") ? e + " j2me" : j("iphone") ? e + " iphone" : j("ipod") ? e + " ipod" : j("ipad") ? e + " ipad" : j("mac") ? "mac" : j("darwin") ? "mac" : j("webtv") ? "webtv" : j("win") ? "win" + (j("windows nt 6.0") ? " vista" : "") : j("freebsd") ? "freebsd" : (j("x11") || j("linux")) ? "linux" : "", "js"];
    c = l.join(" ");
    f.className += " " + c;
    return c
}
css_browser_selector(navigator.userAgent);
