﻿$(function() {
    var tc = $('div.tabs > div');
    tc.hide().filter(':first').show();

    $('div.tabs ul.tabNavigation a').click(function() {
        tc.hide();
        tc.filter(this.hash).show();
        $('div.tabs ul.tabNavigation a').removeClass('selected');
        $(this).addClass('selected');
        return false;
    }).filter(':first').click();
});

$(document).ready(function() {
    $('input[@type=button]').addClass('inputbutton');
    $('input[@type=submit]').addClass('inputbutton');
    $('input[@type=reset]').addClass('inputbutton');

    $('.favimgoff, .favimgon').click(function() {
        var $favimg = $(this);
        if ($favimg.attr('class') != 'imgload') {
            $favimg.removeClass('favimgoff').removeClass('favimgon').addClass('imgload');
            var $id = $favimg.attr('id');
            var $url = '';
            if ($id.substr(0, 1) == 'o')
                $url = '../Ajax/AddRemoveFavoriteOrganization';
            else if ($favimg.attr('id').substr(0, 1) == 'e')
                $url = '../Ajax/AddRemoveEventRegistration';
            //try {
            $.getJSON($url, { vid: $id.substring(1) }, function(json) {
                if (json.Success) {
                    if (json.SetOn) {
                        $favimg.removeClass('imgload').removeClass('favimgoff').addClass('favimgon');
                        var name = 'fb' + $id;
                        if ($id.substr(0, 1) == 'o') {
                            var newLI = '<li id="' + name + '" class="listgroup"><a href="' + json.Url + $id.substr(1) + '">' + json.Name + '</a></li>';
                            $('#favorgsidebar').append(newLI);
                        } else if ($id.substr(0, 1) == 'e') {
                            var newLI = '<li id="' + name + '" class="listevent"><a href="' + json.Url + $id.substr(1) + '">' + json.Name + '</a></li>';
                            $('#faveventssidebar').append(newLI);
                        }
                    } else {
                        var name = '#fb' + $id;
                        $(name).fadeOut(800, function() { $(this).remove(); });
                        $favimg.removeClass('imgload').removeClass('favimgon').addClass('favimgoff');
                    }
                }
                else {
                    alert('Favorite could not be added. Please refresh the page and try again.');
                }
            });
            //} catch (e) {
            //    alert('Favorite event could not be added. Please refresh the page and try again.');
            //}
        }
    });
});

(function($) {
    $.fn.scrollTo = function() { $('html,body').animate({ scrollTop: this.offset().top, scrollLeft: this.offset().left }, 500); return this; }
    $.extend({
        alertError: function(s) { var o = $.extend({}, $.alertdefaults, s); $(o.alertBox).hide().removeClass(o.successClass).removeClass(o.warningClass).addClass(o.errorClass).text(o.message).scrollTo().fadeIn(o.speed); },
        alertWarning: function(s) { var o = $.extend({}, $.alertdefaults, s); $(o.alertBox).hide().removeClass(o.successClass).removeClass(o.errorClass).addClass(o.warningClass).text(o.message).scrollTo().fadeIn(o.speed); },
        alertSuccess: function(s) { var o = $.extend({}, $.alertdefaults, s); $(o.alertBox).hide().removeClass(o.errorClass).removeClass(o.warningClass).addClass(o.successClass).text(o.message).scrollTo().fadeIn(o.speed); },
        alertNeutral: function(s) { var o = $.extend({}, $.alertdefaults, s); $(o.alertBox).hide().removeClass(o.errorClass).removeClass(o.warningClass).removeClass(o.successClass).addClass(o.neutralClass).text(o.message).scrollTo().fadeIn(o.speed); },
        hideAlert: function(s) { var o = $.extend({}, $.alertdefaults, s); $(o.alertBox).hide(); },
        alertdefaults: { message: '', alertBox: '#message', successClass: 'messagesuccess', errorClass: 'messageerror', warningClass: 'messagewarning', neutralClass: 'messageneutral', speed: 800 }
    });

    $.fn.RemoveObject = function(obj) { obj.fadeOut(1000, function() { $(this).remove(); }); return this; };
    $.fn.flash = function() { if ($(this).css("background-color")) { var o = $(this).css("background-color"); $(this).css('background-color', '#ffff99'); $(this).animate({ backgroundColor: o }, 2500); } return $(this); };
    $.query = function() { var s = location.search; var r = {}; var q = s.substring(s.indexOf('?') + 1); q = q.replace(/\&$/, ''); $.each(q.split('&'), function() { var splitted = this.split('='); var key = splitted[0]; var val = splitted[1]; if (/^[0-9.]+$/.test(val)) val = parseFloat(val); if (typeof val == 'number' || val.length > 0) r[key] = val; }); return r; };
    $.printwin = function(options) { var opts = $.extend({}, $.printwin.defaults, options); var win = window.open(opts.pageToLoad, 'printPreview', "status = 0, toolbar = 0, location = 0, menubar = 1, directories = 0, resizable = 1, scrollbars = 1, height = 700px, width = 1000px", true); $.printwin.print = function() { win.print(); }; $.printwin.defaults = { pageToLoad: null, show: null, hide: null }; };
    $.modalwin = function(options) {
        var opts = $.extend({}, defaults, options);

        var overlay = $('<div id="ovr_cover" class="overlay"></div>');
        var modalWindow = $('<div id="ovr_modal" class="overlay"></div>');
        var modalClose = $('<div id="ovr_close"></div>');
        var modalCloseLink = $('<a href="#" id="ovr_hide"><img id="ovr_hide_img" src="/content/images/spacer.gif" /></a>');
        var modalTitle = $('<div id="ovr_title">Loading...</div>');
        var modalContent = $('<div id="ovr_content" style="display: none;"></div>');

        var result;

        overlay.click(function() { $.modalwin.close(); });
        $("body").append(overlay);

        overlay.fadeIn('normal', function() {
            modalClose.append(modalCloseLink);
            modalWindow.append(modalClose);
            modalWindow.append(modalTitle);
            modalWindow.append(modalContent);

            $("body").append(modalWindow);
            var topgap = $(window).height() - modalWindow.height();
            modalWindow.css("top", parseInt(topgap / 2) - 160 + "px");

            var leftgap = $(window).width() - modalWindow.width();
            modalWindow.css("left", parseInt(leftgap / 2) + "px");

            modalWindow.fadeIn(100, function() {
                if (opts.loadContained) {
                    var contentContain = $('<iframe frameborder="0" width="680px" height="310px" marginheight="0" marginwidth="0" src="' + opts.pageToLoad + '"></iframe>');
                    modalContent.attr('style', 'padding: 0px; margin: 0px;');
                    modalContent.append(contentContain);
                    modalContent.show();
                    modalTitle.text(opts.title);
                    topgap = $(window).height() - modalWindow.height();
                    leftgap = $(window).width() - modalWindow.width();
                    modalWindow.animate({
                        top: parseInt(topgap / 2) - 100 + "px",
                        left: parseInt(leftgap / 2) + "px"
                    }, 250, function() {
                        $('.ovr_cancel').each(function() { $(this).click(function() { $.modalwin.close(); }) });
                        modalCloseLink.click(function(e) { e.preventDefault(); $.modalwin.close(); });

                        if (opts.show) opts.show();
                    });
                } else {
                    modalContent.load(opts.pageToLoad, function() {
                        $(this).show();
                        modalTitle.text(opts.title);
                        topgap = $(window).height() - modalWindow.height();
                        leftgap = $(window).width() - modalWindow.width();
                        modalWindow.animate({
                            top: parseInt(topgap / 2) - 100 + "px",
                            left: parseInt(leftgap / 2) + "px"
                        }, 250, function() {
                            $('.ovr_cancel').each(function() { $(this).click(function() { $.modalwin.close(); }) });
                            modalCloseLink.click(function(e) { e.preventDefault(); $.modalwin.close(); });

                            if (opts.show) opts.show();
                        });
                    });
                }
            });

            $(document).keydown(handleEscape);
        });

        $.modalwin.setResult = function(obj) {
            result = obj;
        };

        $.modalwin.close = function() {
            var shouldClose = true;
            if (opts.hide) {
                shouldClose = opts.hide(result);
            }

            if (shouldClose == true) {
                $(document).unbind("keydown", handleEscape)
                var remove = function() { $(this).remove(); };
                if ($('#ovr_modal')) $('#ovr_modal').hide(remove);
                if ($("#ovr_content")) $("#ovr_content").hide(remove);
                if ($("#ovr_cover")) $("#ovr_cover").hide(150, remove).empty();
            }
        };

        var defaults = {
            title: "Modal Dialog",
            pageToLoad: null,
            show: null,
            hide: null,
            loadContained: false
        };
    };

    function handleEscape(e) { if (e.keyCode == 27) { $.fn.modalwin.close(); } }
})(jQuery);

function AddMinutes(t, v) { h = t.getHours(); m = t.getMinutes(); m = m + parseInt(v); while (m > 59) { h = h + 1; m = m - 60; } if (h > 12) h = h - 12; return new Date('1/1/1990 ' + h + ':' + m + ':00'); }
function FormatDate(t) { h = t.getHours(); m = t.getMinutes(); if (m.toString().length == 1) m = "0" + m; return h + ':' + m; }

(function($) {
    $.expr[':'].linkingToImage = function(elem, index, match) {
        return !!($(elem).attr(match[3]) && $(elem).attr(match[3]).match(/\.(gif|jpe?g|png|bmp)$/i));
    };

    $.fn.imgPreview = function(userDefinedSettings) {
        var s = $.extend({
            imgCSS: {},
            distanceFromCursor: { top: 10, left: 10 },
            preloadImages: true,
            onShow: function() { },
            onHide: function() { },
            onLoad: function() { },
            containerID: 'imgPreviewContainer',
            containerLoadingClass: 'loading',
            thumbPrefix: '',
            srcAttr: 'href'
        }, userDefinedSettings),

        $container = $('<div/>').attr('id', s.containerID)
                        .append('<img/>').hide()
                        .css('position', 'absolute')
                        .appendTo('body'),

        $img = $('img', $container).css(s.imgCSS),

        $collection = this.filter(':linkingToImage(' + s.srcAttr + ')');

        function addPrefix(src) {
            return src.replace(/(\/?)([^\/]+)$/, '$1' + s.thumbPrefix + '$2');
        }

        if (s.preloadImages) {
            (function(i) {
                var tempIMG = new Image(),
                    callee = arguments.callee;
                tempIMG.src = addPrefix($($collection[i]).attr(s.srcAttr));
                tempIMG.onload = function() {
                    $collection[i + 1] && callee(i + 1);
                };
            })(0);
        }

        $collection.mousemove(function(e) {
            $container.css({
                top: e.pageY + s.distanceFromCursor.top + 'px',
                left: e.pageX + s.distanceFromCursor.left + 'px'
            });
        }).hover(function() {
            var link = this;
            $container.addClass(s.containerLoadingClass)
                    .show();
            $img.load(function() {
                $container.removeClass(s.containerLoadingClass);
                $img.show();
                s.onLoad.call($img[0], link);
            })
                    .attr('src', addPrefix($(link).attr(s.srcAttr)));
            s.onShow.call($container[0], link);

        },
        function() {
            $container.hide();
            $img.unbind('load').attr('src', '').hide();
            s.onHide.call($container[0], this);

        });

        // Return full selection, not $collection!
        return this;
    };
})(jQuery);