// Browser Utilities
//
// Pull data out of URL or manipulate cookies.
//
function load_url() {
    var url = $(this).attr('data-kz-url');
    location.href = url;
}

// IE6 Warning
function ie_warning() {
    var isIE6 = navigator.userAgent.toLowerCase().indexOf('msie 6') != -1;

    if (isIE6) {
        window.location = "/browser-warning";
    }
}

$.extend({
    /* Gets the key/values from the document url query string*/
    queryValues: function() {
        var str = location.search;
        var query = str.charAt(0) == '?' ? str.substring(1) : str;
        var the_args = new Object();
        if (query) {
            var fields = query.split('&');
            for (var f = 0; f < fields.length; f++) {
                var field = fields[f].split('=');
                the_args[unescape(field[0].replace(/\+/g, ' '))] = unescape(field[1].replace(/\+/g, ' '));
            }
        }
        return the_args;
    },

    // Cookie API courtesy of Scott Andrew
    // Source: http://www.quirksmode.org/js/cookies.html
    createCookie: function(name, value, days) {
        var expires = null;
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        else {
            expires = "";
        }
        document.cookie = name + "=" + value + expires + "; path=/";
    },

    readCookie: function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    },

    eraseCookie: function(name) {
        $.createCookie(name, "", -1);
    },

    // Get URL Parameter courtesy of http://www.netlobo.com/url_query_string_javascript.html
    getUrlParameter: function(name) {
        name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regexS = "[\\?&]" + name + "=([^&#]*)";
        var regex = new RegExp(regexS);
        var results = regex.exec(window.location.href);
        if (results == null)
        return "";
        else
        return decodeURIComponent(results[1]);
    }
});

// jQuery utilities (mainly for debugging)
$.fn.extend({
    /**
     * @description Returns the tagName / classname / id of the first matched element
     */
    long_name: function() {
        var elem = this.get(0);
        if (!elem) return '<Null Object>';
        var longname = [elem.tagName.toLowerCase()];
        if (elem.className) {
            var classes = elem.className.split(/\s/);
            $.each(classes,
            function() {
                longname.push('.' + this);
            });
        }
        if (elem.id) {
            longname.push('#' + elem.id);
        }
        return longname.join('');
    }
});

$(document).ready(function() {
    // Handle pseudo-onclick events
    $('[data-kz-onclick]').live('click',
    function clickHandler(event) {
        // not crazy about having to call eval every time...
        eval($(this).attr('data-kz-onclick')).call(this, event);
        event.stopPropagation();
        return false;
    });
    // Handle psuedo-links (buttons that act as links)
    $('[data-kz-href]').live('click',
    function() {
        document.location.href = $(this).attr('data-kz-href');
    });
});
