var galleryService = null;
var showing = false;
var lastTop = 0;
var lastLeft = 0;
var topFinal = 0; 

$(document).ready(initialize)


function initialize() {
	$('.slideshow').cycle({
		random: 1,
		fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
	});

	$('#loginForm').show();
	
	// json-rpc service
	galleryService = jQuery.Zend.jsonrpc(	{	url: '/Rpc/json/service/Gallery',async:false });
	
	
	// controle do menu de acesso
	
	$('#toggleAcessPanel').click(toogleAcessPanel);
	
	// criar paginação das galerias
	
	if ($( "#pagerTemplate" ).length > 0)
	{
		for (var x=1; x <= 36; x++)
		{
			$( "#pagerTemplate" ).tmpl( [ {page:x} ] ).appendTo('#galleryPager');
			if (x == 1)
			{
				$( "#pager1" ).addClass('selectedGallery');
			}
		}
		
		$('.pageLink a').click ( function ( element ) {
				$('.pageLink a').removeClass('selectedGallery');
				$(this).addClass('selectedGallery');
			}
		);
	
	}
	
	// iniciar com a primeira galeria
	
	if ($( "#galleryPhotoSampleTemplate" ).length > 0 )
	{
		loadGallery(null, 1);
	}
	
	// navegação das fotos
	
	$('#goBack').click( function ( ) {
		var actualId = parseInt ( $('#portfolioImages ul li img.selected').attr('id') ) ;		
		if (actualId > 1)
		{
			$('#' + ( actualId - 1 ) ).click();
		} else {
			$('#'+$('#photoList ul li').length).click();
		}
		
	});
	
	$('#goForw').click(function ( ) {		
		var actualId = parseInt ( $('#portfolioImages ul li img.selected').attr('id') ) ;		
		if (actualId < $('#photoList ul li').length)
		{
			$('#' + ( actualId + 1 ) ).click();
		} else {
			$('#1').click();
		}

	});
	
	// quando entrar na lista de galerias, efeito
	$('#galleryList').fadeIn(1000);
	
	// efeito para entrar em galeria
	$('#samplePhotoList dd a').click( function () 
	{
		$('#galleryList').fadeOut(2000);
	});
	
	// caixa de loading
	if ($('#loadingBox').length > 0)
	{
		
		$('#loadingBox').fadeOut();		
	}
	
	// eventos para controle de aceesso às galerias

	$('#portfolioMenu a').click(showPortfolio);
	$('#portfolioImages .back').click(hidePortfolio);
	$('#portfolioImages img').click(openPhoto);
	
	$('.galeria #portfolioImages .back').click(goBackGalleryList);
		
	
	$('#portfolioImages').mouseover(showPhotoList);
	$('#coverPortfolio').mouseover(hidePhotoList);
	$('#coverPortfolio').mousedown(hidePhotoList);
	
	// scroll na lista de fotos thumbs
	$('#photoList').mousewheel(function(event, delta) {
			var dir = delta > 0 ? 'Up' : 'Down',
                vel = Math.abs(delta);
            
			if (dir == 'Up')
			{
				topFinal = $("#photoList").scrollTop()-64;			
			} else {
				topFinal = $("#photoList").scrollTop()+64;
			}
			
			$("#photoList").animate({scrollTop: topFinal}, 1000);
						
            return false;
        }
     );
}


function showPortfolio(evt) {
	$('#loadingBox').fadeIn();
	var tipo = evt.target.alt;
	$('#portfolioMenu').slideUp(500);		
	$('#portfolioImages .'+tipo).fadeIn(500);
	$('#portfolioImages .back').show();
	$('#portfolioImages').attr('alt',tipo);
	
	
	var  imgBg  = $('#portfolioImages .'+tipo+ ' li img')[0].src;

	$('#coverPortfolio').fadeOut(500, function(img) {
		$('#coverPortfolio').css('background-image','url('+imgBg+')');	
	});

	$('#coverPortfolio').fadeIn(500);
	$('#loadingBox').fadeOut();

}
function hidePortfolio(evt) {
	var tipo = evt.target.alt;
	$('#portfolioImages').find('ul').fadeOut(100);
	$('#portfolioMenu').slideDown(500);		
	$('#portfolioImages .'+tipo).fadeOut(500);
	$('#portfolioImages .back').hide();
	$('#coverPortfolio').fadeOut(500);			
}

function openPhoto(imgObj) {
	var imgBg = this.src;
	$('#loadingBox').fadeIn();
	$('#portfolioImages ul li img').removeClass('selected');
	$(this).addClass('selected');
	

	
	if (imgBg.indexOf("size\/104x60") >= 0)
	{		
		imgBg = imgBg.replace('size/104x60','size/1000x574')
	}

	
	//alert(tgt.name);
	$('#coverPortfolio').fadeOut(500, function(img) {
			$('#coverPortfolio').css('background-image','url('+imgBg+')');	
	});
		
	$('#coverPortfolio').ready().fadeIn(500);
	hidePhotoList();
	
	
	var toff = this.offsetTop ;
	var loff = this.offsetLeft ;
	if (loff >= 860 && lastTop <= toff)
		topFinal = $("#photoList").scrollTop()+64;
	else if (loff <= 100 && lastTop >= toff)
		topFinal = $("#photoList").scrollTop()-64;
	
	lastTop = this.offsetTop ;
	lastLeft = this.offsetLeft ;
	
	$("#photoList").animate({scrollTop: topFinal}, 1000);
	$('#loadingBox').fadeOut();
}

function toogleAcessPanel() {
	$('#acessPanelForm').slideToggle("slow"); 		
	$('#toggleAcessPanel').slideToggle("slow");
	$('#accessPanel').addClass('accessPanelOpen');
			
	$('#cover').animate({		    
	    top: "90px",
	  }, 500 );		
	$('#coverPortfolio').animate({		    
	    top: "90px",
	  }, 500 );
}

function goBackGalleryList (evt)
{
	history.go(-1);
}

function showPhotoList(evt) 
{
//	evt.stopPropagation();
//	evt.stopImmediatePropagation();
	if (!showing)
	{
					
		$('#portfolioImages').addClass('over');
		
		if ($('#portfolioImages ul.' + $('#portfolioImages').attr('alt') + ' li').length > 9)
		{
			showing = true;
			$('#portfolioImages').animate({		
		    top: "460px",
		    height: "155px",
			}, 500 , function () 
			{
				showing = false;				
			});
		}
		
	} 
	return false;
	
}

function hidePhotoList(evt) 
{
//	evt.stopPropagation();
//	evt.stopImmediatePropagation();
	if (!showing)
	{
		
		$('#portfolioImages').removeClass('over');
		if ($('#portfolioImages ul li').length > 9)
		{
			showing = true;

			$('#portfolioImages').animate({		    
			    top: "520px",
			    height: "95px",
			  }, 500, function () 
			{
				showing = false;				
			});
		}
		
	}
	return false;
}

function loadGallery( evt, page ) {
	$('#loadingBox').fadeIn();
	if (page == null) {
		page = 1;
	}

	$( "#samplePhotoList" ).empty();
	//$( "#galleryPager" ).empty();
	$( "#galleryPhotoSampleTemplate" ).tmpl( galleryService.getGalleryList( 'y', page ) ).appendTo( "#samplePhotoList" );
	
	$("#samplePhotoList dd:first").addClass('firstGallery');
	$("#samplePhotoList dd:eq(1)").addClass('secondGallery');
	
	
	$('#samplePhotoList dd.firstGallery a img').fadeIn(250);
		
	$('#samplePhotoList dd.secondGallery a img').delay(150).fadeIn(250);
	$('#samplePhotoList dd a img').delay(400).fadeIn(500);
	
	$('#samplePhotoList dd div.info').delay(1200).fadeIn(500);	
	$('#loadingBox').fadeOut();
	 
	
}
/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
			//	dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

function friendly_url(str,max) {
	  if (max === undefined) max = 32;
	  var a_chars = new Array(
	    new Array("a",/[áàâãªÁÀÂÃ]/g),
	    new Array("e",/[éèêÉÈÊ]/g),
	    new Array("i",/[íìîÍÌÎ]/g),
	    new Array("o",/[òóôõºÓÒÔÕ]/g),
	    new Array("u",/[úùûÚÙÛ]/g),
	    new Array("c",/[çÇ]/g),
	    new Array("n",/[Ññ]/g)
	  );
	  // Replace vowel with accent without them
	  for(var i=0;i<a_chars.length;i++)
	    str = str.replace(a_chars[i][1],a_chars[i][0]);
	  // first replace whitespace by -, second remove repeated - by just one, third turn in low case the chars,
	  // fourth delete all chars which are not between a-z or 0-9, fifth trim the string and
	  // the last step truncate the string to 32 chars 
	  return str.replace(/\s+/g,'-').toLowerCase().replace(/[^a-z0-9\-]/g, '').replace(/\-{2,}/g,'-').replace(/(^\s*)|(\s*$)/g, '').substr(0,max);
}

