;(function($) {
    /* Miscellaneous things that don't necessarily deserve their own
     * dedicated files.
     */
    
    /* Static function to generate a random ID with an optional prefix. */
    $.extend({ 
        GenerateRandomID: function(prefix){ 
            if (!prefix) prefix = "";
            else prefix = prefix + "-";
            var date = new Date();
            return prefix + (Math.floor((Math.random() * 999999)) + 1) + "-" + (date.getHours().toString() + date.getMinutes().toString() + date.getSeconds().toString() + date.getMilliseconds().toString());
        } 
    }); 

    $.fn.reverse = function() {
        return this.pushStack(this.get().reverse(), arguments);
    };
    /* Static function to fix IE6 PNG problems */
    $.extend({
    	PngFix: function(el) {
	        if (!(jQuery.browser.msie && jQuery.browser.version == 6)) return;
	        var raw = jQuery(el).get(0);
	        if (raw.tagName != "IMG") {
	            var src = jQuery(el).css("background-image");
	            jQuery(el).css("background-image", "none");
	            var src = src.split('"');
	            
	            if (src.length == 0) src = src.split("'");
	            if (src.length == 0) {
	                if (src.indexOf("url(") == -1) return;
	                src = src.replace("url(", "").replace(")");
	            } else {
	                src = src[1];
	            }
	            raw.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='crop')";
	        } else {
	            var src = raw.src;
	            if (!raw.style.width) { raw.style.width = jQuery(el).width(); }
	            if (!raw.style.height) { raw.style.height = jQuery(el).height(); }
	            raw.src = "/etc/designs/radfordcore/images/blank.gif";
	            raw.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
	        }
    	}
    });
    /* Hover fade plug-in: fades the element in and out on hover. */
    var hfMethods = {
        init : function( options ) {
            var config = {
                targetOpacity: 0.5,
                speed: "immediate"
            };
            if (options) $.extend(config, options);
        
            return this.each(function() {
                if ($.fn['metadata']) {
                    $.extend(config, $(this).metadata());
                }
                $(this).hover(
                    function() {
                        if (config.speed == "immediate") {
                            $(this).css("opacity", config.targetOpacity);
                        } else {
                            $(this).stop().fadeTo(config.speed, config.targetOpacity);
                        }
                    },
                    function() {
                        if (config.speed == "immediate") {
                            if ($.browser.msie) {
                                $(this).css("opacity", null);
                            } else {
                                $(this).css("opacity", 1);
                            }
                        } else {
                            $(this).stop().fadeTo(config.speed, 1);
                        }
                    }
                );
            });
        }
    };

    $.fn.hoverFade = function( method ) {
        var methods = hfMethods;
        
        if ( methods[method] ) {
            return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));

        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
            
        } else {
            $.error( 'Method ' +  method + ' does not exist on jQuery.hoverFade' );
            
        }
    };

    $(document).ready(function() {
    	var trim = $.trim;
    	
    	$(".h-f").hoverFade();
        
        var hl = $("#header .home-link");
        if ($("body").hasClass("home")) {
        	hl
        		.attr("href", null)
        		.css("cursor", "auto")
        		.click(function() { return false; });
        }
        hl.show();
        
        
        /* Search effects */
        
        var qs = $("#quick-search");
        qs
        	.find(":text")
        		.focus(function() {
        			if (trim($(this).val().toLowerCase()) == "search radford") $(this).val("");
        		})
        		.blur(function() {
        			if (trim($(this).val()) == "") $(this).val("Search Radford");
        		})
        		.end()
        	.find(":submit")
        		.hover(
        			function() {
        				var t = trim($(":text", qs).val()).toLowerCase();
        				if (t && t != "search radford") $(this).addClass("submit-hover");
        			},
        			function() {
        				$(this).removeClass("submit-hover");
        			}
        		)
        		.click(function() {
        			$(this).blur();
        			var t = trim($(":text", qs).val()).toLowerCase();
        			return t && t != "search radford";
        		});
        		
    });
})( jQuery );

