/*
 Supersized - Fullscreen Slideshow jQuery Plugin
 Version 3.1.1
 www.buildinternet.com/project/supersized

 By Sam Dunn / One Mighty Roar (www.onemightyroar.com)
 Released under MIT License / GPL License
 */

(function(a) {
	a(document).ready( function() {
		a("body").prepend('<div id="supersized-loader"></div>').prepend('<div id="supersized"></div>')
	});
	a.supersized= function(o) {
		var c= {
			slideshow:1,
			autoplay:1,
			start_slide:1,
			slide_interval:5000,
			transition:1,
			transition_speed:750,
			new_window:1,
			pause_hover:0,
			keyboard_nav:1,
			performance:1,
			image_protect:1,
			image_path:"img/",
			min_width:0,
			min_height:0,
			vertical_center:1,
			horizontal_center:1,
			fit_portrait:0,
			fit_landscape:0,
			navigation:1,
			thumbnail_navigation:0,
			slide_counter:1,
			slide_captions:1
		};
		var g=a("#supersized");
		var d="#pauseplay";
		if(o) {var o=a.extend(c,o)
		} else {var o=a.extend(c)
		}
		var b=false;
		var j=false;
		var i=o.image_path;
		if(o.start_slide) {var h=o.start_slide-1
		} else {var h=Math.floor(Math.random()*o.slides.length)
		}
		var n=o.new_window?' target="_blank"':"";
		if(o.performance==3) {
			g.addClass("speed")
		} else {
			if((o.performance==1)||(o.performance==2)) {
				g.addClass("quality")
			}
		}
		if(o.slides.length>1) {h-1<0?loadPrev=o.slides.length-1:loadPrev=h-1;
			var e=(o.slides[loadPrev].url)?"href='"+o.slides[loadPrev].url+"'":"";
			a("<img/>").attr("src",o.slides[loadPrev].image).appendTo(g).wrap("<a "+e+n+"></a>")
		}
		e=(o.slides[h].url)?"href='"+o.slides[h].url+"'":"";
		a("<img/>").attr("src",o.slides[h].image).appendTo(g).wrap('<a class="activeslide" '+e+n+"></a>");
		if(o.slides.length>1) {h==o.slides.length-1?loadNext=0:loadNext=h+1;
			e=(o.slides[loadNext].url)?"href='"+o.slides[loadNext].url+"'":"";
			a("<img/>").attr("src",o.slides[loadNext].image).appendTo(g).wrap("<a "+e+n+"></a>")
		}
		g.hide();
		a("#controls-wrapper").hide();
		a(window).load( function() {
			a("#supersized-loader").hide();
			g.fadeIn("fast");
			a("#controls-wrapper").show();
			if(o.thumbnail_navigation) {h-1<0?prevThumb=o.slides.length-1:prevThumb=h-1;
				a("#prevthumb").show().html(a("<img/>").attr("src",o.slides[prevThumb].image));h==o.slides.length-1?nextThumb=0:nextThumb=h+1;
				a("#nextthumb").show().html(a("<img/>").attr("src",o.slides[nextThumb].image))
			}
			m();
			if(o.slide_captions) {
				a("#slidecaption").html(o.slides[h].title)
			}
			if(!(o.navigation)) {
				a("#navigation").hide()
			}
			if(o.slideshow&&o.slides.length>1) {
				if(o.slide_counter) {
					a("#slidecounter .slidenumber").html(h+1);
					a("#slidecounter .totalslides").html(o.slides.length)
				}
				slideshow_interval=setInterval(k,o.slide_interval);
				if(!(o.autoplay)) {
					clearInterval(slideshow_interval);
					j=true;
					if(a(d).attr("src")) {
						a(d).attr("src",i+"play_dull.png")
					}
				}
				if(o.thumbnail_navigation) {
					a("#nextthumb").click( function() {
						if(b) {
							return false
						}
						clearInterval(slideshow_interval);
						k(g,o);
						if(!(j)) {
							slideshow_interval=setInterval(k,o.slide_interval)
						}
						return false
					});
					a("#prevthumb").click( function() {
						if(b) {
							return false
						}
						clearInterval(slideshow_interval);
						f(g,o);
						if(!(j)) {
							slideshow_interval=setInterval(k,o.slide_interval)
						}
						return false
					})
				}
				if(o.navigation) {
					a("#navigation a").click( function() {
						a(this).blur();
						return false
					});
					a("#nextslide").click( function() {
						if(b) {
							return false
						}
						clearInterval(slideshow_interval);
						k();
						if(!(j)) {
							slideshow_interval=setInterval(k,o.slide_interval)
						}
						return false
					});
					if(a("#nextslide").attr("src")) {
						a("#nextslide").mousedown( function() {
							a(this).attr("src",i+"forward.png")
						});
						a("#nextslide").mouseup( function() {
							a(this).attr("src",i+"forward_dull.png")
						});
						a("#nextslide").mouseout( function() {
							a(this).attr("src",i+"forward_dull.png")
						})
					}
					a("#prevslide").click( function() {
						if(b) {
							return false
						}
						clearInterval(slideshow_interval);
						f();
						if(!(j)) {
							slideshow_interval=setInterval(k,o.slide_interval)
						}
						return false
					});
					if(a("#prevslide").attr("src")) {
						a("#prevslide").mousedown( function() {
							a(this).attr("src",i+"back.png")
						});
						a("#prevslide").mouseup( function() {
							a(this).attr("src",i+"back_dull.png")
						});
						a("#prevslide").mouseout( function() {
							a(this).attr("src",i+"back_dull.png")
						})
					}
					a(d).click( function() {
						if(b) {
							return false
						}
						if(j) {
							if(a(d).attr("src")) {
								a(d).attr("src",i+"pause_dull.png")
							}
							j=false;
							slideshow_interval=setInterval(k,o.slide_interval)
						} else {
							if(a(d).attr("src")) {
								a(d).attr("src",i+"play_dull.png")
							}
							clearInterval(slideshow_interval);
							j=true
						}
						return false
					})
				}
			}
		});
		if(o.keyboard_nav) {
			a(document.documentElement).keydown( function(p) {
				if((p.keyCode==37)||(p.keyCode==40)) {
					if(a("#prevslide").attr("src")) {
						a("#prevslide").attr("src",i+"back.png")
					}
				} else {
					if((p.keyCode==39)||(p.keyCode==38)) {
						if(a("#nextslide").attr("src")) {
							a("#nextslide").attr("src",i+"forward.png")
						}
					}
				}
			});
			a(document.documentElement).keyup( function(p) {
				clearInterval(slideshow_interval);
				if((p.keyCode==37)||(p.keyCode==40)) {
					if(a("#prevslide").attr("src")) {
						a("#prevslide").attr("src",i+"back_dull.png")
					}
					if(b) {
						return false
					}
					clearInterval(slideshow_interval);
					f();
					if(!(j)) {
						slideshow_interval=setInterval(k,o.slide_interval)
					}
					return false
				} else {
					if((p.keyCode==39)||(p.keyCode==38)) {
						if(a("#nextslide").attr("src")) {
							a("#nextslide").attr("src",i+"forward_dull.png")
						}
						if(b) {
							return false
						}
						clearInterval(slideshow_interval);
						k();
						if(!(j)) {
							slideshow_interval=setInterval(k,o.slide_interval)
						}
						return false
					} else {
						if(p.keyCode==32) {
							if(b) {
								return false
							}
							if(j) {
								if(a(d).attr("src")) {
									a(d).attr("src",i+"pause_dull.png")
								}
								j=false;
								slideshow_interval=setInterval(k,o.slide_interval)
							} else {
								if(a(d).attr("src")) {
									a(d).attr("src",i+"play_dull.png")
								}
								j=true
							}
							return false
						}
					}
				}
			})
		}
		if(o.slideshow&&o.pause_hover) {
			a(g).hover( function() {
				if(b) {
					return false
				}
				if(!(j)&&o.navigation) {
					if(a(d).attr("src")) {
						a(d).attr("src",i+"pause.png")
					}
					clearInterval(slideshow_interval)
				}
			}, function() {
				if(!(j)&&o.navigation) {
					if(a(d).attr("src")) {
						a(d).attr("src",i+"pause_dull.png")
					}
					slideshow_interval=setInterval(k,o.slide_interval)
				}
			})
		}
		a(window).resize( function() {
			m()
		});
		function m() {
			return g.each( function() {
				var p=a("img",g);
				a(p).each( function() {
					var r=(a(this).height()/a(this).width()).toFixed(2);
					var q=a(window).width();
					var s=a(window).height();
					var t;
					if((s>o.min_height)||(q>o.min_width)) {
						if((s/q)>r) {
							if(o.fit_landscape&&r<=1) {
								a(this).width(q);
								a(this).height(q*r)
							} else {
								a(this).height(s);
								a(this).width(s/r)
							}
						} else {
							if(o.fit_portrait&&r>1) {
								a(this).height(s);
								a(this).width(s/r)
							} else {
								a(this).width(q);
								a(this).height(q*r)
							}
						}
					}
					if(o.horizontal_center) {
						a(this).css("left",(q-a(this).width())/2)
					}
					if(o.vertical_center) {
						a(this).css("top",(s-a(this).height())/2)
					}
				});
				if(o.image_protect) {
					a("img",g).bind("contextmenu", function() {
						return false
					});
					a("img",g).bind("mousedown", function() {
						return false
					})
				}
				return false
			})
		}

		function k() {
			if(b) {
				return false
			} else {
				b=true
			}
			var r=o.slides;
			var q=g.find(".activeslide");
			q.removeClass("activeslide");
			if(q.length==0) {
				q=g.find("a:last")
			}
			var p=q.next().length?q.next():g.find("a:first");
			var s=p.prev().length?p.prev():g.find("a:last");
			a(".prevslide").removeClass("prevslide");
			s.addClass("prevslide");h+1==r.length?h=0:h++;
			if(o.performance==1) {
				g.removeClass("quality").addClass("speed")
			}
			loadSlide=false;h==r.length-1?loadSlide=0:loadSlide=h+1;
			e=(o.slides[loadSlide].url)?"href='"+o.slides[loadSlide].url+"'":"";
			a("<img/>").attr("src",o.slides[loadSlide].image).appendTo(g).wrap("<a "+e+n+"></a>");
			if(o.thumbnail_navigation==1) {h-1<0?prevThumb=r.length-1:prevThumb=h-1;
				a("#prevthumb").html(a("<img/>").attr("src",o.slides[prevThumb].image));
				nextThumb=loadSlide;
				a("#nextthumb").html(a("<img/>").attr("src",o.slides[nextThumb].image))
			}
			q.prev().remove();
			if(o.slide_counter) {
				a("#slidecounter .slidenumber").html(h+1)
			}
			if(o.slide_captions) {(o.slides[h].title)?a("#slidecaption").html(o.slides[h].title):a("#slidecaption").html("")
			}
			p.hide().addClass("activeslide");
			switch(o.transition) {
				case 0:
					p.show();
					b=false;
					break;
				case 1:
					p.fadeTo(o.transition_speed,1, function() {
						l()
					});
					break;
				case 2:
					p.animate({
						top:-a(window).height()
					},0).show().animate({
						top:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 3:
					p.animate({
						left:a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 4:
					p.animate({
						top:a(window).height()
					},0).show().animate({
						top:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 5:
					p.animate({
						left:-a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 6:
					p.animate({
						left:a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					q.animate({
						left:-a(window).width()
					},o.transition_speed);
					break;
				case 7:
					p.animate({
						left:-a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					q.animate({
						left:a(window).width()
					},o.transition_speed);
					break
			}
		}

		function f() {
			if(b) {
				return false
			} else {
				b=true
			}
			var r=o.slides;
			var q=g.find(".activeslide");
			q.removeClass("activeslide");
			if(q.length==0) {
				q=a(g).find("a:first")
			}
			var p=q.prev().length?q.prev():a(g).find("a:last");
			var s=p.next().length?p.next():a(g).find("a:first");
			a(".prevslide").removeClass("prevslide");
			s.addClass("prevslide");h==0?h=r.length-1:h--;
			if(o.performance==1) {
				g.removeClass("quality").addClass("speed")
			}
			loadSlide=false;h-1<0?loadSlide=r.length-1:loadSlide=h-1;
			e=(o.slides[loadSlide].url)?"href='"+o.slides[loadSlide].url+"'":"";
			a("<img/>").attr("src",o.slides[loadSlide].image).prependTo(g).wrap("<a "+e+n+"></a>");
			if(o.thumbnail_navigation==1) {
				prevThumb=loadSlide;
				a("#prevthumb").html(a("<img/>").attr("src",o.slides[prevThumb].image));h==r.length-1?nextThumb=0:nextThumb=h+1;
				a("#nextthumb").html(a("<img/>").attr("src",o.slides[nextThumb].image))
			}
			q.next().remove();
			if(o.slide_counter) {
				a("#slidecounter .slidenumber").html(h+1)
			}
			if(o.slide_captions) {(o.slides[h].title)?a("#slidecaption").html(o.slides[h].title):a("#slidecaption").html("")
			}
			p.hide().addClass("activeslide");
			switch(o.transition) {
				case 0:
					p.show();
					b=false;
					break;
				case 1:
					p.fadeTo(o.transition_speed,1, function() {
						l()
					});
					break;
				case 2:
					p.animate({
						top:a(window).height()
					},0).show().animate({
						top:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 3:
					p.animate({
						left:-a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 4:
					p.animate({
						top:-a(window).height()
					},0).show().animate({
						top:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 5:
					p.animate({
						left:a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					break;
				case 6:
					p.animate({
						left:-a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					q.animate({
						left:a(window).width()
					},o.transition_speed);
					break;
				case 7:
					p.animate({
						left:a(window).width()
					},0).show().animate({
						left:0
					},o.transition_speed, function() {
						l()
					});
					q.animate({
						left:-a(window).width()
					},o.transition_speed);
					break
			}
		}

		function l() {
			b=false;
			if(o.performance==1) {
				g.removeClass("speed").addClass("quality")
			}
			m()
		}

	}
})(jQuery);
