﻿/// <reference path="jquery-1.4.1.js" />
//center element
jQuery.fn.centerScreen = function(opts) {
    return jQuery(this).each(
    function() {
        if (opts == null || opts.frame == null)
            opts = { frame: jQuery(window) };

        jQuery(this).css("top", (opts.frame.height() / 2) - (jQuery(this).height() / 2)).css("left", (opts.frame.width() / 2) - (jQuery(this).width() / 2));
    });
};
//accordian
jQuery.fn.accordian = function() {
    return jQuery(this).each(function() {

        var hash = document.location.hash;
        hash = hash.replace("#", "");
        jQuery(".accBody", this).hide();

        var accItem = jQuery("a[name='" + hash + "']", this)
                .parent(".accItem")
                .first();

        if (accItem.length > 0) {
            jQuery(".accHead", accItem).hide();
            jQuery(".accBody", accItem).show();
        }

        var maxHeight = 0;
        var headerHeight = 0;
        jQuery(".accHead", this).each(function() {
            headerHeight += jQuery(this).height();
        });

        jQuery(".accBody", this).each(function() {
            var currentHeight = jQuery(this).height();
            if (currentHeight > maxHeight)
                maxHeight = currentHeight;
        });
        //jQuery(this).height(2 * (maxHeight + headerHeight));
        jQuery(".accHead", this).click(function() {
            var accGroup = jQuery(this).parents(".accGroup");

            jQuery(".accHead", accGroup)
                .slideDown();
            jQuery(this).hide();
            jQuery(".accBody", accGroup).slideUp();
            jQuery(this).next(".accBody").slideDown();

        });
    });

};

//image mouseovers
jQuery.fn.imageMouseOver = function(opts) {
    return jQuery(this).each(function() {
        var defaults = { ext: "_o", useSibling: false };
        var settings = jQuery.extend(defaults, opts);
        var src = jQuery(this).attr("src");
        var mo = src;
        if (settings.useSibling) {

            if (jQuery(this).next("img.ui-mosrc").length > 0) {
                mo = jQuery(this).next("img.ui-mosrc").first().attr("src");
            }
        }
        else {
            var imageTypes = [".gif", ".jpg", ".jpeg", ".png"];
            for (var i = 0; i < imageTypes.length; i++) {
                if (src.indexOf(imageTypes[i]) > 0) {
                    mo = src.replace(imageTypes[i], settings.ext + imageTypes[i]);
                }
            }
        }
        if (mo != src) {
            jQuery.preLoadImages(mo);
            jQuery(this).hover(function() { jQuery(this).attr("src", mo); }, function() { jQuery(this).attr("src", src); });
        }
    });
}
var imageCache = [];
jQuery.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--; ) {
        var cacheImage = document.createElement('img');
        cacheImage.src = arguments[i];
        imageCache.push(cacheImage);
    }
};




jQuery.fn.clickablePanel = function(args) {
    var defaultOpts = {
        hoverClass: "ui-clickpanel-o",
        linkClass: "ui-clickpanel-a",
        linkPrecedence: ["img", ""], //hyperlink containing these elements will be evaluated first to find a url for linking, empty value will search for any hyperlinks in the element
        linkable: true
    };
    var opts = jQuery.extend(defaultOpts, args);
    return jQuery(this).each(function() {
        var hoverClass = defaultOpts.hoverClass;        
        if (opts.linkable) {
            var url = "";
            for (var i = 0; i < opts.linkPrecedence.length; i++) {
                if (opts.linkPrecedence[i].length == 0)
                    url = jQuery("a[href!='']", this).first().attr("href");
                else
                    url = jQuery("a[href!='']:has('" + opts.linkPrecedence[i] + "')", this).first().attr("href");
                if (url != null && url.length > 0) break;
            }
            if (url != null && url.length > 0) {
                hoverClass = opts.linkClass;
                jQuery(this)
                .css("cursor", "pointer")
                .click(function(e) { document.location = url; });
            }
        }
        jQuery(this).hover(function() { jQuery(this).addClass(hoverClass); }, function() { jQuery(this).removeClass(hoverClass) });
    });
};


