(function($) {
	$.fn.sudoSlider = function(options) {
		var truev = true;
		var prevAlternateAnim = false;
		var falsev = !truev;
		var defaults = {
			prevNext : truev,
			prevHtml : '<a href="#" class="prevBtn"> previous </a>',
			nextHtml : '<a href="#" class="nextBtn"> next </a>',
			controlsShow : truev,
			controlsAttr : 'id="controls"',
			controlsFadeSpeed : '400',
			controlsFade : truev,
			insertAfter : truev,
			firstShow : falsev,
			firstHtml : '<a href="#" class="firstBtn"> first </a>',
			lastShow : falsev,
			lastHtml : '<a href="#" class="lastBtn"> last </a>',
			numericAttr : 'class="controls"',
			numericText : [ '1' ],
			vertical : falsev,
			speed : '800',
			ease : 'swing',
			auto : falsev,
			pause : '2000',
			continuous : falsev,
			clickableAni : falsev,
			numeric : falsev,
			updateBefore : falsev,
			history : falsev,
			speedhistory : '400',
			autoheight : truev,
			customLink : falsev,
			fade : falsev,
			crossFade : truev,
			fadespeed : '1000',
			ajax : falsev,
			loadingText : 'Loading Content...',
			preloadAjax : falsev,
			startSlide : falsev,
			ajaxLoadFunction : falsev,
			beforeAniFunc : falsev,
			afterAniFunc : falsev,
			uncurrentFunc : falsev,
			currentFunc : falsev,
			autowidth : truev,
			slideCount : 1,
			resumePause : false,
			transitionEffect : 'fade',
			boxCols : 8,
			boxRows : 4,
			slices : 15,
			loadFunction : falsev
		};
		var options = $.extend(defaults, options);
		var option = [ options.controlsShow,
		               options.controlsFadeSpeed,
				options.controlsFade,
				options.insertAfter,
				options.firstShow,
				options.lastShow,
				options.vertical,
				options.speed,
				options.ease,
				options.auto,
				options.pause,
				options.continuous,
				options.prevNext,
				options.numeric,
				options.numericAttr,
				options.numericText,
				options.clickableAni,
				options.history,
				options.speedhistory,
				options.autoheight,
				options.customLink,
				options.fade,
				options.crossFade,
				options.fadespeed,
				options.updateBefore,
				options.ajax,
				options.preloadAjax,
				options.startSlide,
				options.ajaxLoadFunction/*option[28*/,
				options.beforeAniFunc,
				options.afterAniFunc,
				options.uncurrentFunc,
				options.currentFunc,
				options.prevHtml,
				options.nextHtml,
				options.loadingText,
				options.firstHtml,
				options.controlsAttr,
				options.lastHtml,
				options.autowidth,
				options.slideCount,
				options.resumePause,
				options.transitionEffect ];
		var baseSlider = this;
		return this
				.each(function() {
					var init, ul, li, liConti, s, w, h, t, ot, nt, ts, clickable, buttonclicked, fading, ajaxloading, autoheightdocument, numericControls, numericContainer, destroyed, fontsmoothing, controls, html, firstbutton, lastbutton, nextbutton, prevbutton, timeout, destroyT, oldSpeed, dontCountinue, dontCountinueInit, obj = $(this);
					initSudoSlider(obj, falsev, falsev);
					function initSudoSlider(obj, destroyT, ajaxcallback) {
						destroyed = falsev;
						init = truev;
						if (option[9])
							option[11] = truev;
						ul = obj.children("ul");
						li = ul.children("li");
						liConti = li;
						s = li.length;
						w = li.eq(0).outerWidth(truev);
						h = li.eq(0).outerHeight(truev);
						if (option[25]) {
							if (ul.length == 0) {
								obj
										.append('<ul class="PM_AdsAndSlideshow"></ul>');
								ul = obj.children("ul");
							}
							if (option[25].length > s) {
								for ( var i = 1; i <= option[25].length - s; i++)
									ul
											.append('<li><p>' + option[35] + '</p></li>');
								li = ul.children("li");
								s = li.length;
								w = li.eq(0).width();
							}
						}
						t = 0;
						ot = t;
						nt = t;
						ts = s - 1;
						clickable = truev;
						buttonclicked = falsev;
						fading = falsev;
						ajaxloading = falsev;
						autoheightdocument = 0;
						numericControls = new Array();
						numericContainer = falsev;
						destroyed = falsev;
						fontsmoothing = screen.fontSmoothingEnabled;
						obj.css("overflow", "hidden");
						if (obj.css("position") == "static")
							obj.css("position", "relative");
						li.css('float', 'left');
						if (ajaxcallback || ajaxcallback === 0) {
							if (dontCountinueInit)
								dontCountinueInit--;
							if (!dontCountinueInit)
								option[25] = false;
						} else if (option[25] && option[11] && option[40] != 1) {
							dontCountinueInit = 0;
							for ( var a = 0; a < s; a++) {
								if (option[25][a]) {
									ajaxLoad(a, a, falsev, 0, function() {
										initSudoSlider(obj, destroyT, a);
									});
									option[25][a] = falsev;
									dontCountinueInit++;
								}
							}
						}
						if (!dontCountinueInit) {
							for ( var i = 0; i < s; i++) {
								if (option[15][i] == undefined)
									option[15][i] = (i + 1);
								if (option[25] && option[25][i] == undefined)
									option[25][i] = falsev;
							}
							if (option[11]) {
								a = 0;
								if (option[6]) {
									for (i = option[40]; i >= 1; i--) {
										var tmpchild = li.eq(
												-option[40] + i - 1).clone();
										a = a + tmpchild.outerWidth(truev);
										tmpchild.css("margin-top", "-" + a
												+ "px")
										ul.prepend(tmpchild);
										ul.append(li.eq(option[40] - i).clone()
												.css( {
													'z-index' : '0'
												}));
									}
								}
								if (!option[6]) {
									for (i = option[40]; i >= 1; i--) {
										var tmpchild = li.eq(
												-option[40] + i - 1).clone();
										a = a + tmpchild.outerWidth(truev);
										tmpchild.css("margin-left", "-" + a
												+ "px")
										ul.prepend(tmpchild);
										ul.append(li.eq(option[40] - i).clone()
												.css( {
													'z-index' : '0'
												}));
									}
								}
								if (option[25]) {
									if (option[25][0])
										ajaxLoad('last', 0, falsev, 0, falsev);
									if (option[25][s - 1]) {
										ajaxLoad('first', (s - 1), falsev, 0,
												falsev);
										ajaxLoad(ts, ts, falsev, 0, falsev);
										option[25][s - 1] = falsev;
									}
								}
							}
							heightWidthAdjust();
							liConti = ul.children("li");
							controls = falsev;
							if (option[0]) {
								controls = $('<div ' + option[37] + '></div>');
								if (option[3])
									$(obj).after(controls);
								else
									$(obj).before(controls);
								if (option[13]) {
									numericContainer = controls.prepend(
											'<ol ' + option[14] + '></ol>')
											.children();
									numericContainer
											.wrap('<div class="adss_navigation" />');
									var substract = option[11] ? 1 : option[40];
									for ( var i = 0; i < s - substract + 1; i++) {
										numericControls[i] = $(
												document.createElement("li"))
												.attr( {
													'rel' : (i + 1)
												})
												.html(
														'<a href="#"><span>' + option[15][i] + '</span></a>')
												.appendTo(numericContainer)
												.click(
														function() {
															goToSlide(
																	$(this)
																			.attr(
																					'rel') - 1,
																	truev);
															return falsev;
														});
									}
									;
								}
								if (option[4])
									firstbutton = makecontrol(option[36],
											"first");
								if (option[5])
									lastbutton = makecontrol(option[38], "last");
								if (option[12]) {
									nextbutton = makecontrol(option[34], "next");
									prevbutton = makecontrol(option[33], "prev");
								}
							};
							//Preload callback when !ajax
							if (!option[25]) {
								li.each(function(i) {
									if ($.isFunction(options.loadFunction)) {
										options.loadFunction.call($(this), i+1,
												truev);
									}
								});
							}
							if (option[26]) {
								preloadEverything();
							}
							option[1] = textSpeedToNumber(option[1]);
							option[7] = textSpeedToNumber(option[7]);
							option[10] = textSpeedToNumber(option[10]);
							option[18] = textSpeedToNumber(option[18]);
							option[23] = textSpeedToNumber(option[23]);
							if (option[9])
								timeout = startAuto(option[10]);
							if (option[20]) {
								$(option[20])
										.live(
												'click',
												function() {
													a = $(this).attr('rel');
													if (a) {
														if (a == 'stop')
															clearTimeout(timeout)
														else if (a == 'start') {
															timeout = startAuto(option[10]);
															option[9] = truev;
														} else if (a == 'block')
															clickable = falsev;
														else if (a == 'unblock')
															clickable = truev;
														else if (clickable)
															goToSlide(
																	(a == parseInt(a)) ? a - 1
																			: a,
																	truev);
													}
													return falsev;
												});
							}
							if (destroyT)
								animate(destroyT, falsev, falsev, falsev);
							else if (option[17]) {
								$.address
										.init(
												function(e) {
													if (!destroyT)
														animate(
																filterUrlHash(e.value),
																falsev, falsev,
																falsev);
												}).change(function(e) {
											var i = filterUrlHash(e.value);
											if (i != t)
												goToSlide(i, falsev);
										});
							} else if (option[27])
								animate(option[27] - 1, falsev, falsev, falsev);
							else
								animate(0, falsev, falsev, falsev);
						}
					}
					function preloadEverything() {
						for ( var i = 0; i <= ts; i++) {
							if (option[25][i]) {
								ajaxLoad(i, i, falsev, 0, falsev);
								option[25][i] = falsev;
							}
						}
					}
					function heightWidthAdjust() {
						a = 0;
						if (option[6]) {
							for ( var i = -1; i <= s; i++)
								a = a + li.eq(i).outerHeight(truev);
							ul.height(a * 4);
						} else {
							for ( var i = -1; i <= s; i++)
								a = a + li.eq(i).outerWidth(truev);
							ul.width(a * 4);
						}
					}
					function startAuto(pause) {
						return setTimeout(function() {
							goToSlide("next", falsev);
						}, pause);
					}
					function textSpeedToNumber(speed) {
						if (parseInt(speed))
							var returnspeed = parseInt(speed);
						else {
							var returnspeed = 400;
							switch (speed) {
							case 'fast':
								returnspeed = 200;
							case 'normal':
								returnspeed = 400;
							case 'medium':
								returnspeed = 400;
							case 'slow':
								returnspeed = 600;
							}
						}
						return returnspeed;
					}
					;
					function makecontrol(html, action) {
						return $(html).prependTo(
								$(obj).parent('div').parent('div')).click(
								function() {
									goToSlide(action, truev);
									return falsev;
								});
					}
					function goToSlide(i, clicked) {
						if (!destroyed) {
							if (option[9]) {
								var delay = option[7];
								if (fading && option[22])
									delay = parseInt((delay) * (3 / 5));
								else if (fading)
									delay = 0;
								if (clicked) {
									clearTimeout(timeout);
									if (option[41])
										timeout = startAuto(delay + option[41]);
								} else
									timeout = startAuto(option[10] + delay);
							}
							if (option[21]) {
								fadeto(i, clicked);
							}
						}
					}
					;
					function runOnImagesLoaded(e, _cb) {
						e
								.each(function() {
									var $imgs = (this.tagName.toLowerCase() === 'img') ? $(this)
											: $('img', this), _cont = this, i = 0, _done = function() {
										if (typeof _cb === 'function')
											_cb(_cont);
									};
									if ($imgs.length) {
										$imgs
												.each(function() {
													var _img = this, _checki = function(
															e) {
														if ((_img.complete)
																|| (_img.readyState == 'complete' && e.type == 'readystatechange')) {
															if (++i === $imgs.length)
																_done();
														} else if (_img.readyState === undefined) {
															$(_img)
																	.attr(
																			'src',
																			$(
																					_img)
																					.attr(
																							'src'));
														}
													};
													$(_img)
															.bind(
																	'load readystatechange',
																	function(e) {
																		_checki(e);
																	});
													_checki( {
														type : 'readystatechange'
													});
												});
									} else
										_done();
								});
					}
					;
					function imageCheck(file) {
						var image = falsev;
						var len = file.length;
						var ext = file.substr(len - 4, 4);
						if (ext == '.jpg' || ext == '.png' || ext == '.bmp'
								|| ext == '.gif')
							image = truev;
						var ext = file.substr(len - 5, 5);
						if (ext == '.jpeg')
							image = truev;
						return image;
					}
					function fadeControl(fadeOpacity, fadetime, nextcontrol) {
						if (!option[11]) {
							if (nextcontrol) {
								var eA = nextbutton, eB = lastbutton, directionA = 'next', directionB = 'last', firstlastshow = option[5];
							} else {
								var eA = prevbutton, eB = firstbutton, directionA = 'prev', directionB = 'first', firstlastshow = option[4];
							}
							if (option[12]) {
								if (fadeOpacity == 0)
									eA.fadeOut(fadetime);
								else
									eA.fadeIn(fadetime);
							}
							if (firstlastshow) {
								if (fadeOpacity == 0)
									eB.fadeOut(fadetime);
								else
									eB.fadeIn(fadetime);
							}
							if (option[20]) {
								$(option[20])
										.filter(
												function(index) {
													return ($(this).attr("rel") == directionA || $(
															this).attr("rel") == directionB);
												}).fadeTo(fadetime,
												fadeOpacity, function() {
													if (fadeOpacity == 0)
														$(this).hide();
												});
							}
						}
					}
					;
					function fadeControls(a, fadetime) {
						if (a == 0)
							fadeControl(0, fadetime, falsev);
						else
							fadeControl(1, fadetime, falsev);
						if (a >= s - parseInt(option[40], 10))
							fadeControl(0, fadetime, truev);
						if (a < s - parseInt(option[40], 10))
							fadeControl(1, fadetime, truev);
					}
					;
					function setCurrent(i) {
						i = parseInt((i > ts) ? i = 0 : ((i < 0) ? i = ts + i
								+ 1 : i)) + 1;
						for ( var a = 0; a < numericControls.length; a++)
							setCurrentElement(numericControls[a], i);
						if (option[20])
							setCurrentElement(option[20], i);
					}
					;
					function setCurrentElement(element, i) {
						$(element).filter(".current").removeClass("current")
								.each(
										function() {
											if ($.isFunction(option[31])) {
												option[31].call(this, $(this)
														.attr("rel"));
											}
										});
						$(element).filter(function() {
							return $(this).attr("rel") == i;
						}).addClass("current").each(function(index) {
							if ($.isFunction(option[32])) {
								option[32].call(this, i);
							}
						});
					}
					;
					function filterUrlHash(t) {
						var te = 0;
						for ( var i = 0; i <= s; i = i + 1)
							if (option[15][i] == t)
								te = i;
						return te;
					}
					;
					function autoadjust(i, speed) {
						if (option[19])
							autoheight(i, speed);
						if (option[39])
							autowidth(i, speed);
					}
					function autoheight(i, speed) {
						obj.ready(function() {
							if (i == s)
								i = 0;
							var nheight = li.eq(i).height();
							if (nheight != 0)
								setHeight(nheight, speed);
							runOnImagesLoaded(li.eq(i), function(imgtarget) {
								obj.ready(function() {
									nheight = $(imgtarget).height();
									if (nheight != 0)
										setHeight(nheight, speed);
								});
							});
						});
					}
					;
					function autowidth(i, speed) {
						obj.ready(function() {
							if (i == s)
								i = 0;
							var nwidth = li.eq(i).width();
							if (nwidth != 0)
								setWidth(nwidth, speed);
							runOnImagesLoaded(li.eq(i), function(imgtarget) {
								obj.ready(function() {
									nwidth = $(imgtarget).width();
									if (nwidth != 0)
										setWidth(nwidth, speed);
								});
							});
						});
					}
					;
					function setWidth(nwidth, speed) {
						obj.animate( {
							width : nwidth
						}, {
							queue : falsev,
							duration : speed,
							easing : option[8]
						});
					}
					;
					function setHeight(nheight, speed) {
						obj.animate( {
							height : nheight
						}, {
							queue : falsev,
							duration : speed,
							easing : option[8]
						});
					}
					;
					function adjustPosition() {
						if (option[6])
							ul.css("margin-top", getSlidePos(t, falsev));
						else
							ul.css("margin-left", getSlidePos(t, truev));
					}
					;
					function getSlidePos(slide, width) {
						var p = 0;
						var substract = 1;
						if (option[11])
							substract = 1 - option[40];
						var add = 0;
						if (option[11])
							add = option[40];
						for ( var i = 0; i <= slide - substract; i++) {
							if (width)
								p = p - liConti.eq(i + add).outerWidth(truev);
							else
								p = p - liConti.eq(i + add).outerHeight(truev);
						}
						return p;
					}
					;
					function adjust() {
						if (option[11]) {
							if (t > ts)
								t = 0;
							if (t < 1 - option[40])
								t = s - option[40];
						} else {
							if (t > ts)
								t = 0;
							if (t < 0)
								t = ts;
						}
						if (t == ts && !option[21])
							preloadEverything();
						if (!option[24])
							setCurrent(t);
						adjustPosition();
						clickable = truev;
						if (option[17] && buttonclicked)
							window.location.hash = option[15][t];
						if (!fading) {
							a = t + 1;
							if (a < 1)
								a = a + s;
							if (a > s)
								a = a - s;
							afterAniCall(li.eq(t), a)
							if (option[11] && !option[21]) {
								if (t < option[40]) {
									afterAniCall(liConti.eq((t < 0) ? t
											+ option[40] : t - option[40]), a);
								}
								if (t > ts - option[40]) {
									afterAniCall(liConti.eq(option[40] + t - ts
											- 1), a);
								}
							}
						}
					}
					;
					function afterAniCall(el, a) {
						if ($.isFunction(option[30]))
							option[30].call(el, a);
					}
					;
					function beforeAniCall(el, a) {
						if ($.isFunction(option[29]))
							option[29].call(el, a);
					}
					;
					function filterDir(dir, ot) {
						var nt = t;
						switch (dir) {
						case "next":
							nt = (ot >= ts) ? (option[11] ? nt + 1 : ts)
									: nt + 1;
							break;
						case "prev":
							nt = (nt <= 0) ? (option[11] ? nt - 1 : 0) : nt - 1;
							break;
						case "first":
							nt = 0;
							break;
						case "last":
							nt = ts;
							break;
						default:
							nt = parseInt(dir);
							break;
						}
						;
						return nt;
					}
					;
					function ajaxLoad(i, l, adjust, speed, ajaxCallBack) {
						var targetslide = falsev;
						if (parseInt(i) || i == 0)
							targetslide = li.eq(i);
						else {
							if (i == 'last')
								targetslide = $('li:last', obj);
							else
								targetslide = $('li:first', obj);
							var conti = truev;
						}
						var ajaxspeed = (fading) ? (!option[22] ? parseInt(option[23]
								* (2 / 5))
								: option[23])
								: speed;
						var tt = l + 1;
						if (imageCheck(option[25][l])) {
							targetslide.html(' ').append(
									$(new Image()).attr('src', option[25][l]));
							runOnImagesLoaded(
									targetslide,
									function(img) {
										var target = $(img).children();
										finishImageLoading(target);
										function finishImageLoading(target) {
											var width = target.width(), height = target
													.height(), slidewidth = target
													.parent().width();
											if (width == 0)
												setTimeout(function() {
													finishImageLoading(target);
												}, 1);
											else {
												target.attr( {
													'oldheight' : height,
													'oldwidth' : width
												});
												if (width > slidewidth)
													target
															.animate(
																	{
																		width : slidewidth,
																		height : (height / width)
																				* slidewidth
																	}, 0)
															.parent()
															.animate(
																	{
																		height : (height / width)
																				* slidewidth
																	}, 0).css(
																	'height',
																	'auto');
												if ($.isFunction(option[28])) {
													option[28].call($(img), tt,
															truev);
												}
												ajaxAdjust(target.parent(),
														conti, ajaxCallBack);
												if (adjust)
													autoadjust(i, ajaxspeed);
											}
										}
									});
						} else {
							targetslide.load(option[25][l], function(response,
									status, xhr) {
								ajaxAdjust($(this), conti, ajaxCallBack);
								if (adjust)
									adjustPosition();
								if (status == "error" || !$(this).html())
									$(this).html(
											"Sorry but there was an error: "
													+ (xhr.status ? xhr.status
															: 'no content')
													+ " " + xhr.statusText);
								if (status != "error"
										&& $.isFunction(option[28])) {
									option[28].call($(this), tt, falsev);
								}
								if (adjust)
									autoadjust(l, ajaxspeed);
							});
						}
					}
					;
					function ajaxAdjust(target, conti, ajaxCallBack) {
						if ($.isFunction(ajaxCallBack))
							ajaxCallBack();
						if (conti) {
							adjustPosition();
						}
						heightWidthAdjust();
					}
					;
					function createSlices(obj, options, imageUrl) {
						for ( var i = 0; i < options.slices; i++) {
							var sliceWidth = Math.round(obj.width()
									/ options.slices);
							if (i == options.slices - 1) {
								obj
										.append($(
												'<div class="nivo-slice"></div>')
												.css(
														{
															left : (sliceWidth * i) + 'px',
															width : (obj
																	.width() - (sliceWidth * i)) + 'px',
															height : '0px',
															opacity : '0',
															background : 'url("'
																	+ imageUrl
																	+ '") no-repeat -'
																	+ ((sliceWidth + (i * sliceWidth)) - sliceWidth)
																	+ 'px 0%'
														}));
							} else {
								obj
										.append($(
												'<div class="nivo-slice"></div>')
												.css(
														{
															left : (sliceWidth * i) + 'px',
															width : sliceWidth + 'px',
															height : '0px',
															opacity : '0',
															background : 'url("'
																	+ imageUrl
																	+ '") no-repeat -'
																	+ ((sliceWidth + (i * sliceWidth)) - sliceWidth)
																	+ 'px 0%'
														}));
							}
						}
					}
					function createBoxes(obj, options, imageUrl) {
						var boxWidth = Math
								.round(obj.width() / options.boxCols);
						var boxHeight = Math.round(obj.height()
								/ options.boxRows);
						for ( var rows = 0; rows < options.boxRows; rows++) {
							for ( var cols = 0; cols < options.boxCols; cols++) {
								if (cols == options.boxCols - 1) {
									obj
											.append($(
													'<div class="nivo-box"></div>')
													.css(
															{
																opacity : 0,
																left : (boxWidth * cols) + 'px',
																top : (boxHeight * rows) + 'px',
																width : (obj
																		.width() - (boxWidth * cols)) + 'px',
																height : boxHeight + 'px',
																background : 'url("'
																		+ imageUrl
																		+ '") no-repeat -'
																		+ ((boxWidth + (cols * boxWidth)) - boxWidth)
																		+ 'px -'
																		+ ((boxHeight + (rows * boxHeight)) - boxHeight)
																		+ 'px'
															}));
								} else {
									obj
											.append($(
													'<div class="nivo-box"></div>')
													.css(
															{
																opacity : 0,
																left : (boxWidth * cols) + 'px',
																top : (boxHeight * rows) + 'px',
																width : boxWidth + 'px',
																height : boxHeight + 'px',
																background : 'url("'
																		+ imageUrl
																		+ '") no-repeat -'
																		+ ((boxWidth + (cols * boxWidth)) - boxWidth)
																		+ 'px -'
																		+ ((boxHeight + (rows * boxHeight)) - boxHeight)
																		+ 'px'
															}));
								}
							}
						}
					}
					function fadeto(i, clicked) {
						var offsetImg = false;
						if (i != t && !destroyed && clickable) {
							var ll = filterDir(i, ot);
							if (ll > ts)
								ll = 0;
							if (ll < 0)
								ll = ts;
							var target = li.eq(ll);
							beforeAniCall(target, ll + 1)
							var randAnim = false;
							var curAnim = option[42];

							var curAlternateAnim = 'horizontalSlide';
							if (curAnim == 'Random') {
								var anims = new Array('sliceDownRight',
										'sliceDownLeft', 'sliceUpRight',
										'sliceUpLeft', 'sliceUpDown',
										'sliceUpDownLeft', 'fold', 'fade',
										'boxRandom', 'boxRain',
										'horizontalSlide', 'verticalSlide',
										'fade', 'boxRainReverse',
										'boxRainGrow', 'boxRainGrowReverse');
								curAnim = anims[Math.floor(Math.random()
										* (anims.length))];
								if (curAnim == undefined)
									curAnim = 'fade';
							}
							if(prevAlternateAnim) {
								curAnim = curAlternateAnim;
								/*offsetImg = $(target).find('img').position();
								alert('test'+offsetImg.left);*/
							}
							if (typeof ($(target).find('img.adsSlideImg').attr('src')) == 'undefined' && (curAnim != 'fade' && curAnim != 'verticalSlide' && curAnim != 'horizontalSlide')) {
								curAnim = curAlternateAnim;
							}

							if (typeof ($(target).find('img.adsSlideImg').attr('src')) == 'undefined') {
								prevAlternateAnim = true;
							}else {
								prevAlternateAnim = false;
							}
							if (curAnim != 'horizontalSlide'
									&& curAnim != 'verticalSlide') {
								ajaxloading = falsev;
								if (option[24])
									setCurrent(filterDir(i, ot));
								clickable = !clicked;
								var speed = (!clicked && !option[9] && option[17]) ? option[23]
										* (option[18] / option[7])
										: option[23];
								if (option[2])
									fadeControls(ll, option[1]);
							}
							if (option[25] && option[25][ll]) {
								ajaxLoad(ll, ll, falsev, speed, function() {
									option[25][ll] = falsev;
									clickable = truev;
									adjustPosition();
									fadeto(ll, truev);
								});
							} else {
								if (curAnim != 'horizontalSlide'
										&& curAnim != 'verticalSlide')
									autoadjust(ll, option[23]);
								if (option[22]) {
									if (curAnim == 'horizontalSlide'
											|| curAnim == 'verticalSlide'
											|| randAnim == 'horizontalSlide'
											|| randAnim == 'verticalSlide') {
										if (option[11]) {
											a = t;
											if (a < 0)
												a = a + s;
											if (a > ts)
												a = a - s;
											if (i == a + 1)
												i = 'next';
											if (i == a - 1)
												i = 'prev';
											if (a == 0 && i == ts)
												i = 'prev';
											if (a == ts && i == 0)
												i = 'next';
										}
										animate(i, clicked, truev, falsev);
									} else if (curAnim == 'sliceDown'
											|| curAnim == 'sliceDownRight'
											|| randAnim == 'sliceDownRight'
											|| curAnim == 'sliceDownLeft'
											|| randAnim == 'sliceDownLeft') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var timeBuff = 0;
										var i = 0;
										var slices = $('.nivo-slice', obj);
										if (curAnim == 'sliceDownLeft'
												|| randAnim == 'sliceDownLeft')
											slices = $('.nivo-slice', obj)
													._reverse();
										slices
												.each(function() {
													var slice = $(this);
													slice.css( {
														'top' : '0px'
													});
													if (i == options.slices - 1) {
														setTimeout(
																function() {
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed,
																					'',
																					function() {
																						clickable = truev;
																						fading = truev;
																						animate(
																								ll,
																								falsev,
																								falsev,
																								falsev);
																						if (option[17]
																								&& clicked)
																							window.location.hash = option[15][t];
																						fading = falsev;
																						clickable = truev;
																						$(
																								'.nivo-slice',
																								obj)
																								.remove();
																						afterAniCall(
																								target,
																								ll + 1);
																					});
																},
																(100 + timeBuff));
													} else {
														setTimeout(
																function() {
																	clickable = falsev;
																	fading = truev;
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed);
																},
																(100 + timeBuff));
													}
													timeBuff += 50;
													i++;
												});
									} else if (curAnim == 'sliceUp'
											|| curAnim == 'sliceUpRight'
											|| randAnim == 'sliceUpRight'
											|| curAnim == 'sliceUpLeft'
											|| randAnim == 'sliceUpLeft') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var timeBuff = 0;
										var i = 0;
										var slices = $('.nivo-slice', obj);
										if (curAnim == 'sliceUpLeft'
												|| randAnim == 'sliceUpLeft')
											slices = $('.nivo-slice', obj)
													._reverse();
										slices
												.each(function() {
													var slice = $(this);
													slice.css( {
														'bottom' : '0px'
													});
													if (i == options.slices - 1) {
														setTimeout(
																function() {
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed,
																					'',
																					function() {
																						clickable = truev;
																						fading = truev;
																						animate(
																								ll,
																								falsev,
																								falsev,
																								falsev);
																						if (option[17]
																								&& clicked)
																							window.location.hash = option[15][t];
																						fading = falsev;
																						clickable = truev;
																						$(
																								'.nivo-slice',
																								obj)
																								.remove();
																						afterAniCall(
																								target,
																								ll + 1);
																					});
																},
																(100 + timeBuff));
													} else {
														setTimeout(
																function() {
																	clickable = falsev;
																	fading = truev;
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed);
																},
																(100 + timeBuff));
													}
													timeBuff += 50;
													i++;
												});
									} else if (curAnim == 'sliceUpDown'
											|| curAnim == 'sliceUpDownRight'
											|| randAnim == 'sliceUpDown'
											|| curAnim == 'sliceUpDownLeft'
											|| randAnim == 'sliceUpDownLeft') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var timeBuff = 0;
										var i = 0;
										var v = 0;
										var slices = $('.nivo-slice', obj);
										if (curAnim == 'sliceUpDownLeft'
												|| randAnim == 'sliceUpDownLeft')
											slices = $('.nivo-slice', obj)
													._reverse();
										slices
												.each(function() {
													var slice = $(this);
													if (i == 0) {
														slice.css('top', '0px');
														i++;
													} else {
														slice.css('bottom',
																'0px');
														i = 0;
													}
													if (v == options.slices - 1) {
														setTimeout(
																function() {
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed,
																					'',
																					function() {
																						clickable = truev;
																						fading = truev;
																						animate(
																								ll,
																								falsev,
																								falsev,
																								falsev);
																						if (option[17]
																								&& clicked)
																							window.location.hash = option[15][t];
																						fading = falsev;
																						clickable = truev;
																						$(
																								'.nivo-slice',
																								obj)
																								.remove();
																						afterAniCall(
																								target,
																								ll + 1);
																					});
																},
																(100 + timeBuff));
													} else {
														setTimeout(
																function() {
																	clickable = falsev;
																	fading = truev;
																	slice
																			.animate(
																					{
																						height : '100%',
																						opacity : '1.0'
																					},
																					options.speed);
																},
																(100 + timeBuff));
													}
													timeBuff += 50;
													v++;
												});
									} else if (curAnim == 'fold'
											|| randAnim == 'fold') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var timeBuff = 0;
										var i = 0;
										$('.nivo-slice', obj)
												.each(
														function() {
															var slice = $(this);
															var origWidth = slice
																	.width();
															slice
																	.css( {
																		top : '0px',
																		height : '100%',
																		width : '0px'
																	});
															if (i == options.slices - 1) {
																setTimeout(
																		function() {
																			slice
																					.animate(
																							{
																								width : origWidth,
																								opacity : '1.0'
																							},
																							options.speed,
																							'',
																							function() {
																								clickable = truev;
																								fading = truev;
																								animate(
																										ll,
																										falsev,
																										falsev,
																										falsev);
																								if (option[17]
																										&& clicked)
																									window.location.hash = option[15][t];
																								fading = falsev;
																								clickable = truev;
																								$(
																										'.nivo-slice',
																										obj)
																										.remove();
																								afterAniCall(
																										target,
																										ll + 1);
																							});
																		},
																		(100 + timeBuff));
															} else {
																setTimeout(
																		function() {
																			clickable = falsev;
																			fading = truev;
																			slice
																					.animate(
																							{
																								width : origWidth,
																								opacity : '1.0'
																							},
																							options.speed);
																		},
																		(100 + timeBuff));
															}
															timeBuff += 50;
															i++;
														});
									} else if (curAnim == 'fade'
											|| randAnim == 'fade') {
										target
												.clone()
												.prependTo(obj)
												.css( {
													'z-index' : '100',
													'position' : 'absolute',
													'list-style' : 'none',
													'top' : '0',
													'left' : '0'
												})
												.hide()
												.fadeIn(
														option[23],
														function() {
															if (fontsmoothing)
																this.style
																		.removeAttribute("filter");
															clickable = truev;
															fading = truev;
															animate(ll, falsev,
																	falsev,
																	falsev);
															$(this).remove();
															if (option[17]
																	&& clicked)
																window.location.hash = option[15][t];
															fading = falsev;
															afterAniCall(
																	target,
																	ll + 1);
														});
									} else if (curAnim == 'slideInRight'
											|| randAnim == 'slideInRight') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var firstSlice = $('.nivo-slice:first',
												obj);
										firstSlice.css( {
											'height' : '100%',
											'width' : '0px',
											'opacity' : '1'
										});
										firstSlice
												.animate(
														{
															width : obj.width() + 'px'
														},
														(options.speed * 2),
														'',
														function() {
															clickable = truev;
															fading = truev;
															animate(ll, falsev,
																	falsev,
																	falsev);
															if (option[17]
																	&& clicked)
																window.location.hash = option[15][t];
															fading = falsev;
															clickable = truev;
															$(
																	'.nivo-slice:first',
																	obj)
																	.remove();
															afterAniCall(
																	target,
																	ll + 1);
														});
									} else if (curAnim == 'slideInLeft'
											|| randAnim == 'slideInLeft') {
										createSlices(obj, options, $(target)
												.find('img').attr('src'));
										var firstSlice = $('.nivo-slice:first',
												obj);
										firstSlice.css( {
											'height' : '100%',
											'width' : '0px',
											'opacity' : '1',
											'left' : '',
											'right' : '0px'
										});
										firstSlice
												.animate(
														{
															width : obj.width() + 'px'
														},
														(options.speed * 2),
														'',
														function() {
															firstSlice.css( {
																'left' : '0px',
																'right' : ''
															});
															clickable = truev;
															fading = truev;
															animate(ll, falsev,
																	falsev,
																	falsev);
															if (option[17]
																	&& clicked)
																window.location.hash = option[15][t];
															fading = falsev;
															clickable = truev;
															$(
																	'.nivo-slice:first',
																	obj)
																	.remove();
															afterAniCall(
																	target,
																	ll + 1);
														});
									} else if (curAnim == 'boxRandom'
											|| randAnim == 'boxRandom') {
										createBoxes(obj, options, $(target)
												.find('img').attr('src'));
										var totalBoxes = options.boxCols
												* options.boxRows;
										var i = 0;
										var timeBuff = 0;
										var boxes = shuffle($('.nivo-box', obj));
										boxes
												.each(function() {
													var box = $(this);
													if (i == totalBoxes - 1) {
														setTimeout(
																function() {
																	box
																			.animate(
																					{
																						opacity : '1'
																					},
																					options.speed,
																					'',
																					function() {
																						clickable = truev;
																						fading = truev;
																						animate(
																								ll,
																								falsev,
																								falsev,
																								falsev);
																						if (option[17]
																								&& clicked)
																							window.location.hash = option[15][t];
																						fading = falsev;
																						clickable = truev;
																						$(
																								'.nivo-box',
																								obj)
																								.remove();
																						afterAniCall(
																								target,
																								ll + 1);
																					});
																},
																(100 + timeBuff));
													} else {
														setTimeout(function() {
															clickable = falsev;
															fading = truev;
															box.animate( {
																opacity : '1'
															}, options.speed);
														}, (100 + timeBuff));
													}
													timeBuff += 20;
													i++;
												});
									} else if (curAnim == 'boxRain'
											|| randAnim == 'boxRain'
											|| curAnim == 'boxRainReverse'
											|| randAnim == 'boxRainReverse'
											|| curAnim == 'boxRainGrow'
											|| randAnim == 'boxRainGrow'
											|| curAnim == 'boxRainGrowReverse'
											|| randAnim == 'boxRainGrowReverse') {
										createBoxes(obj, options, $(target)
												.find('img').attr('src'));
										var totalBoxes = options.boxCols
												* options.boxRows;
										var i = 0;
										var timeBuff = 0;
										var rowIndex = 0;
										var colIndex = 0;
										var box2Darr = new Array();
										box2Darr[rowIndex] = new Array();
										var boxes = $('.nivo-box', obj);
										if (curAnim == 'boxRainReverse'
												|| randAnim == 'boxRainReverse'
												|| curAnim == 'boxRainGrowReverse'
												|| randAnim == 'boxRainGrowReverse') {
											boxes = $('.nivo-box', obj)
													._reverse();
										}
										boxes
												.each(function() {
													box2Darr[rowIndex][colIndex] = $(this);
													colIndex++;
													if (colIndex == options.boxCols) {
														rowIndex++;
														colIndex = 0;
														box2Darr[rowIndex] = new Array();
													}
												});
										for ( var cols = 0; cols < (options.boxCols * 2); cols++) {
											var prevCol = cols;
											for ( var rows = 0; rows < options.boxRows; rows++) {
												if (prevCol >= 0
														&& prevCol < options.boxCols) {
													(function(row, col, time,
															i, totalBoxes) {
														var box = $(box2Darr[row][col]);
														var w = box.width();
														var h = box.height();
														if (curAnim == 'boxRainGrow'
																|| randAnim == 'boxRainGrow'
																|| curAnim == 'boxRainGrowReverse'
																|| randAnim == 'boxRainGrowReverse') {
															box.width(0)
																	.height(0);
														}
														if (i == totalBoxes - 1) {
															setTimeout(
																	function() {
																		box
																				.animate(
																						{
																							opacity : '1',
																							width : w,
																							height : h
																						},
																						options.speed / 1.3,
																						'',
																						function() {
																							clickable = truev;
																							fading = truev;
																							animate(
																									ll,
																									falsev,
																									falsev,
																									falsev);
																							if (option[17]
																									&& clicked)
																								window.location.hash = option[15][t];
																							fading = falsev;
																							clickable = truev;
																							$(
																									'.nivo-box',
																									obj)
																									.remove();
																							afterAniCall(
																									target,
																									ll + 1);
																						});
																	},
																	(100 + time));
														} else {
															setTimeout(
																	function() {
																		clickable = falsev;
																		fading = truev;
																		box
																				.animate(
																						{
																							opacity : '1',
																							width : w,
																							height : h
																						},
																						options.speed / 1.3);
																	},
																	(100 + time));
														}
													})(rows, prevCol, timeBuff,
															i, totalBoxes);
													i++;
												}
												prevCol--;
											}
											timeBuff += 100;
										}
									}
								} else {
									var fadeinspeed = parseInt((speed)
											* (3 / 5)), fadeoutspeed = speed
											- fadeinspeed, noncrossfadetargets = li
											.children();
									noncrossfadetargets
											.stop()
											.fadeTo(
													fadeoutspeed,
													0.0001,
													function() {
														clickable = truev;
														fading = truev;
														animate(ll, falsev,
																falsev, falsev);
														clickable = !clicked;
														noncrossfadetargets
																.add(li)
																.stop()
																.fadeTo(
																		fadeinspeed,
																		1,
																		function() {
																			if (fontsmoothing)
																				this.style
																						.removeAttribute("filter");
																			if (option[17]
																					&& clicked)
																				window.location.hash = option[15][t];
																			clickable = truev;
																			fading = falsev;
																			afterAniCall(
																					target,
																					ll + 1);
																		});
													});
								}
							}
						}
					}
					;
					function shuffle(arr) {
						for ( var j, x, i = arr.length; i; j = parseInt(Math
								.random()
								* i), x = arr[--i], arr[i] = arr[j], arr[j] = x)
							;
						return arr;
					}
					function animate(dir, clicked, time, ajaxcallback) {
						if ((clickable && !destroyed && (filterDir(dir, ot) != t || init))
								|| ajaxcallback) {
							ajaxloading = falsev;
							clickable = (!clicked && !option[9]) ? truev
									: option[16];
							buttonclicked = clicked;
							ot = t;
							t = filterDir(dir, ot);
							if (option[24])
								setCurrent(t);
							var diff = Math.sqrt(Math.abs(ot - t)), speed = parseInt(diff
									* option[7]);
							if (!clicked && !option[9])
								speed = parseInt(diff * option[18]);
							if (!time)
								speed = 0;
							var i = t;
							if (i < 0)
								i = i + s;
							if (i > ts)
								i = i - s;
							if (ajaxcallback) {
								speed = oldSpeed;
								if (dontCountinue)
									dontCountinue--;
							} else if (option[25]) {
								if (option[25][i]) {
									ajaxLoad(i, i, truev, speed, falsev);
									option[25][i] = falsev;
									ajaxloading = truev;
								}
								if (!fading) {
									var aa = (ot > t) ? t : ot, ab = (ot > t) ? ot
											: t;
									dontCountinue = 0;
									oldSpeed = speed;
									for ( var a = aa; a <= ab; a++) {
										if (a <= ts && a >= 0 && option[25][a]) {
											ajaxLoad(a, a, falsev, speed,
													function() {
														animate(dir, clicked,
																time, a);
													});
											option[25][a] = falsev;
											dontCountinue++;
										}
									}
								}
								if (i + 1 <= ts && option[25][i + 1]) {
									ajaxLoad(i + 1, i + 1, falsev, 0, falsev);
									option[25][i + 1] = falsev;
								}
							}
							if (!dontCountinue) {
								if (t < 1 - 1) {
									var contiElement = liConti.eq(option[40]
											+ t);
								}
								if (t > ts) {
									var contiElement = liConti.eq(t - s
											- option[40]);
								}
								if (!fading) {
									beforeAniCall(li.eq(i), i + 1)
									if (option[11]) {
										if (t < option[40]) {
											beforeAniCall(liConti
													.eq((t < 0) ? t
															+ option[40] : t
															- option[40]),
													i + 1);
										}
										if (t > ts - option[40]
												|| t == -option[40]) {
											beforeAniCall(liConti
													.eq((t == -option[40]) ? -1
															: option[40] + t
																	- ts - 1),
													i + 1);
										}
									}
								}
								if (!fading && !ajaxloading)
									autoadjust(t, speed);
								if (!option[6]) {
									var p = getSlidePos(t, true);
									ul.animate( {
										marginLeft : p
									}, {
										queue : falsev,
										duration : speed,
										easing : option[8],
										complete : adjust
									});
								} else {
									var p = getSlidePos(t, false);
									ul.animate( {
										marginTop : p
									}, {
										queue : falsev,
										duration : speed,
										easing : option[8],
										complete : adjust
									});
								}
								;
								if (option[2]) {
									var fadetime = option[1];
									if (!clicked && !option[9])
										fadetime = (option[18] / option[7])
												* option[1];
									if (!time)
										fadetime = 0;
									if (fading)
										fadetime = parseInt((option[23])
												* (3 / 5));
									fadeControls(t, fadetime);
								}
								init = falsev;
							}
							;
						}
					}
					;
					function returnOptionNumber(name) {
						var optionsUserName = [ 'controlsShow',
								'controlsFadeSpeed', 'controlsFade',
								'insertAfter', 'firstShow', 'lastShow',
								'vertical', 'speed', 'ease', 'auto', 'pause',
								'continuous', 'prevNext', 'numeric',
								'numericAttr', 'numericText', 'clickableAni',
								'history', 'speedhistory', 'autoheight',
								'customLink', 'fade', 'crossFade', 'fadespeed',
								'updateBefore', 'ajax', 'preloadAjax',
								'startSlide', 'ajaxLoadFunction',
								'beforeAniFunc', 'afterAniFunc',
								'uncurrentFunc', 'currentFunc', 'prevHtml',
								'nextHtml', 'loadingText', 'firstHtml',
								'controlsAttr', 'lastHtml', 'autowidth',
								'slideCount', 'resumePause' ];
						for ( var i = 0; i < optionsUserName.length; i++)
							if (optionsUserName[i] == name)
								var optionnumber = i;
						return optionnumber;
					}
					baseSlider.getOption = function(a) {
						return option[returnOptionNumber(a)];
					}
					baseSlider.setOption = function(a, val) {
						baseSlider.destroy();
						option[returnOptionNumber(a)] = val;
						baseSlider.init();
					}
					baseSlider.insertSlide = function(html, pos, numtext) {
						baseSlider.destroy();
						if (pos > s)
							pos = s;
						var html = '<li>' + html + '</li>';
						if (!pos || pos == 0)
							ul.prepend(html);
						else
							li.eq(pos - 1).after(html);
						if (pos < destroyT || (!pos || pos == 0))
							destroyT++;
						if (option[15].length < pos) {
							option[15].length = pos;
						}
						if (!numtext)
							numtext = parseInt(pos, 10) + 1;
						option[15].splice(pos, 0, numtext);
						baseSlider.init();
					}
					baseSlider.removeSlide = function(pos) {
						pos--;
						baseSlider.destroy();
						li.eq(pos).remove();
						option[15].splice(pos, 1);
						if (pos < destroyT)
							destroyT--;
						baseSlider.init();
					}
					baseSlider.goToSlide = function(a) {
						goToSlide((a == parseInt(a)) ? a - 1 : a, truev);
					}
					baseSlider.block = function() {
						clickable = falsev;
					}
					baseSlider.unblock = function() {
						clickable = truev;
					}
					baseSlider.startAuto = function() {
						option[9] = truev;
						timeout = startAuto(option[10]);
					}
					baseSlider.stopAuto = function() {
						clearTimeout(timeout);
					}
					baseSlider.destroy = function() {
						destroyT = t;
						if (controls)
							controls.remove();
						destroyed = truev;
						$(option[20]).die("click");
						if (option[11]) {
							for (a = 1; a <= option[40]; a++) {
								liConti.eq(a - 1).remove();
								liConti.eq(-a).remove();
							}
						}
					}
					baseSlider.init = function() {
						if (destroyed) {
							initSudoSlider(obj, destroyT, falsev);
						}
					}
					baseSlider.adjust = function(speed) {
						if (!speed)
							speed = 0;
						heightWidthAdjust();
						autoadjust(i, speed)
					}
					baseSlider.adjustPause = function(pause) {
						if (!pause)
							return;
						option[10] = pause;
					}
					baseSlider.getValue = function(a) {
						switch (a) {
						case 'currentSlide':
							return t + 1;
						case 'totalSlides':
							return s;
						case 'clickable':
							return clickable;
						case 'destroyed':
							return destroyed;
						}
						return undefined;
					}
				});
	};
	$.fn._reverse = [].reverse;
})($jqPmSlide);
