﻿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;
            }
        });
/*     }); */
}

var isIE6 = ( document.all && !window.opera && !window.XMLHttpRequest && $.browser.msie );
$(function() {
    if (!isIE6) {
        $.historyInit(HistoryCallback);
    }
});

$.fn.ajaxPartial = function(resultsContainer) {
    $(this).submit(function() {
        AjaxResultsContainer = resultsContainer;
        var serializedForm = FormUrlForAjax($(this));
        var hash = serializedForm;
        hash = hash.replace(/^.*#/, '');
        if (IsIE6())
            GetUrlContent(hash);
        else
            $.historyLoad(hash);
        return false;
    });
    return $(this);
};

function HandleHtmlResponse(data) {
    $('#' + AjaxResultsContainer).html(data);
    var openElements = $.map($('ul.filterHeading').get(), function(n, i) {
        if ($.inArray(i, openFilters) != -1) {
            return n;
        }
    });
    initGallery(openElements);
    $('#' + AjaxResultsContainer).fadeTo('slow', 1);
}
function StartAjax() {
    if (inAjax == true) {
        $('#' + AjaxResultsContainer).parent().append('<div id="ajaxSpinner"><div id="ajaxBg"></div><div id="ajaxImg"></div></div>');
        $('#ajaxBg').fadeTo('slow', .8);
    }
}

function EndAjax() {
    $('#ajaxBg').fadeTo('slow', 0, function() {
        $('#ajaxImg').remove();
    });
    $('#ajaxSpinner').remove();
	try {
	    setupProductGrid();
	} catch(err) {}
}
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;
}
