(function($)
	{
		 $.fn.wG_fxScroll=function(settings)
		 {
		 settings=jQuery.extend({
						 			id					:		"scroll",
									scrollBoxWidth		:		500,
									scrollBoxHeight		:		300,
									overFlowStatus		:		"hidden"
						 },settings);
			  
			// Variable declareration
			
			var $scrollBox = $(this);
			
			var SCROLLBOX_CONTENT = $scrollBox.html();
			var SCROLLBOX_STRUC = "<div class='scrollPage"+settings.id+"'>"+SCROLLBOX_CONTENT+"</div>"
			var SCROLLBAR_STRUC = "<div class='scrollBar'><div class='scrollBar_upArrow'></div><div class='dragArea'><div class='scrollBar_btn'></div></div><div class='scrollBar_downArrow'></div></div>";
			var scrollBoxH = $scrollBox.height();
			var scrollBoxW = $scrollBox.width();
			var scrollBoxContentH = 0;
			var scrollBoxContentW = 0;
			var scrollBarH = 0;
			var scrollBarW = 0;
			var scrollBarBtnH = 0;
			var scrollBarUpArrowH = 0;
			var scrollBarDownArrowH = 0;
			var sclIntervalId = null;
			var scrollAmount = 0;
			var class_type='';
			
			
			function declareVars()
			{
				
			}
			
			function _getContent()
			{
			
			}
		  	
			function _makeStructure()
			{
				$scrollBox.html("");
				var HTML_CONTENT = SCROLLBOX_STRUC;
				
				$scrollBox.append(HTML_CONTENT);
				
				$scrollBox.find(".scrollPage"+settings.id).css({
												  		
														'position'	:	'absolute',
														'float'		:	'left',
														'top'		:	0+"px",
														'left'		:	0+"px"
												  });
				
				scrollBoxContentH = $scrollBox.find(".scrollPage"+settings.id).height();
				scrollBoxContentW = $scrollBox.find(".scrollPage"+settings.id).width();
				
			}
			
			function _setValues()
			{
			//alert(scrollBoxContentH+">"+scrollBoxH);
				if(scrollBoxContentH>scrollBoxH)
				{	
					$scrollBox.append(SCROLLBAR_STRUC);
					scrollBarH = $scrollBox.height();
					scrollBarW = $scrollBox.find(".scrollBar").width();
					
					scrollBarBtnH = $scrollBox.find(".scrollBar_btn").height();
					scrollBarUpArrowH = $scrollBox.find(".scrollBar_upArrow").height();
					scrollBarDownArrowH = $scrollBox.find(".scrollBar_downArrow").height();
					
					
					
				}
			}
			
			function _setContent()
			{
			
			}
			
			function _setCss()
			{
				
							
				$scrollBox.find(".scrollBar").css({
												  		'left'		:	(scrollBoxW-scrollBarW)+"px",
														'z-index'	:	99,
														'height'	:	$scrollBox.height()+"px"
												  });
				
				$scrollBox.find(".scrollBar_upArrow").css({
												  		'top'		:	0+"px"
												  });
				
				$scrollBox.find(".scrollBar_downArrow").css({
												  		'top'		:	(scrollBarH-scrollBarDownArrowH)+"px"
												  });
				
				$scrollBox.find(".scrollBar_btn").css({
												  		'top'		:	0+"px"
												  });
				$scrollBox.find(".dragArea").css({
												  		'height'	:	scrollBarH-(scrollBarDownArrowH+scrollBarUpArrowH)+"px",
														'top'		:	scrollBarDownArrowH+"px"
												  });
				
				scrollAmount = $scrollBox.find(".dragArea").height()-scrollBarBtnH;
				
				
			}
			function _setScrollBarCss()
			{
			};
			
			function _setControl()
			{
				$scrollBox.find(".scrollBar_btn").draggable({
															containment: 'parent',
															drag: _mouseEvent
															});
				
				$scrollBox.find(".scrollBar_upArrow").bind('mousedown', _mouseAction);
				$scrollBox.find(".scrollBar_upArrow").bind('mouseup', _mouseAction);
				
				$scrollBox.find(".scrollBar_downArrow").bind('mousedown', _mouseAction);
				$scrollBox.find(".scrollBar_downArrow").bind('mouseup', _mouseAction);
				
			}
			
			function _mouseEvent()
			{
				allowHeight = scrollBarH  - scrollBarBtnH;
				contentHeight = scrollBoxContentH;
				coeff = (contentHeight - allowHeight)/allowHeight;
				
				btx = parseInt($scrollBox.find(".scrollBar_btn").css('top'))
				
				$(".scrollPage"+settings.id).css('top',coeff*(-1)*btx)
				
			}
			
			function _mouseAction(e)
			{
				switch(e.type)
				{
					case 'mousedown':
					class_type=$(this).attr('class')
						_startTimer();
						
					break;
					
					case 'mouseup':
					
						_stopTimer();
					
					break;
				
				
				}
				
			}
			
			function _startTimer()
			{
				sclIntervalId = setInterval(_moveContent,20);
			}
			
			function _stopTimer()
			{
				clearInterval(sclIntervalId);
			}
			
			function _moveContent()
			{
				switch(class_type)
				{
					case 'scrollBar_downArrow':
					
							containerPos = parseInt($scrollBox.find(".scrollBar_btn").css('top'));
						
							if(containerPos<scrollAmount){
							
							$scrollBox.find(".scrollBar_btn").css({
											 	'top'		:	containerPos+5+"px"
											 	});
							_mouseEvent();
							}
							
					break;
					
					case 'scrollBar_upArrow':
					
							containerPos = parseInt($scrollBox.find(".scrollBar_btn").css('top'));
						
							if(containerPos>0)
							{
							$scrollBox.find(".scrollBar_btn").css({
											 	'top'		:	containerPos-5+"px"
											 });
							_mouseEvent();
							}
					break;
				}
			}
		  	
			function _setInitialCondition()
			{
			
			
			}
		
		_makeStructure();
		_setValues();
		_setCss();
		_setControl();
		
		}
	})(jQuery)

