function initSendForm(sCallSelector){
	$(sCallSelector).click( function(e){
		var oOverlay = $("#cnt-overlay");
		oOverlay.css("opacity", "0.7");
		oOverlay.fadeIn("normal", function(){
			$("#cnt-send-form-box").css("display", "block");
		});
		
		return false;
	});
	
	$("#cnt-send-form-box .send-box-hdr a.close").click( function(e){
		$("#cnt-send-form-box").fadeOut("normal");
		
		var oOverlay = $("#cnt-overlay");
		if (oOverlay.length) {
			oOverlay.fadeOut("normal", function(){
			});
		}
		return false;
	});
};

function createSwitcher(sSelector, bTargetAsParent, sMode) {
	
	$(sSelector).click( function(e){
		var oTarget = $(this),
			sPrevAnchor = null;
		
		var oParent = bTargetAsParent ? oTarget : oTarget.closest("li"); 
		
		oParent.siblings().each( function(index, el){
			var oEl = $(el);
			if (oEl.hasClass("on")) {
				oEl.removeClass("on");
				sPrevAnchor = bTargetAsParent ? oEl.attr("href") : $(oEl.children(":first-child")).attr("href");
			}
		});
		
		oParent.addClass("on");
		
		var oNewOn = $(oTarget.attr("href")),
			oPrevOn = $(sPrevAnchor);
		
		if (oNewOn.length && sPrevAnchor) {
			switch (sMode) {
				case "fade":
					oPrevOn.removeClass("on");
					oNewOn.css("opacity", 0.15);
					oNewOn.addClass("on");
					oNewOn.animate({ 
				        opacity: 1
					}, 250 );
				break;
				
				case "blend":
					oPrevOn.fadeOut(250, function(){
						$(this).removeClass("on");
					});
					
					oNewOn.fadeIn(250, function(){
						$(this).addClass("on");
					});
				break;
				
				default:
					oNewOn.addClass("on");
					oPrevOn.removeClass("on");
				break;
			}
		}
		
		return false;
	});
};

function createScroller(sScrollCntSelector, sBtnSelector, bTargetAsParent) {
	
	var oScrollCnt = $(sScrollCntSelector);

	if (oScrollCnt.length) {

		oScrollCnt.scrollTo( $(sBtnSelector+":first").attr("href") );
		
		$(sBtnSelector).click( function(e){
			var oTarget = $(this),
				sPrevAnchor = null;
			
			var oParent = bTargetAsParent ? oTarget : oTarget.closest("li"); 
			
			oScrollCnt.scrollTo( $(oTarget.attr("href")), 250 );
			
			oParent.siblings().each( function(index, el){
				var oEl = $(el);
				if (oEl.hasClass("on")) {
					oEl.removeClass("on");
					sPrevAnchor = bTargetAsParent ? oEl.attr("href") : $(oEl.children(":first-child")).attr("href");
				}
			});
			
			oParent.addClass("on");
			
			return false;
		});
	}
};

function rollCollection(sCollectionSelector, bOnlyFadeIn, iTimeout) {
	
	var elements,
		collectionSelector = sCollectionSelector,
		timeout = 3000,
		onlyFadeIn = bOnlyFadeIn,
		visibleIndex = -1;
	
	if (parseInt(iTimeout)){
		timeout = iTimeout;
	}
	
	
	var getElements = function() {
		if (!elements) {
			elements = $(collectionSelector);
		}
		
		return elements;
	};
	
	var run = function() {
		var elems = getElements(),
			previousIndex = visibleIndex;
		
		++visibleIndex;
		
		if (visibleIndex >= elems.length ) {
			visibleIndex = 0;
		}
		
		$(elems.get(visibleIndex)).fadeIn("slow", function(){
			if (onlyFadeIn && previousIndex > -1) {
				$(elems.get(previousIndex)).fadeOut("slow");
			}
		});
		
		if (!onlyFadeIn && previousIndex > -1) {
			$(elems.get(previousIndex)).fadeOut("slow");
		}
		
		
		setTimeout(run, timeout);
	};
	
	run();
};

function picGallery(sPicBoxSel, sMiniPicBoxSel, sHeaderSel) {
	
	var _isIE6 = ($.browser.msie && parseInt($.browser.version.substr(0,1)) < 7),
		_sMiniPicBoxSel = sMiniPicBoxSel,
		_sHeaderSel = sHeaderSel;
	
	
	var _resize = function(oCntToResize, oOnEl){
		
		var oImg = oOnEl.find("img");
		
		$.preload([oImg.attr("src")], {
			enforceCache: true,
			onFinish: function(){
			
				var	iWidth,
					iHeight
			
				if (_isIE6){
					iWidth = oImg.outerWidth(true),
					iHeight = oImg.outerHeight(true);
				}
				else{
					//hack
					oOnEl.css("float", "left");
				
					//hack
					iWidth = oOnEl.outerWidth(true),
					iHeight = oOnEl.outerHeight(true);
				}
		    	
		    	iHeight += oCntToResize.find(".pic-header").outerHeight(true);
				iHeight += oCntToResize.find(".pic-box-controls").outerHeight(true);
				
				if (iWidth < 400) {
					iWidth = 400;
				}
				oCntToResize.width(iWidth);
				oCntToResize.height(iHeight);
				
				oCntToResize.animate({
					"width": iWidth, 
					"height": iHeight 
				}, { duration: 0, complete: function(){
						_setPosition(oCntToResize);
					}
				});
				
				if (!_isIE6){
					//hack
					oOnEl.css("float", "none");
				}
			}
		});
	};
	
	var _setPosition = function(oCnt){
		var iTop = parseInt( ($(window).height() / 2) - (oCnt.outerHeight(true) / 2) );
		var iLeft = parseInt( ($(window).width() / 2) - (oCnt.outerWidth(true) / 2) );
		
		iTop = parseInt( iTop + $(window).scrollTop() );
		
		if (iTop < 0 ){
			iTop = 0;
		}
		
		if (iLeft < 0 ){
			iLeft = 0;
		}
		
		oCnt.css({
			"top" : iTop + "px",
			"left" : iLeft + "px"
		});
	};
	
	var _showPic = function(iIndex, oPicColl, oCntToResize) {
		
		var oOnEl = oPicColl.filter(".on"),
			bShowPrev = false,
			oNewOnEl;
		
		switch (iIndex){
			case "prev":
				oNewOnEl = oOnEl.prev();
				bShowPrev = true;
			break;
			
			case "next":
				oNewOnEl = oOnEl.next();
			break;
			
			default:
				oNewOnEl = $(oPicColl.get(iIndex));
			break;
		}

		if (!oNewOnEl.length) {
			oNewOnEl =  $(oPicColl.get( bShowPrev ? oPicColl.length-1 : 0 ));
		}
		
		if (oCntToResize && oCntToResize.length) {
			_resize(oCntToResize, oNewOnEl);
		}
		
		oNewOnEl.addClass("on");
		oOnEl.removeClass("on");
		
		return oPicColl.index( oNewOnEl );
	};
	
	var _updateCounter = function(oPicBox, iIndex){
		oPicBox.find(".pic-box-controls .counter strong").text(iIndex+1);
	};
	
	var _createGallery = function(sPicBoxSel, bActivateWindow, oCntToResize) {
		var oPicBox = $(sPicBoxSel), 
			oPicColl = oPicBox.find(".pic-collection > *");
			

		if (oPicColl.length) {
			var iOnIndex = 0;
			
			if (oPicColl.length > 1){
				oPicBox.find(".pic-box-controls .prev a").click( function(e){
					iOnIndex = _showPic("prev", oPicColl, oCntToResize);
					_updateCounter(oPicBox, iOnIndex);
					return false;
				});
				
				oPicBox.find(".pic-box-controls .next a").click( function(e){
					iOnIndex = _showPic("next", oPicColl, oCntToResize);
					_updateCounter(oPicBox, iOnIndex);
					return false;
				});
			}
			else{
				oPicBox.find(".pic-box-controls .prev, .pic-box-controls .next").hide();
			}
			
			oPicColl.click( function(e){
				if (bActivateWindow) {
					_createWindow(sPicBoxSel, iOnIndex);
				}
				return false;
			});
		}
		
		return true;
	};
	
	var _prepareHeader = function(oPicBox){
		var oHeader = $(_sHeaderSel);
		if (oHeader.length){
			oPicBox.find(".pic-header").append( oHeader.clone(false) );
		}
	};
	
	var _prepareImages = function(oColl){
		
		var oOldImgColl = oColl.find("img");
		
		for (var i = 0; i < oOldImgColl.length; ++i) {
			$("<img />").attr("src", $(oOldImgColl.get(i)).attr("src"));
		}
		
		oColl.each( function(index, el) {
			var oEl = $(el);
			oEl.find("img").attr("src", oEl.attr("href"));
		});
	};
	
	var _prepareCorners = function(oCnt){
		oCnt.append('<div class="bg l"></div>');
		oCnt.append('<div class="bg t"></div>');
		oCnt.append('<div class="bg r"></div>');
		oCnt.append('<div class="bg b"></div>');
		oCnt.append('<div class="crnr tl"></div>');
		oCnt.append('<div class="crnr tr"></div>');
		oCnt.append('<div class="crnr bl"></div>');
		oCnt.append('<div class="crnr br"></div>');
	};
	
	var _createWindow = function(sPicBoxSel, iOnIndex) {
		var oPicBox = $(sPicBoxSel),
			oPicColl = oPicBox.find(".pic-collection > *");

		if (oPicColl.length) {
			var sPicBoxBigID = "pic-box-big",
				oPicBoxBig = $("#" + sPicBoxBigID),
				sOverlayID = "cnt-overlay",
				oOverlay = $("#" + sOverlayID);
			
				
			var oPicBoxClone = oPicBox.find(".pic-box").clone(false),
				oPicCollBig = oPicBoxClone.find(".pic-collection > *");
			
			_prepareHeader(oPicBoxClone);
			_prepareImages(oPicCollBig);
			
			if (!oOverlay.length) {
				oOverlay = $('<div id="' + sOverlayID + '"></div>').prependTo( $("body") );
			}
			oOverlay.css("opacity", "0.7");
			
			oPicBoxBig = $('<div id="' + sPicBoxBigID + '"></div>');
			oPicBoxBig.append( oPicBoxClone );
			 
			
			$('<a href="javascript:void(0)" class="close">zamknij</a>').appendTo(oPicBoxBig).click( function(e){
				oPicBoxBig.fadeOut("normal", function(){
					oPicBoxBig.remove();
				});
				
				oOverlay.fadeOut("normal");
				
				return false;
			});
			
			if (_sMiniPicBoxSel) {
				var oLnkMini = $('<a href="javascript:void(0)" class="lnk-mini">miniaturki</a>');
	
				oPicBoxBig.find(".pic-box-controls .counter").append(' <span>|</span> ').append(oLnkMini);
	
				oLnkMini.click( function(){
					_createMiniPicsWindow(oPicBoxBig, oPicCollBig, iOnIndex);
					return false;
				});
			
			}
			
			_prepareCorners(oPicBoxBig);
			oPicBoxBig.appendTo( $("body") );
			
			_createGallery("#" + sPicBoxBigID + " .pic-box", false, oPicBoxBig);
				
			
			oOverlay.fadeIn("normal", function(){
				_resize(oPicBoxBig, $(oPicCollBig.get(iOnIndex)));
			});
		}
	};
	
	var _createMiniPicsWindow = function(oPicBoxBig, oPicCollBig, iOnIndex) {
		
		var oPicMini = $(_sMiniPicBoxSel);
		
		if (oPicMini.length){
			var oPicMiniCollClone = oPicMini.find(".pic-collection a").clone(false),
				oTable = $("<table>"),	
				iTDCounter = 0,
				iMaxInRow = oPicMiniCollClone.length > 50 ? 10 : 5,
				oTr;
			
					
			var oOldImgColl = oPicMiniCollClone.find("img");
			
			
			var sImgSrc,
				aImgSrc = [];
			
			for (var i = 0; i < oOldImgColl.length; ++i) {
				sImgSrc = $(oOldImgColl.get(i)).attr("src");
				aImgSrc.push(sImgSrc);
				
				++iTDCounter;
				
				if (iTDCounter == 1) {
					oTr = $("<tr>");
				}
				
				oTable.append(oTr);
				$("<td>").append($( oPicMiniCollClone.get(i)) ).appendTo(oTr);
				
				if (iTDCounter == iMaxInRow) {
					iTDCounter = 0;
				}
			}
			
			$.preload(aImgSrc, {
				enforceCache: true,
				onFinish: function(){
					oPicCollBig.removeClass("on");
					oPicBoxBig.find(".pic-box-controls").hide();
					
					oPicBoxBig.find(".pic-collection").append(oTable);
					
					oTable.find("a").click(function(e){
						var iNewOnIndex = oPicMiniCollClone.index(this);
						
						oPicBoxBig.find(".pic-box-controls").show();
						oTable.remove();
						_showPic(iNewOnIndex, oPicCollBig, oPicBoxBig);
						_updateCounter(oPicBoxBig, iNewOnIndex);
						return false;
					});
					
					
					var	iWidth = oTable.outerWidth(true),
						iHeight = oTable.outerHeight(true);
			
					iHeight += oPicBoxBig.find(".pic-header").outerHeight(true);
					iHeight += oPicBoxBig.find(".pic-box-controls").outerHeight(true);
					
					if (iWidth < 400) {
						iWidth = 400;
					}
					
					oPicBoxBig.width(iWidth);
					oPicBoxBig.height(iHeight);
					
					oPicBoxBig.animate({
						"width": iWidth, 
						"height": iHeight 
					}, { duration: 0, complete: function(){
							_setPosition(oPicBoxBig);
						}
					});
				}
			});
		}
	};
	
	_createGallery(sPicBoxSel, true);
};


