/*
	Concept Studio's Ajax Plugin Engine
	Author: Hemmert Ferenc
	Copyright: Concept Studio 2009  All rights reserved.
	Duplication, or any use, or reuse in the whole or any part of this file without prior written permission is prohibited.
*/

function InitAPE()
{

	/**
		Common preprocessors
	*/
	
	//img.plugin-rollover
	$('img.plugin-rollover').each(function(){
		var el = $(this);
		el.initImage = el.attr('src');
		el.rollOverImage = el.attr('alt');
		el.attr('alt', "");
		var imPath = el.attr('src').substr(0, el.attr('src').lastIndexOf("/"));
	
		el.mouseover(function(){el.attr('src', imPath + "/" + el.rollOverImage);});
		el.mouseout (function(){el.attr('src',  el.initImage);});
		});
	
	//img.plugin-imagelist
	$('img.plugin-imagelist').each(function(){
		var listRoot = $(this).parents('ul:eq(0)');
		//listRoot = (listRoot && (listRoot.length > 0)) ? listRoot[0] : null;
		if (listRoot.length === 0)
		{
			var p = $(this).parent();
			if (!p || !p.is('a'))
			{
				//p = $(this);
				$(this).wrap('<a></a>');
				$(this).parent().attr('href', $(this).attr('src'));
			}
			p = $(this).parent().parent();
			if (!p || !p.is('li'))
			{
				$(this).parent().wrap('<ul><li></li></ul>');
			}
			listRoot = $(this).parents('ul:eq(0)');
			//listRoot = (listRoot && (listRoot.length > 0)) ? listRoot[0] : null;
		}
		if (!listRoot) return false;
		if(!listRoot.hasClass('plugin-imagelist'))
			listRoot.addClass('plugin-imagelist').find('li').css('list-type', 'none');
		var imID = null;
		var reg = /file.php\?.*id=([0-9]*)&?.*$/;
		var fullURIScheme = true;
		if (!reg.test($(this).attr('src')))
		{
			reg = /\/([0-9]*)$/;
			fullURIScheme = false;
		}
		var ext = reg.exec($(this).attr('src'));
		if (ext)
			imID = ext[1];
		if (!imID)	return false;
		var imCat = CallIndexFunctionSync('GetFileCategory', {'Id' : imID, 'fmt' : 'JSON'}, 'json');
		if (!imCat)	return false;
		var imList = CallIndexFunctionSync('GetFileokFromCategory', {'Category' : imCat.id, 'fmt' : 'JSON'}, 'json');
		var thumbSize = GetImageWidth(this);
		$.each(imList, function(){
			var im = this;//imList[i];
			if (im.id !== imID)
			{
				listRoot.append(
					$('<li>').append(
						fullURIScheme ?
						$('<a>').attr('href', '/file.php?id=' + im.id).append(
							$('<img>').attr('src', '/file.php?id=' + im.id + (thumbSize ? '&width='+thumbSize : ''))
							)
						:
						$('<a>').attr('href', '/image/' + im.id).append(
							$('<img>').attr('src', '/image/' + (thumbSize ? thumbSize + '/' : '')  + im.id)
							)
						)
					);
			}
			return true;
			});
		
		});
	
	/**
		JQuery LightBox integration
		Note: Licensed under a Creative Commons Attribution-Share Alike 2.5 Brazil License. 
	*/
	$('img.plugin-lightbox').each(function()
	{
		var parent = $(this).parent();
		if (parent && !parent.hasClass('.plugin-lightbox') && !parent.is('a'))
		{
			$(this).wrap('<a></a>');
			$(this).parent().attr('href', $(this).attr('src')).addClass('plugin-lightbox');
		}
		if (parent && !parent.hasClass('.plugin-lightbox') && parent.is('a'))
		{
			parent.addClass('plugin-lightbox');
		}
	});
	
	if ($('a.plugin-lightbox').length > 0)
	{
		LoadCSS('/scripts/lightbox/css/jquery.lightbox-0.5.css');
		LoadScript('/scripts/lightbox/js/jquery.lightbox-0.5.pack.js', function()
		{
			/*setTimeout("$('a.plugin-lightbox').lightBox({fixedNavigation:true "
						+ ", imageLoading:'/scripts/lightbox/images/lightbox-ico-loading.gif'"
						+ ", imageBtnClose:'/scripts/lightbox/images/lightbox-btn-close.gif'"
						+ ", imageBtnPrev:'/scripts/lightbox/images/lightbox-btn-prev.gif'"
						+ ", imageBtnNext:'/scripts/lightbox/images/lightbox-btn-next.gif'"
						+ ", imageBlank:'/scripts/lightbox/images/lightbox-blank.gif'"
						+ ", overlayOpacity: 0.6"
						+ "});", 250);*/
			setTimeout("LoadLightbox();", 250);
		});
	}
	
	
	/**
		Pyrobox integration
		License: CC-BY-SA http://creativecommons.org/licenses/by-sa/2.5/it/
	*/
	
	
	/**
		Galleriffic integration
		License: MIT License 
	*/
	if ($('img.plugin-galleriffic').length > 0)
	{
		//LoadCss('/scripts/galleriffic/galleriffic-common.css');
		LoadScript('/scripts/galleriffic/jquery.galleriffic.js', function()
		{
			$('img.plugin-galleriffic').each(function()
			{
				var list = $(this).closest('ul');
				if (list && (list.length > 0))
				{
					//wrap ul in thumbs div
					list.addClass('thumbs');
					//list.addClass('noscript');
					list.find('a').addClass('thumb');
					list.find('a').after('<div class="caption"></div>');
					list.wrap('<div class="thumbs"></div>');
					
					var thumbs = list.closest('div.thumbs');
					if (thumbs && (thumbs.length > 0))
					{
						thumbs.addClass('navigation');
						
						//create master plugin container
						thumbs.wrap('<div class="plugin-galleriffic"></div>');
						thumbs.wrap('<div class="navigation-container"></div>');
						//create galleriffic containers
						/*thumbs.after('<div class="caption"></div>');
						thumbs.after('<div class="slideshow"></div>');
						thumbs.after('<div class="loading"></div>');
						thumbs.after('<div class="controls"></div>');*/
						
						//create pagination links
						thumbs.prepend(
							$('<a>').addClass('pageLink').addClass('prev').css('visibility', 'hidden').attr('title', 'Previous Page')
							);
						thumbs.append(
							$('<a>').addClass('pageLink').addClass('next').css('visibility', 'hidden').attr('title', 'Next Page')
							);
						//create main container
						thumbs.closest('div.navigation-container').after(
							$('<div>').addClass('content').append(
									$('<div>').addClass('slideshow-container').append(
										$('<div>').addClass('controls').css('display', 'none')
									).append(
										$('<div>').addClass('loader')
									).append(
										$('<div>').addClass('slideshow')
									)
								).append(
									$('<div>').addClass('caption-container').append(
										$('<div>').addClass('photo-index')
									)
								)
							);
						
						
						//set up layout
						var gallery = thumbs.closest('div.plugin-galleriffic');
						LoadCSS('/scripts/galleriffic/galleriffic-layout-basic.css');
						gallery.addClass('plugin-galleriffic-layout-basic');
						
						//add all galleriffic styles from image to list
						var galReg = /^plugin-galleriffic-height(\d+)$/;
						$.each($(this).attr('class').split(' '), function()
						{
							var res = galReg.exec(this);
							if (res && res[1])
							{
								gallery.css('height', res[1] + 'px');
							}
						});
					}
				}
			});
			LoadScript('/scripts/galleriffic/jquery.opacityrollover.js', function()
			{
				setTimeout("LoadGalleriffic();", 550);
			});
			//LoadGalleriffic();
		});
	}
	
	
}

function LoadCSS(cssFile)
{
	$('head').append('<link>');
	$('head').find(':last').attr({
				rel : 'stylesheet',
				type : 'text/css',
				href : cssFile
				});

}

function LoadScript(jsFile, onLoadCallback)
{
	$.getScript(jsFile, onLoadCallback);
}

function LoadLightbox()
{
	$('a.plugin-lightbox').lightBox({
		fixedNavigation:true,
		imageLoading:'/scripts/lightbox/images/lightbox-ico-loading.gif',
		imageBtnClose:'/scripts/lightbox/images/lightbox-btn-close.gif',
		imageBtnPrev:'/scripts/lightbox/images/lightbox-btn-prev.gif',
		imageBtnNext:'/scripts/lightbox/images/lightbox-btn-next.gif',
		imageBlank:'/scripts/lightbox/images/lightbox-blank.gif',
		overlayOpacity: 0.6
		});
}

function LoadGalleriffic()
{
	var onMouseOutOpacity = 0.67;
	$('div.plugin-galleriffic ul.thumbs li, div.plugin-galleriffic div.navigation-container a.pageLink').opacityrollover({
		mouseOutOpacity:   onMouseOutOpacity,
		mouseOverOpacity:  1.0,
		fadeSpeed:         'fast',
		exemptionSelector: '.selected'
	});
	
	$('div.plugin-galleriffic div.thumbs').each(function(){
		var gallery = $(this).galleriffic({
        delay:                     1500, 
        numThumbs:                 6,
        preloadAhead:              1,
        enableTopPager:            false,
        enableBottomPager:         true,
        maxPagesToShow:            7,
        imageContainerSel:         'div.slideshow', 
        controlsContainerSel:      'div.controls',
        captionContainerSel:       'div.caption', 
        loadingContainerSel:       'div.loader', 
        renderSSControls:          false, 
        renderNavControls:         false, 
        playLinkText:              'Play',
        pauseLinkText:             'Pause',
        prevLinkText:              'Previous',
        nextLinkText:              'Next',
        nextPageLinkText:          'Next &rsaquo;',
        prevPageLinkText:          '&lsaquo; Prev',
        enableHistory:             false, 
        enableKeyboardNavigation:  true, 
        autoStart:                 false, 
        syncTransitions:           true, 
        defaultTransitionDuration: 1000, 
        onSlideChange:             function(prevIndex, nextIndex) {
						this.find('ul.thumbs').children()
							.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
							.eq(nextIndex).fadeTo('fast', 1.0);

						// Update the photo index display
						/*this.$captionContainer.find('div.photo-index')
							.html('Photo '+ (nextIndex+1) +' of '+ this.data.length);*/
					}, 
        onPageTransitionOut:           function(callback) {
						this.fadeTo('fast', 0.0, callback);
					}, 
        onPageTransitionIn:            function() {
						var prevPageLink = this.closest('div.navigation-container').find('a.prev').css('visibility', 'hidden');
						var nextPageLink = this.closest('div.navigation-container').find('a.next').css('visibility', 'hidden');
						
						// Show appropriate next / prev page links
						if (this.displayedPage > 0)
							prevPageLink.css('visibility', 'visible');

						var lastPage = this.getNumPages() - 1;
						if (this.displayedPage < lastPage)
							nextPageLink.css('visibility', 'visible');

						this.fadeTo('fast', 1.0);
						},
        onTransitionOut:       undefined, 
        onTransitionIn:        undefined, 
        onImageAdded:              undefined, 
        onImageRemoved:            undefined  
    	});
    
    
    $(this).closest('div.navigation-container').find('a.prev').click(function(e) {
		gallery.previousPage();
		e.preventDefault();
	});
	
	$(this).closest('div.navigation-container').find('a.next').click(function(e) {
		gallery.nextPage();
		e.preventDefault();
	});
    
    $(this).closest('div.navigation-container').find('a.next, a.prev, ul.thumbs').wrapAll(
    	$('<div class="thumb-container"></div>')
    	);
    
    });
    
}
