function loadAjaxPage(data){}
function ajaxError(){}

hijax = {
    getHistoryPage:function(hash) {
            if(hash && $.browser.msie) {hash = encodeURIComponent(hash);}
            $.ajax({
                url:'/'+hash,
                dataType:'json',
                success:loadAjaxPage,
                error:ajaxError
            });
        },
    onPageLoad:function(){
        $(this.loaders).each(function(){this();})
        },
    getroot:function(){return window.location.protocol+'//'+window.location.host+'/';},
    track:function(hash){
        try{pageTracker._trackPageview(hash);return true;}
        catch(err){return false;}
    },
    loaders:[function(){
        $(".hijax").removeClass('hijax').click(function(){
                var hash = this.href.replace(hijax.getroot(),'');
                hash = hash.replace(/^.*#/, '');
                hijax.track(hash);
                $.historyLoad(hash);
                return false;
            });
        },
        function(){
            var ext = $("[rel*='external']");
            ext.each(function(){
                $(this).attr('rel',ext.attr('rel').replace('external', ''));
            });
            ext.click(function(){
                w=window.open(this.href);
                if (window.focus) {w.focus()}
                return false;
            });
        }]
}

$(function(){
    // Custom Validator methods go here
    jQuery.validator.addMethod("zip", function(value, element) { 
            return this.optional(element) || /^\d{5}$/.test(value); 
        }, "5-digit US zip code, please");
    
    // Add any functions that need to be called after every ajax page load
    hijax.loaders.push();
    $.historyInit(hijax.getHistoryPage, "/jquery_history");
    hijax.onPageLoad();
});
