/******************************************
This plugin slides the cart in and out after adding items
to the cart.
******************************************/

(function($){
	var $slider,settings = {};
	
	var defaults = {
		openspeed: 400,
		closespeed: 200,
		addtrigger: 'addFlag=',
		sliderid: '#cartslider',
		flashtime: 2000,
		sliderstyle:{
			width: '250px',
			fontFamily: 'Verdana; Arial',
			backgroundColor: '#bbddff',
			border: '1px solid #ffcc33',
			position: 'absolute',
			padding: '5px',
			zIndex: 500,
			cursor: 'pointer'		
		}
		
	};
	
	_flashslider = function(){
		_open( function(){ setTimeout( '$.fn.cartform.close()', settings.flashtime )} );
		
	}
	
	_open = function( onOpen ) {
		if( $.isFunction( onOpen ) ){	
			$slider.slideDown( settings.openspeed, onOpen );
		} else {	
			$slider.slideDown( settings.openspeed );
		}
	}
	
	_close = function (){
			$slider.slideUp( settings.closespeed );
	}
	
	$.fn.cartform = function(opts){
		// by using settings at the front of the chain it leaves defaults in tact
		$.extend( true, settings, defaults, opts || {} );
		
		// keeping a handle we can share with other functions
		$slider = this;
		
		// color it hide it and add the close click function to it
		$slider.css( settings.sliderstyle ).hide().click(_close);
			
		// this is the parameter that gets set on page load to indicate weather we had an add to cart event
		var triggerpattern = new RegExp( settings.addtrigger );
		var fromAdd = triggerpattern.test( window.location );
		
		if(fromAdd){
			_open(function(){ $("body").one('click', _close) });
		}
		
		// make it chainable
		return this;
	}// $.fn.cartform
	
	// public methods
	$.fn.cartform.open = function(){
		_open();
	}
	
	$.fn.cartform.close = function(){
		_close()
	}
	
	
})(jQuery);