/*
	ViewBox ver. 1.0
	Zalecana wersja jQuery: 1.4 +
	-----------------------------------
	www.devplugin.pl
	-----------------------------------
	Wszystkie modyfikacje poniższego
	skryptu prosimy zgłaszać na:
	INFO@DEVPLUGIN.PL 
*/
(function($){
$.fn.viewbox = function(ustawienia){
//Dekleracja zmiennych globalnych
	var element, e, domyslne, viewbox_div, panel, srodek, zamknij, nast, poprz, zawartosc, szerokoscPrzegladarki, wysokoscPrzegladarki, poz, x, y, klikany, href, hrefY, title, opis, wys, sze, idplikXML, nastL, poprzL, NastT, NastO, PoprzT, PoprzO, nastLink, poprzLink, tekstNaglowkay, obraz; 
	element = $(this);
	hrefElement = element.attr("href"); 
 
	 ustawienia = jQuery.extend({
	 	szybkosc	: 600,		//Domyślna szybkość animacji
		wysokosc	: 450,		//Domyślna wysokość Viewbox`a
		szerokosc	: 680,		//Domyślna szerokość Viewbox`a
		obraz		: 0,		//Domyślna wartość do załadowania obrazu w Viewbox`ie
		youtube		: 0,		//Domyślna wartość do załadowania YouTube w Viewbox`ie
		odtwarzacz	: 0		//Domyślna wartość do załadowania wbudowanego Player`a w Viewbox`ie 
	 },ustawienia);  
  
	//Główne elementy Viewbox`a
		viewbox_div 	= "#viewbox";						//Div główny (tło) Viewbox`a
		panel 			= "#viewbox-panel";					//Panel, czyli okno Viewbox`a    
		srodek 			= ".srodek";						//Środek Viewbox`a					
		zamknij 		= ".srodek .zamknij"; 				//Element służący do zamykania Viewbox`a 
		nast 			= ".srodek .nast";					//Sztrzałka w prawo
		poprz 			= ".srodek .poprz";					//Sztrzałka w lewo
		zawartosc		= ".zawartosc";						//Zawartość ViewBox`a
		obraz			= ".srodek .obraz";
		//Szerokość i wysokość przeglądarki
		szerokoscPrzegladarki = document.documentElement.clientWidth/2;
		wysokoscPrzegladarki = document.documentElement.clientHeight/2;
		
	//Rozszerzenia obsługiwanych plików
		function nObraz(hrefLink) {
			return ustawienia.obraz == "tak" || hrefLink.indexOf("jpg", ".") > 0 || hrefLink.indexOf("png", ".") > 0 || hrefLink.indexOf("gif", ".") > 0;
		}
		function nYT(hrefLink) {
			return ustawienia.youtube == "tak" || hrefLink.indexOf("youtube", ".") > 0;
		}
		function nV(hrefLink) {
			return ustawienia.vimeo == "tak" || hrefLink.indexOf("vimeo", ".") > 0;
		}
		function nPlayer (hrefLink) {
			return ustawienia.odtwarzacz == "tak" || hrefLink.indexOf("mp3", ".") > 0 || hrefLink.indexOf("vmw", ".") > 0 || hrefLink.indexOf("avi", ".") > 0;
		}    
	//O K N O  
	//Tworzenie div`ów viewbox`a		
	function tworzenie (gdzie) {
			$(gdzie).append("<div class='srodek'><div class='zawartosc'><div class='zamknij'><a href='#'>Zamknij</a></div><div class='nast'><a href='#'> Następny</a></div><div class='poprz'><a href='#'>Poprzedni</a></div></div>");
	}  
	//PODSTAWOWE FUNKCJE 
	//funkcja pokazująca content Viewbox`a
	function pokazContent(){  
		$(zawartosc).hide().delay(800).fadeIn(ustawienia.szybkosc);
		$(srodek).animate({ 
			"height"			: ustawienia.wysokosc, 
			"width"				: ustawienia.szerokosc,
			"top"				: "20%",
			"left"				: szerokoscPrzegladarki-ustawienia.szerokosc/2
		}, ustawienia.szybkosc/4.2 );
		$(nast+", "+poprz).css("top", ustawienia.wysokosc/2.2);
	} //koniec funkcjii pokazującej content
	
	//Usuwanie ewentualnych pozostałości z Viewbox`a, czyli obrazy, treści etc.
	function usuwanie_smieci () { 
		$(zawartosc).children(nast+","+poprz+","+obraz+", img, .tresc, h1, p, .object, object, param, embed").remove();
		
	} 
 
	//Funkcja zamykająca viewbox
	function zamykaj () {
		$(srodek).fadeOut(ustawienia.szybkosc, function(){
					//ukrywanie reszty Viewbox`a
					$(viewbox_div+","+panel+","+srodek).fadeOut(ustawienia.szybkosc/3.5);
					$(srodek).css({
						"width":0,
						"height":0
					}).remove();
		});
		  nastL, nastLink, NastL, PoprzL, poprzLink, poprzL = 0;
		  $(".aktywny").removeClass();
	} //Koniec zamykaj
	
	//Funkcja sprawdzająca tytul i opis
	function sprawdzajTytulIOpis (Etytul, Eopis) { 
		if(typeof Etytul === undefined ) {
			$(zawartosc).children("h1").remove();
		} else {
			$(srodek+" .obraz").append("<div class='tresc'><h1>"+Etytul+"</h1></div>");
		}
		if(typeof Eopis === undefined ) {
			$(zawartosc).children(".opis").remove();
		} else {
			$(srodek+" .obraz .tresc").append("<div class='opis'>"+Eopis+"</div>");
			$(srodek).hover(
				function () {
					$(srodek+" .obraz .tresc").slideDown(360);
				},
				function () {
					$(srodek+" .obraz .tresc").slideUp(280);	
				}
			); 
		}
		$(srodek+" .obraz .tresc").slideUp(200);		 
	}		
	//Funkcja pokazująca obraz
	 function Obraz (hrefImg, fot) {
	   	  img = new Image; 
			   img.src = hrefImg;		
			   ustawienia.szerokosc = img.width;
			   ustawienia.wysokosc = img.height;
				$(zawartosc).append("<div class='obraz'><img src='"+hrefImg+"' /></div>");
				if(fot == "nowe") {
					nowy_rozmiar(img.height, img.width);
				}
				$(".obraz").hide().delay(240).fadeIn(220); 
		 	 									
   	} //koniec funkcji pokazywania obrazu
	 
	//Funkcja filmów
	function Film (hrefFilm) {
		$(zawartosc).append("<div class='object'></div>"); 
		//Zmienne
		hrefY = "http://www.youtube.com/v/"+hrefFilm.substring(31, 42)+"&autoplay=1&loop=1&feature=related&showsearch=0";  
		$(".object").append("<object width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'><param name='movie' value='"+hrefY+"'></param><param name='allowFullScreen' value='true'></param><param name='allowscriptaccess' value='always'></param><embed src='"+hrefY+"' type='application/x-shockwave-flash' allowscriptaccess='always' allowfullscreen='true' width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'></embed></object>"); 
	}//Koniec Film
	
	//Vimeo
	function Vimeo (link) {
		$(zawartosc).append("<div class='object'></div>"); 
		//Zmienne
		hrefV = link.substring(21, 29);  
		$(".object").append("<object width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'><param name='allowfullscreen' value='true' /><param name='allowscriptaccess' value='always' /><param name='movie' value='http://vimeo.com/moogaloop.swf?clip_id="+hrefV+"&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1' /><embed src='http://vimeo.com/moogaloop.swf?clip_id="+hrefV+"&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1' type='application/x-shockwave-flash' allowfullscreen='true' allowscriptaccess='always' width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'></embed></object>");  
	}
	function Player (hrefPlik) {
		$(zawartosc).append("<div class='object'></div>");
		$('.object').append("<object id='player' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' name='player' width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'> <param name='movie' value='player/player.swf' /><param name='allowfullscreen' value='true' /> <param name='flashvars' value='file="+hrefPlik+"&amp;skin=player/modieus.zip' /> <object type='application/x-shockwave-flash' data='player/player.swf' width='"+ustawienia.szerokosc+"' height='"+ustawienia.wysokosc+"'> <param name='movie' value='player/player.swf' /> <param name='allowfullscreen' value='true' /> <param name='flashvars' value='file="+hrefPlik+"&amp;skin=player/modieus.zip' /></object>");
	}//Koniec Player
	
	//Zmień rozmiar
	function nowy_rozmiar (wys, szer) {
		$(srodek).animate({ 
			"left"			: szerokoscPrzegladarki-szer/2,
			"width"			: szer, 
			"height"		: wys 
		}, ustawienia.szybkosc/3); 
		$(nast+", "+poprz).css("top", wys/2.2);
	} //Koniec rozmiar 
	//Funkcja sprawdzająca czy jest poprzedni lub nastepny el.
	function czyjestInny (){
		NastL = $("a.aktywny").next("a");
		PoprzL = $("a.aktywny").prev("a");
		if(NastL.length > 0 ) {
			$(nast).fadeIn(140);
		} else {
			$(nast).fadeOut(140);
		}
		if(PoprzL.length > 0 ) {
			$(poprz).fadeIn(140);
		} else {
			$(poprz).fadeOut(140);
		}
	}  
	//Funkcja Nastepny
	function Nastepny () { 
		if(NastL.length > 0) { 
			$(nast).fadeIn("250");
			$("a.aktywny").removeClass("aktywny");
			$(NastL[0]).addClass("aktywny");
				NastT = $("a.aktywny").attr("title");
				NastO = $("a.aktywny").children("img").attr("alt");
				nastLink = $("a.aktywny").attr("href");  
				//YouTube
				if (nYT(nastLink))  {
					$(zawartosc).fadeOut(600);
					$(".object").remove();
					$(zawartosc).fadeIn(900, Film(nastLink));
				} //Koniec YT	  		
				//Obraz
				if (nObraz(nastLink)) {
					$(zawartosc).fadeOut(400).children(".obraz").remove();
					$(zawartosc).fadeIn(400, Obraz(nastLink, "nowe"));
						sprawdzajTytulIOpis(NastT, NastO);			 
				} //Koniec obraz
		} 
		czyjestInny();
		  
	} //Koniec nastepny 
	//Funkcja Poprzedni
	function Poprzedni () {
		if(PoprzL.length > 0) { 
			$(poprz).fadeIn("250");
			$("a.aktywny").removeClass("aktywny");
			$(PoprzL[0]).addClass("aktywny");
				PoprzT = $("a.aktywny").attr("title");
				PoprzO = $("a.aktywny").children("img").attr("alt");
			poprzLink = $("a.aktywny").attr("href");  
			
				//YouTube
				if (nYT(poprzLink))  {
					$(zawartosc).fadeOut(600);
					$(".object").remove();
					Film(poprzLink);
					$(zawartosc).fadeIn(900);
				} //Koniec YT	  		
				//Obraz
				if (nObraz(poprzLink)) {
					$(zawartosc).fadeOut(400).children(".obraz").remove();
					$(zawartosc).fadeIn(400, Obraz(poprzLink, "nowe"));
						sprawdzajTytulIOpis(PoprzT, PoprzO);			 
				} //Koniec obraz
		}   
		czyjestInny(); 
	} //Koniec poprzedni 
	
	function _viewbox () {
		
		//Przypisowanie wewnątrz funkcji
			klikany 			= $(this);
 			href 				= klikany.attr("href");  	//pobieranie linku
			title				= klikany.attr("title");	//pobieranie tytułu zdjęcia
			opis 				= klikany.children().attr("alt");		//pobieranie opisu zdjęcia
			idplikXML				= klikany.attr("id");		//pobieranie atrybutu id
			tekstNaglowka 		= klikany.text(); 			//pobieranie tekstu
			wys					= klikany.height();
			sze					= klikany.width();   
			klikany.addClass("aktywny"); 		
		//Usuwanie ewentualnych pozostałości z Viewbox`a, czyli obrazy, treści etc.
		usuwanie_smieci();
		$("body").append("<div id='viewbox'></div>");
		tworzenie("body"); 
		 czyjestInny();
		$("#viewbox, .srodek").hide();
		poz = klikany.position();
		x = poz.left;
		y = poz.top;	
			$(srodek).css({
				"left": x,
				"top": y-wys/2,
				"width": sze,
				"height": wys
			}); 
		//Pokazanie głównego okna Viewbox`a 
		$(viewbox_div).fadeIn(ustawienia.szybkosc, pokazContent );
   
		 
	//BADANIE DANYCH Z USTAWIEŃ
	//Jeśli obraz
	if (nObraz(href)) {				
		Obraz(href);						      		  
	} 
	//jeśli youtube
	if(nYT(href)) {
		Film(href);
	} 
	//jeśli Vimeo
	if(nV(href)){
		Vimeo(href);
	}
	
	//jeśli Player
	if(nPlayer(href)) {
		Player(href);
	}

	$(nast).unbind("click").bind("click", function(){ 
		Nastepny();  
		return false;
	});			
	 $(poprz).unbind("click").bind("click", function(){ 
		Poprzedni(); 
		return false; 
	 });
	
	//Zamykanie Viewbox`a po kliknięciu w krzyżyk
	$(zamknij+","+viewbox_div).click(zamykaj);
	
	 sprawdzajTytulIOpis(title, opis);
	 return false;
	}
	//Obsługa klawiszy
	$(document).unbind("keypress").bind("keypress", function (klawisz) {
		switch(klawisz.keyCode) {
			//ESC - zamyka
			case 27: 
				zamykaj();
			break;
			//Sztrzalka w prawo - pokazuje nastepny
			case 39:  
				Nastepny(); 
			break;
			//Strzalka w lewo - pokazuje poprzedni
			case 37:  		
				Poprzedni(); 
			break; 
		}
	}); 
	
	//Kliknięcie w Element 
	return this.unbind('click').click(_viewbox); //Koniec funkcji wykonywanej po kliknięciu w element
};
})(jQuery); //koniec pluginu 
