/* Slideshow
--------
Author: Sovit Tamrakar
URl: http://ssovit.com
Version: 1.0
---------
*/
(function (jQuery) {
	jQuery.fn.slideshow = function (input) {
		var defaults = {
			autoplay: true,
			loop: true,
			width: 500,
			music: false,
			map: false,
			height: 400,
			thumbwidth: 35,
			thumbheight: 30,
			timeout: 5000
		};
		return this.each(function () {
			//Crucial Inits
			var holder = jQuery(this);
			var holder_name = holder.attr('id');
			var options = jQuery.extend(defaults, input);
			//Object Setup
			var container = jQuery(options.container, holder);
			var w = options.width;
			var h = options.height;
			var map = options.map;
			//Animation Variables
			var tw = options.thumbwidth;
			var th = options.thumbheight;
			var autoplay = options.autoplay;
			var music = options.music;
			var loop = options.loop;
			var ani_timeout = options.timeout;
			//Working Variables
			var myInterval = 0;
			var Li = jQuery('>ul>li', holder);
			var cName = 'container-' + holder_name;
			holder.prepend('<div id="' + cName + '"></div>');
			var c = jQuery('#' + cName);
			c.append('<div class="ssovit-controls"></div>');
			c.append('<div class="ssovit-info-wrapper"></div>');
			c.append('<div class="ssovit-image-title"></div>');
			var cn = jQuery('.ssovit-controls', c);
			var iT = jQuery('.ssovit-image-title', c);
			var iB = jQuery('#info-' + holder_name);
			var iW = jQuery('.ssovit-info-wrapper', c);
			var bH = th + 10;
			var bM = 25;
			bH = th + 10 + bM;
			if (music) {}
			cn.wrap(jQuery('<div></div>').css({
				width: w,
				height: bH,
				position: 'absolute',
				bottom: 0,
				left: 0,
				overflow: 'hidden',
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMy8zMS8xMMky0QkAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAATklEQVRYhe3OQQ3AMAwAsWz82ZTgOOxxVSQbgZ+ZObPMezvwh3RFuiJdka5IV6Qr0hXpinRFuiJdka5IV6Qr0hXpinRFuiJdka5IV1amP/V6AQ1qQuZ6AAAAAElFTkSuQmCC)',
				zIndex: 30
			})).css({
				width: w,
				height: th + 10,
				position: 'relative',
				marginTop: bM,
				bottom: 0,
				left: 0,
				overflow: 'hidden',
				zIndex: 30
			});
			iT;
			cn.append('<div class="strip"></div>');
			cn.append('<a class="ssovit-nav-left" title="Previous Slide"></a>');
			cn.append('<a class="ssovit-nav-right" title="Next Slide"></a>');
			cn.append('<a class="ssovit-nav-play" title="Play/Pause"></a>');
			cn.parent().append('<div class="ssovit-info-links"></div>');
			var iLinks = jQuery('.ssovit-info-links', c);
			iLinks.css({
				position: 'absolute',
				top: 0,
				height: 25,
				left: 5,
				fontFamily: 'verdana',
				width:'auto'
		   });
			var strip = jQuery('.strip', c);
			var navLeft = jQuery('.ssovit-nav-left', c);
			var navRight = jQuery('.ssovit-nav-right', c);
			var playBtn = jQuery('.ssovit-nav-play', c);
			var stripwidth = Li.length * (tw + 4);
			c.css({
				width: w + 'px',
				height: h + 'px',
				background: '#000',
				position: 'relative',
				overflow: 'hidden'
			});
			strip.wrap(jQuery('<div></div>').css({
				width: w - (tw * 3),
				height: th + 4,
				position: 'absolute',
				bottom: 3,
				left: tw,
				overflow: 'hidden',
				zIndex: 30
			}));
			var counter=0;
			if(jQuery('.description', iB).html().length>0){
			iLinks.append(jQuery('<a class="ssovit-hover ssovit-popup" rel="'+counter+'">DESCRIPTION</a>').css({
				marginRight:10
			}));
			iW.append(jQuery('.description', iB).clone().css({
				position: 'absolute',
				width: w - 10,
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMy8zMS8xMMky0QkAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAATklEQVRYhe3OQQ3AMAwAsWz82ZTgOOxxVSQbgZ+ZObPMezvwh3RFuiJdka5IV6Qr0hXpinRFuiJdka5IV6Qr0hXpinRFuiJdka5IV1amP/V6AQ1qQuZ6AAAAAElFTkSuQmCC)',
				height: 'auto',
				left: 0,
				padding: 5,
				bottom: bH,
				zIndex: 33
			}).addClass('ssovit-info').hide()); 
			counter++;
			}
			if(jQuery('.contact', iB).html().length>0){
			iLinks.append(jQuery('<a class="ssovit-hover ssovit-popup" rel="'+counter+'">CONTACT</a>').css({
				marginRight:10
			}));
			iW.append(jQuery('.contact', iB).clone().css({
				position: 'absolute',
				width: w - 10,
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMy8zMS8xMMky0QkAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAATklEQVRYhe3OQQ3AMAwAsWz82ZTgOOxxVSQbgZ+ZObPMezvwh3RFuiJdka5IV6Qr0hXpinRFuiJdka5IV6Qr0hXpinRFuiJdka5IV1amP/V6AQ1qQuZ6AAAAAElFTkSuQmCC)',
				height: 'auto',
				left: 0,
				padding: 5,
				bottom: bH,
				zIndex: 33
			}).addClass('ssovit-info').hide());
			counter++;
			}
			if (map) {
				iLinks.append(jQuery('<a class="map ssovit-popup thickbox" title="Map" href="' + jQuery('.google_map', iB).attr('src') + '&TB_iframe=1" target="_new">MAP</a>').css({
				marginRight:10
				}));
			}
			if(jQuery('.website_url', iB).attr('href').length>0){
			iLinks.append(jQuery('<a class="website ssovit-popup" rel="Visit Website" href="' + jQuery('.website_url', iB).attr('href') + '" target="_new">WEBSITE</a>').css({
				marginRight:10
			}));
			}
			navLeft.css({
				position: 'absolute',
				left: 0,
				bottom: 5,
				width: tw,
				height: th,
				zIndex: 31,
				display: 'block',
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAADCAYAAABBCiV2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAnEAAAJxABlGlRGQAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNS8xNi8xME31j+oAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAAO0lEQVQImWP8//+/AQMDwwQGCOBhYGBQhrIvMsDA////Hf4TAIz///9XYGBgSIDqEWBgYDCAsg/ADAIA/rosWsGe9ecAAAAASUVORK5CYII=) center center no-repeat',
				outline: 'none',
				cursor: 'pointer'
			});
			navRight.css({
				position: 'absolute',
				right: tw,
				bottom: 5,
				width: tw,
				height: th,
				zIndex: 31,
				display: 'block',
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAnEAAAJxABlGlRGQAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNS8xNi8xME31j+oAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAAfUlEQVQokZWQUQ2EQAxE5wj/JwEk4AAknARwghSkrAQkgAMcPD6ul4Om2bAvaZrMdDaTlRzAxpcDaL1feUFSY/st6VFgD7RsYMsFXsAoabxondWJmGo77nOvXmijSjlWAR9gthmAxJ8l+tobFvwxe7+0UnmgDrTFdpK0evMEVxtICYUEOKgAAAAASUVORK5CYII=) center center no-repeat',
				outline: 'none',
				cursor: 'pointer'
			});
			playBtn.css({
				position: 'absolute',
				right: 0,
				bottom: 5,
				width: tw,
				height: th,
				zIndex: 31,
				display: 'block',
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAnEAAAJxABlGlRGQAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNS8xNi8xME31j+oAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAANElEQVQImX2OuREAIAzDdBx7slo2FQVVEkClfX5Qg4qHuInZMBMAs7QtldFGXvHvULvUzm8l5FAbk4vy8QAAAABJRU5ErkJggg==) center center no-repeat',
				outline: 'none',
				cursor: 'pointer'
			});
			var i = 0;
			jQuery('img', Li).each(function () {
				strip.append(jQuery('<img rel="' + i + '" src="' + jQuery(this).attr('src') + '" />').width(tw).height(th).css({
					border: '1px solid #000',
					margin: 1,
					cursor: 'pointer'
				}).attr('alt', jQuery(this).attr('alt')));
				i++;
			});
			strip.css({
				width: stripwidth
			});
			jQuery('>ul', holder).remove();
			iB.remove();
			var myinterval = 0;
			if (strip.width() > w - (tw * 3)) {
				strip.parent().mousemove(function (e) {
					var maxScroll = strip.width() - strip.parent().width();
					myinterval = clearInterval(myinterval);
					scrollvalue = (Number)(((Number)(e.pageX) - (Number)(jQuery(this).offset().left)) / (Number)(jQuery(this).width()) * 100);
					handleBioSliderChange(scrollvalue, maxScroll);
				});
			}
			strip.parent().mouseout(function (e) {
				myinterval = clearInterval(myinterval);
			});

			function handleBioSliderChange(value, maxScroll) {
				var left = Math.round(value);
				if (left > 50) {
					left += (left / 100 * 5);
				} else {
					left -= (left / 100 * 5);
				}
				if (left > 98) {
					left = 100;
				}
				if (left < 2) {
					left = 0;
				}
				scrollIt((Number)(left / 100 * maxScroll));
			}
			function scrollIt(value) {
				strip.css({
					marginLeft: - value + 'px'
				});
			}
			var cI = 0;
			jQuery('img', strip).live('click', function () {
				var i = jQuery(this).attr('rel');
				cI = i;
				anim(i);
				jQuery('img', strip).css({
					border: '1px solid #000'
				}).stop().css({
					opacity: .5
				});
				jQuery(this).css({
					border: '1px solid #DDD'
				}).stop().css({
					opacity: 1
				});
				myInterval = clearInterval(myInterval);
				startAnim();
			});
			jQuery('img', strip).hover(function () {
				jQuery('img', strip).css({
					border: '1px solid #000'
				}).stop().css({
					opacity: .5
				});
				jQuery(this).css({
					border: '1px solid #DDD'
				}).stop().css({
					opacity: 1
				});
				jQuery('img:eq(' + cI + ')', strip).css({
					border: '1px solid #DDD'
				}).stop().css({
					opacity: 1
				});
			}, function () {
				jQuery('img', strip).css({
					border: '1px solid #000'
				}).stop().css({
					opacity: .5
				});
				jQuery('img:eq(' + cI + ')', strip).css({
					border: '1px solid #DDD'
				}).stop().css({
					opacity: 1
				});
			});
			jQuery('img:first', strip).trigger('click');
			function anim(i) {
				jQuery('.img2', c).addClass('img-out').removeClass('img2');
				jQuery('.img1', c).addClass('img2').removeClass('img1');
				c.prepend('<img class="img1" />');
				var imgsrc = jQuery('img:eq(' + i + ')', strip).attr('src');
				jQuery('.img1', c).attr('src', imgsrc);
				jQuery('.img1', c).hide().css({
					position: 'absolute',
					left: 0,
					top: 0,
					zIndex: 29,
					margin: 0,
					padding: 0,
					border: 0
				});
				c.children('.image_label').remove();
				jQuery('.img1', c).fadeIn(ani_timeout * 0.2);
				jQuery('.img2', c).stop().fadeOut(ani_timeout * 0.2);
				jQuery('.img-out', c).remove();
				if(jQuery('img:eq(' + i + ')', strip).attr('alt').length>0){
				c.append(jQuery('<div>').addClass('image_label').css({
				width: w-10,
				height: 'auto',
				position: 'absolute',
				top: 0,
				left: 0,
				padding:5,
				fontSize:16,
				fontFace:'verdana',
				color:'#FFF',
				background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwMy8zMS8xMMky0QkAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAATklEQVRYhe3OQQ3AMAwAsWz82ZTgOOxxVSQbgZ+ZObPMezvwh3RFuiJdka5IV6Qr0hXpinRFuiJdka5IV6Qr0hXpinRFuiJdka5IV1amP/V6AQ1qQuZ6AAAAAElFTkSuQmCC)',
				zIndex: 35
			}).text(jQuery('img:eq(' + i + ')', strip).attr('alt')));
				}
			}
			navLeft.live('click', function () {
				cI--;
				if (cI < 0) {
					cI = Li.length - 1;
				}
				jQuery('img:eq(' + cI + ')', strip).trigger('click');
			});
			navRight.live('click', function () {
				cI++;
				if (cI > Li.length - 1) {
					cI = 0;
				}
				jQuery('img:eq(' + cI + ')', strip).trigger('click');
			});
			function startAnim() {
				if (autoplay) {
					myInterval = setInterval(function () {
						cI++;
						if (cI > Li.length - 1) {
							cI = 0;
							if (!loop) {
								autoplay = false;
								cI = Li.length - 1;
							}
						}
						jQuery('img:eq(' + cI + ')', strip).trigger('click');
					}, ani_timeout);
					playBtn.css({
						background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAALCAYAAACzkJeoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAnEAAAJxABlGlRGQAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNS8xNi8xME31j+oAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAAPUlEQVQYlWP8//+/AgMDQwIDA8MDRkbGBch8hv///zv8h4ADDAwMKHwmBjxgGEmyMDAwPGBgYGiE0gzIfAAS+iPhOCHWfwAAAABJRU5ErkJggg==) center center no-repeat'
					});
				} else {
					myInterval = clearInterval(myInterval);
					playBtn.css({
						background: 'url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAKCAYAAAB8OZQwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAnEAAAJxABlGlRGQAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNS8xNi8xME31j+oAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAAANElEQVQImX2OuREAIAzDdBx7slo2FQVVEkClfX5Qg4qHuInZMBMAs7QtldFGXvHvULvUzm8l5FAbk4vy8QAAAABJRU5ErkJggg==) center center no-repeat'
					});
				}
			}
			navLeft.css({
				opacity: .5
			});
			navRight.css({
				opacity: .5
			});
			playBtn.css({
				opacity: .5
			});
			navLeft.hover(function () {
				jQuery(this).css({
					opacity: 1
				});
			}, function () {
				jQuery(this).stop().css({
					opacity: .5
				});
			});
			navRight.hover(function () {
				jQuery(this).stop().css({
					opacity: 1
				});
			}, function () {
				jQuery(this).stop().css({
					opacity: .5
				});
			});
			playBtn.hover(function () {
				jQuery(this).stop().css({
					opacity: 1
				});
			}, function () {
				jQuery(this).stop().css({
					opacity: .5
				});
			});
			playBtn.click(function () {
				if (autoplay) {
					autoplay = false;
					startAnim();
				} else {
					autoplay = true;
					startAnim();
				}
			});
			var controlHideInterval = 0;
			c.mouseover(function () {
				controlHideInterval = clearInterval(controlHideInterval);
				cn.parent().show();
			});
			c.mouseout(function () {
				controlHideInterval = setInterval(function () {
					cn.parent().hide();
					iW.children('.ssovit-info').hide();
					controlHideInterval = clearInterval(controlHideInterval);
				}, 500);
			});
			jQuery('.ssovit-hover', c).hover(function () {
				jQuery('.ssovit-info', iW).hide();
				jQuery('.ssovit-info:eq(' + jQuery(this).attr('rel') + ')', iW).stop().show();
			}, function () {
				//jQuery('.ssovit-info:eq(' + jQuery(this).attr('rel') + ')', iW).stop().hide();
				//Do Nothing
			});
			cn.parent().hide();
		});
	};
})(jQuery);