﻿var inAjax = false;
var AjaxResultsContainer;
var firstLoad = true;
var RootHistoryUrl = '';
function HistoryCallback(hash) {
    if (inAjax)
        return;
    if ($.trim(hash) == "") return;
    if (hash) {
        GetUrlContent(hash);
    } else if (!firstLoad && RootHistoryUrl.length > 0) {
        GetUrlContent(RootHistoryUrl);
    } else { firstLoad = false; }

    return true;
}

function GetUrlContent(url) {
    if (AjaxResultsContainer === undefined) return;
    inAjax = true;
    window.setTimeout('StartAjax()', 1);
    $('#' + AjaxResultsContainer).fadeTo('slow', 0.33, function() {
        $.get(url, function(data) {
            try {
                HandleHtmlResponse(data);
            }
            catch (e) { }
            finally {
                try { OnPageLoad(); } catch (e) { }
                inAjax = false;
                EndAjax();
                //$('#' + AjaxResultsContainer).parent().height($('#' + AjaxResultsContainer).height());
                return true;
            }
        });
    });
}

$(function() {
    $.historyInit(HistoryCallback);
});

$.fn.ajaxPartial = function(resultsContainer) {
    $(this).submit(function() {
        AjaxResultsContainer = resultsContainer;
        var serializedForm = FormUrlForAjax($(this));
        var hash = serializedForm;
        hash = hash.replace(/^.*#/, '');
        $.historyLoad(hash);
        return false;
    });
    return $(this);
};

function HandleHtmlResponse(data) {
    $('#' + AjaxResultsContainer).html(data);
    $('#' + AjaxResultsContainer).fadeTo('slow', 1);
}
function StartAjax() {
    if (inAjax == true) {
        $('#' + AjaxResultsContainer).parent().append('<div id="ajaxSpinner" style="opacity:0"></div>');
        $('#ajaxSpinner').fadeTo('slow', 1);
    }
}

function EndAjax() {
    $('#ajaxSpinner').fadeTo('slow', 0, function() {
        $('#ajaxImg').remove();
    });
    $('#ajaxSpinner').remove();
    initGallery();
}
function FormUrlForAjax(form) {
    var serializedForm = $(form).serialize();
    if (serializedForm.length > 0)
        serializedForm += '&';
    serializedForm += '__ajax=true';
    var action = $(form).attr('action');
    if (action.indexOf('?') < 0)
        action += '?';
    else
        action += '&';
    return action + serializedForm;
}