// #screenfill
// leaves no borders
// yset
$.fn.screenfill = function(options){

	var options = $.extend({
		animate : true
		}, options);

	$('html, body').css({overflow : 'hidden'});

	var w = $(window).width();
	var h = $(window).height();

	this.each(function(){

		var el = $(this);
		var ew = el.outerWidth();
		var eh = el.outerHeight();

		var ratio = ew / eh;

		var cssoptions = {
		};

		if(w > h){
			cssoptions.width = w;
			cssoptions.height = (w/ratio);
		} else {
			cssoptions.height = h;
			cssoptions.width = (h*ratio);
		}

		if(cssoptions.width < w){
			cssoptions.height = h;
			cssoptions.width = (h*ratio);
		}

		if(cssoptions.height < h) {
			cssoptions.height = h;
			cssoptions.width = (h*ratio);
		}

		// center

		cssoptions.left = ((w-cssoptions.width)/2)+'px';
		cssoptions.top = ((h-cssoptions.height)/2)+'px';

		cssoptions.height += 'px';
		cssoptions.width += 'px';

		if(options.animate == true){
		el.stop().animate(cssoptions, {queue : false, duration : 500});
		} else {
		el.stop().css(cssoptions);
		}

		el.fadeIn();

	});

};

// #centerscreen
// make sure to set element to position:absolute.

$.fn.centerscreen = function(options){
	var options = $.extend({
		width : false,
		height : false,
		horizontal : true,
		vertical : true,
		animate : true,
		speed : 500
	}, options);

	this.each(function(){
		var el = $(this);
		if(options.width == false) {options.width = el.outerWidth(true);}
		if(options.height == false) {options.height = el.outerHeight(true);}

		var w = $(window).width();
		var h = $(window).height();


		var cssoptions = {};
		
		if(options.width < w){
			if(options.horizontal){
				cssoptions.left = (w-options.width)/2+'px';
			}
		} else {
			cssoptions.left = 0;
		}
		
		if(options.height < h) {
			if(options.vertical){
				cssoptions.top = (h-options.height)/2+'px';
			}
		} else {
			cssoptions.top = 0;
		}
		
		if(options.animate){
			el.stop().animate(cssoptions, {queue : false, duration : options.speed});
		} else {
			el.stop().css(cssoptions);
		}

	});

};


// #rollover
// name images, imagename_0.jpg (or whatever filetype)
// imagename_1.jpg (for hover)..

$.fn.rollover = function(options){

	var options = $.extend({
		preloadID : '#rollover_preloader'
	}, options);

	this.each(function(){
		var el = $(this);
		if(typeof(el.attr('src')) == 'undefined'){
			// find the image
			el = el.find('img');
		}

		if(el.length > 0){
			// start rollover
			var thissrc = el.attr('src');
			// thissrc is image original src

			var thishover = thissrc;
			thishover = thishover.replace(/(.*)_[0-9](\.[a-z]+)$/, "$1_1$2");

			el.hover(function(){
				el.attr('src', thishover);
			}, function(){
				el.attr('src', thissrc);
			}); // close hover

			// PRELOAD
			if($(options.preloadID).length == 0){
				// create it
				$('body').prepend('<div id="'+options.preloadID.replace(/[#.]/g, '')+'" style="display:none"></div>');
			}

			$(options.preloadID).append('<img src="'+thishover+'" />');

		}	// close el.length
	}); // close each

};

// #slidepanel

$.fn.slidepanel = function(options) {

	var options = $.extend({
		slideID : '.slider',
		speed_in : 500,
		speed_out : 500,
		hideOptions :	{
						top : '100%'
						}
	},options);

	this.each(function(){

		var el = $(this);
		var slide = $(this).find(options.slideID);

		// store original positions etc
		var originalcss = {
			top : slide.css('top'),
			left : slide.css('left')
			};

		function hide() {
			slide.stop().animate(options.hideOptions, {queue : false, duration : options.speed_out});

		}

		function show() {		
			
			slide.stop().animate(originalcss, {queue : false, duration : options.speed_in});
			
		}

		hide();

 		el.hover(show, hide);

		slide.mouseover(sp);

		slide.children().mouseover(sp);
	});
};

////// Alpha PNG Background replacement...
///// note that options.color could supply a background image as well.

//// #alphabg

$.fn.alphabg = function(options) {

	var options = $.extend({
		opacity : 0.7,
		zIndex : '-1',
		color : '#000',
		fadeDuration : 0
	},options);

	this.each(function(){
		var el = $(this);
		if (el.css('position') == 'static') el.css('position', 'relative');
		
		var grabber = 'grabber_'+Math.floor(Math.random()*10010923);
		el.attr('grabber', grabber);

		var w = el.outerWidth()+'px';
		var h = el.outerHeight()+'px';

		var bghtml  = '<div class="bg" style="position:absolute; top:0; left:0; ';
			bghtml += 'width:'+w+'; height:'+h+'; z-index:'+options.zIndex+'; background:'+options.color+';"></div>';

		var g = '[grabber='+grabber+'] ';

		if($(g+'> .bg').length == 0){
			el.append(bghtml);
		}

		$(g+'> .bg').fadeTo(options.fadeDuration, options.opacity);

	});

};

	/////// FUNCTIONS

	// #sp
	// stops event bubbling
	function sp (event){
		event.stopPropagation();
	}