/**
 * jQuery.ScrollShow - Scrolling Slideshow.
 * Copyright (c) 2007 Ariel Flesler - aflesler(at)gmail(dot)com
 * Licensed under GPL license (http://www.opensource.org/licenses/gpl-license.php).
 * Date: 10/30/2007
 * @author Ariel Flesler
 * @version 0.7
 *
 * @id jQuery.fn.scrollShow
 * @param {Object} settings Hash of settings (detailed below).
 * @return {jQuery} Returns the same jQuery object, for chaining.
 **/
(function( $ ){
	
	var defaults = {
		elements:'img',//elements selector (relative to view)
		itemSize:{
			height:200,
			width:200
		},
		view:null,//container of the elements, the one to fix the width.
		navigators:null,//selector to the elements to navigate the slideshow.
		navigationMode:'s',//sequential, random, localscroll
		speed:600,//speed of transition, 1 for no-animation
		wrappers:'simple',//simple,resize,crop,link
		circular:false,//should the slideshow rewind/advance on the extremes ?.
		easing:'linear',//easing equation
		axis:'x',//axis to displace the slideshow
		margin:true,//take margin in account?
		start:null, //force the scroll to start at some position element.
		setWidth:true//whether to calculate and set, the overall width of the slideshow.
	};
	
	function wrap( $els, type, size, name, title, desc, $img1){//wrap the photos with several different wrappers.
		//alert(name);
		var i=0;
		//alert(name.length+">>"+$els);
		/*
		if(type=='crop'){alert("hi");
		$.each(
			name,
			function(intIndex, objValue){//alert(intIndex+">>"+objValue+">>"+i+">>"+name[i]);
				if(i>=title.length-1)
				{
					i=0;
				}alert(">"+$els);
				//$.noConflict();
				$els.prepend('<span class="main_anchor00" style="position:absolute;bottom:0;"><span class="main_anchor02" >'+name[i]+'</span><br>'+title[i]+'<br><span style="font-size:9px;font-weight:normal;">'+desc[i]+'</span><br><a href="/article/71/3503.html"><img src="images/bulli03.gif" style="width:8px;height:8px;" vspace="4"></a></span>');
				
				
				i++;
				
			}
			
		);
		}//end if
		*/
			
		//$els.prepend('<span class="main_anchor00" style="position:absolute;bottom:0;"><span class="main_anchor02" >'+name[1]+'</span><br>'+title+'<br><span style="font-size:9px;font-weight:normal;">'+desc+'</span><br><a href="/article/71/3503.html"><img src="images/bulli03.gif" style="width:8px;height:8px;" vspace="4"></a></span>');
		
		switch( type ){
			case 'crop': 
			{
				//$els = $els.wrap('<div class="jq-ss-crop" >').parent().css('overflow','hidden');
				$els = $els.wrap('<div class="jq-ss-crop" >').parent().each(function(){
					$(this).css('overflow','hidden');
					//$('<span class="main_anchor02">'+name+'</span><br>'+title+'</a><br>'+desc+'<br>').prependTo($(this));
					});
				
				//$els.wrapInner('<div class="new">');
				//	alert(">>"+$(this));	
			}					
			case 'resize': return $els.css( size );
			case 'simple': return $els.wrap('<div class="jq-ss-simple">').parent();
			case 'link': 
				if( $els.is('img') )
					return $els.wrap('<a target="_blank" class="jq-ss-link">').parent().each(function(){
						//Commented for changing the anchor on image #pritam -3Feb,2010
						//this.href = this.firstChild.src;
						
						//Add the desc text #pritam - 4Feb,2010
						//$(this).append("some text");
						//alert(">>"+$els); 
						//alert($('#image > li > a > span').value);//append(name);
						//$(".main_anchor02").append = name;
						//$('#some').html('This is a test.');
						//alert($('this').text());
						
					});
			default: return $els;					
		}
	};
	
	$.fn.scrollShow = function( settings ){//alert(settings.elements+">>");
		settings = $.extend( {}, defaults, settings );
		
		return this.each(function(){
			var 
				widget	  = this,
				$view	  = settings.view ? $(settings.view, this) : this,
				$elements = $(settings.elements, $view),
				limit	  = $elements.length,
				active	  = 0;
			//New remedy #pritam - 8Feb,2010
			//alert('oooo'+$elements.length);
			for(var i=0; i<$elements.length;i++)
			{
				$('#li_'+i).prepend('<span class="main_anchor00" style="position:absolute;top:112px;bottom:1px;border:0px solid green;"><span class="main_anchor02" ><a href="'+settings.innerHtml_link[i]+'class="main_anchor02"">'+settings.innerHtml_name[i]+'</a></span><br><a href="'+settings.innerHtml_link[i]+' class="main_anchor00"">'+settings.innerHtml_title[i]+'</a><br><span style="font-size:8pt;font-weight:normal;color:#000;font-family:tahoma,vedana,arial,ms sans serif">'+settings.innerHtml_desc[i]+'</span><br><a href="'+settings.innerHtml_link[i]+'"><img src="/site/userimage/image/site_image/bulli03.gif" style="width:8px;height:8px;" vspace="4"></a></span>');
			//alert(i +'=' + ' ' + settings.innerHtml_name[i]);
			}
			/*	$.each(
					settings.innerHtml_name,
					function(intIndex, objValue){alert(intIndex+">>"+objValue);
					$(settings.elements).prepend('<span class="main_anchor00" style="position:absolute;bottom:0;"><span class="main_anchor02" >'+objValue+'</span><br><br><span style="font-size:9px;font-weight:normal;"></span><br><a href="/article/71/3503.html"><img src="images/bulli03.gif" style="width:8px;height:8px;" vspace="4"></a></span>');
					}
				);
			alert(">>"+$elements.parent());
			*/
			$.each( settings.wrappers.split(/\s*,\s*/), function( i, wrapper ){
				$elements = wrap( $elements, wrapper, settings.itemSize, settings.innerHtml_name, settings.innerHtml_title, settings.innerHtml_desc, $elements.parent() );													 
			});			
			$elements.css( settings.itemSize );//ensure the outer elements have fixed size.
			
			if( !settings.navigators ){//this shouldn't get to happen
				settings.navigators = '';
				settings.navigationMode = 'r';
			}
			
			if( settings.navigators.constructor != Array )
				settings.navigators = [settings.navigators];
			
			$.each( settings.navigationMode.split(''), function( i, type ){
				switch( type.charAt(0) ){
					case 's'://sequential navigation
						$(settings.navigators[i],widget)
							.eq(0).bind('click', { dir: -1 }, sequential ).end()
							.eq(1).bind('click', { dir: +1 }, sequential );
					break;
					case 'r'://random navigation
						var $nav = $(settings.navigators[i] || $elements, widget),
							ratio = $elements.length / $nav.length;
						if( ratio === Infinity ) return;//no navigator found
						$nav.each(function( pos ){
							$(this).bind( 'click', { pos: Math.floor(ratio*pos) }, random );												  
						});
					break;
				}
			});				

			(function( $e, w ){					  
				var imgw = ($e.width() + attrs('margin') + attrs('padding') + attr('border'));
				//alert(imgw);
				do w -= imgw;
				while( w > 0 && limit-- );//find the last element we can scroll To.
				
				if( !settings.setWidth ) return;
				
				do{
					$e = $e.parent();
					if( $e[0] == $view[0] )
						return;
				}while( $e.length > 1 );
				$e.width( imgw * $elements.length  );//if there's a container for the elements, calculate it's width.
	
			})( $elements, $view.width() );

			if( settings.start != null )
				random( settings.start );
			
			function attrs( name ){
				return attr(name+'Left') + attr(name+'Right');
			};
			function attr( name ){
				return parseInt($elements.css(name)) || 0;	
			};
			
			function sequential( event ){
				event.data.pos = active + event.data.dir;
				return random( event );
			};
			
			function random( event ){
				var pos = typeof event == 'number' ? event : event.data.pos;
				if( pos < 0 )
					pos = active == 0 && settings.circular ? limit : 0;
				else if( pos > limit )
					pos = active == limit && settings.circular ? 0 : limit;
	
				$view.stop().scrollTo( $elements[pos], settings );
				active = pos;
				return false;
			};				
		});
	};
		  
})( jQuery );