﻿(function($) {
    $.fn.centerWindow = function(options) {
        var defaults = {
            setWindowValues: true,
            left: 0,
            leftOffset: 0,
            leftOffsetWindow: $("html, body").scrollLeft(),
            top: 0,
            topOffset: 0,
            topOffsetWindow: $("html, body").scrollTop(),
            width: 'auto',
            widthOffset: 0,
            widthWindow: $(window).width(),
            height: 'auto',
            heightOffset: 0,
            heightWindow: $(window).height(),
            targetPositionObject: null
        }
        //$('body').css({ 'position': 'absolute' });
        //alert("blub");

        //alert($("html, body").scrollTop());
        //alert(document.documentElement.scrollTop);
        var options = $.extend(defaults, options);

        //options.topOffsetWindow = options.targetPositionObject.scrollTop();
        //alert(options.topOffsetWindow);
        //alert(options.topOffsetWindow);
        //        options.top = options.topOffsetWindow + options.topOffset;
        //        options.left = options.leftOffsetWindow + options.leftOffset;

        //targetWidth

        if (options.width == 'auto' && options.height == 'auto') {
            options.width = $(this).width();
            options.height = $(this).height();

            options.left = options.leftOffsetWindow + options.leftOffset + ((options.widthWindow - options.width) / 2);
            
            //alert($(this).scrollTop());
            options.top = options.topOffset + ((options.heightWindow - options.height) / 2);
            $(this).css({ 'height': options.height + 'px', 'width': options.width + 'px', 'left': options.left + 'px', 'top': options.topOffset + 'px', 'position': 'fixed' });
            $(this).absolutize();
            //$(this).css({ 'left': options.left, 'top': options.top, 'position': 'absolute' });

            //            options.left = options.leftOffsetWindow + options.leftOffset + ((options.widthWindow - options.width) / 2);
            //            options.top = options.topOffsetWindow + options.topOffset + ((options.heightWindow - options.height) / 2);
        } else {
            options.height = options.heightWindow - (options.topOffset * 2);
            options.top = options.topOffset + options.topOffsetWindow;
            options.width = options.widthWindow - (options.leftOffset * 2);
            options.left = options.leftOffset + options.leftOffsetWindow;


        }
        if (options.setWindowValues) {
            //$(this).css({ 'height': options.height + 'px', 'width': options.width + 'px', 'left': options.left + 'px', 'top': options.top + 'px', 'position': 'absolute' });
            //$(this).css({ 'height': options.height + 'px', 'width': options.width + 'px', 'left': options.left + 'px', 'top': options.top + 'px', 'position': 'fixed' });
            //alert($(this).position().left + " x " + $(this).position().top);

        }
        return options;
    }
})(jQuery);
function getScroll(method, element) {
    // The passed in `method` value should be 'Top' or 'Left'
    method = 'scroll' + method;
    return (element == window || element == document) ? (
    self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] ||
    (browserSupportsBoxModel && document.documentElement[method]) ||
    document.body[method]
  ) : element[method];
}

jQuery.fn.absolutize = function() {
    return this.each(function() {
        var element = jQuery(this);
        if (element.css('position') == 'absolute') {
            return element;
        }

        var offsets = element.offset();
        var top = offsets.top;
        var left = offsets.left;
        var width = element[0].clientWidth;
        var height = element[0].clientHeight;

        element._originalLeft = left - parseFloat(element.css("left") || 0);
        element._originalTop = top - parseFloat(element.css("top") || 0);
        element._originalWidth = element.css("width");
        element._originalHeight = element.css("height");

        element.css("position", "absolute");
        element.css("top", top + 'px');
        element.css("left", left + 'px');
        element.css("width", width + 'px');
        element.css("height", height + 'px');
        return element;

    });
}