/*
### desenvolvido por Aurelio de Morais - Aurl Informática ###
## versão 1.1 ###

requer as funções: jquery-1.4.2.min.js

*** parametos - opt. ***
	id:	string				- id do grupo
	tipo: integer			- 0 padrão/lista, 1 popup, 2 flutuante
	refresh: integer		- tipo 0: quantidade de segundos que o banner irá demorar para reload.
							  tipo 1: não faz nada.
							  tipo 2: quantidade de segundos que irá ocultar o banner.
	limite: integer			- quantidade de banners a serem exibidos (personalizável somente para tipo 0, demais tipos é sempre '1')
	position: string		- (somente para tipo 1,2) posição do banner em relação a tela. 
							  Opções: l left, t top, c center (eixo x), r right, b bottom, m middle (eixo y), x fixed (indica position:fixed), # btclose (botão fechar)
							  os parametros 'x' e '#' são válidos somente para tipo=2
							  sempre forcecido dois valores, ex: 'lt' = left e top = a esquerda e ao topo da tela
	effect: string			- tipo do efeito de transição entre os banners. Válido apenas para o tipo=0. Valores:
								fade (default).
								slide.

*** exemplo de parametro 'banners' ***
	{
	'opt':{id:'12',tipo:0,refresh:3,limit:2,position:'mc'},
	'list':[
			{'id':'1','url':'http://www.itapeva.sp.gov.br/arquivos/banners-home/serv-atendimento.jpg','sizex':200,'sizey':300,'target':'','link':'http://www.msn.com.br','urlBg':''},
			{'id':'2','url':'http://www.itapeva.sp.gov.br/arquivos/banners-home/serv-licitacoes.jpg','sizex':200,'sizey':300,'target':'','link':'http://www.aurlinformatica.com.br','urlBg':''},
			{'id':'3','url':'http://www.itapeva.sp.gov.br/arquivos/banners-home/serv-transito.jpg','sizex':200,'sizey':300,'target':'','link':'http://www.portalitapeva.com','urlBg':''},
			{'id':'4','url':'http://www.itapeva.sp.gov.br/arquivos/banners-home/serv-transparencia.jpg','sizex':200,'sizey':300,'target':'','link':'http://www.google.com.br','urlBg':''},
			{'id':'5','url':'http://www.itapeva.sp.gov.br/arquivos/banners-home/serv-utilidade.jpg','sizex':200,'sizey':300,'target':'','link':'http://www.uol.com.br','urlBg':''}
		]
	}
	
**** parametro 'uLimite' *****
	opcional 	- pode conter o limite de linhas definido pelo usuário quando a função é chamada
				  se for definido, substitui a variável opt.limit
*/
function loadBanner(banners,uLimite){
	var opt=banners.opt;
	var list=banners.list;
	var optLimite=(uLimite==undefined?opt.limit:uLimite);
	var rd=0;
	var i=0;
	var x=0;
	var obj;
	var time=0;
	var delay=400;
	
	//teste
	//opt.effect='fade';
	
	var rand=function(n){return parseInt(Math.random()*n)};
	
	var dwrite=function(rd){
		var url=list[rd].url;
		var ext=url.substring(url.lastIndexOf('.'),url.length);
		var html='';
		var obj;
		html+="<div class='bannid_"+list[rd].id+" banner item borderDivColor' style='width:"+list[rd].sizex+"px;height:"+list[rd].sizey+"px;overflow:hidden;'>";
		if(opt.position.indexOf('#')>-1){
			html+="<a href='#' class='banner_btClose' id='banner_btClose' title='Fechar'>Fechar</a>"
		};
		if(ext=='.swf'){
			html+="<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='"+list[rd].sizex+"' height='"+list[rd].sizey+"'>";
			html+="<param name='movie' value='"+url+"'/>";
			html+="<param name='quality' value='high'/>";
			html+="<param name='menu' value='false'/>";
			html+="<param name='wmode' value='transparent'/>";
			html+="<embed src='"+url+"' quality='high' pluginspage='http://www.macromedia.com/go/getflashplayer' type='application/x-shockwave-flash' width='"+list[rd].sizex+"' height='"+list[rd].sizey+"'></embed></object>";
		}else if(ext=='.jpg'||ext=='.jpeg'||ext=='.gif'||ext=='.png'||ext=='.bmp'){
			if(list[rd].link!='')html+="<a href='"+list[rd].link+"' target='"+list[rd].target+"'>";
			html+="<img src='"+list[rd].url+"' width='"+list[rd].sizex+"' height='"+list[rd].sizey+"' border='0'/>";
			if(list[rd].link!='')html+="</a>";
		}else{
			html+="<iframe src='"+list[rd].url+"' scrolling='auto' frameborder='0' width='"+list[rd].sizex+"' height='"+list[rd].sizey+"'></iframe>";
		};
		html+="</div>";
		return html;
	};
	
			
			
	var positionBann=function(rd,isPop){//calcula a positção do banner
		var ps='absolute';
		var t=0;
		var l=0;
		var sW=0;
		var sH=0;
		var btW=0;
		if(opt.tipo==2){
			btW=$('a#banner_btClose').height();
			if(btW==undefined)btW=0;
		};
		if(isPop){
			sW=screen.width-10;
			sH=screen.height-10;
		}else{
			sW=jqWin.width();
			sH=jqWin.height();
		};
		if(opt.position.indexOf('t')>-1)t=0;//topo
		if(opt.position.indexOf('l')>-1)l=0;//left
		if(opt.position.indexOf('r')>-1)l=sW-list[rd].sizex;//right
		if(opt.position.indexOf('b')>-1)t=sH-list[rd].sizey;//bottom
		if(opt.position.indexOf('c')>-1)l=(sW/2)-(list[rd].sizex/2);l=parseInt(l);//center (eixo x)
		if(opt.position.indexOf('m')>-1)t=(sH/2)-((list[rd].sizey+btW)/2);t=parseInt(t);//middle (eixo y)
		if(opt.position.indexOf('x')>-1){
			if(navigator.appName=='Microsoft Internet Explorer'&&navigator.userAgent.indexOf('MSIE 6.0')>-1){
				ps='absolute';
			}else{
				ps='fixed';
			};
		};
		if(isPop){
			return{left:l,top:t}
		}else{
			return{position:ps,left:l+'px',top:t+'px'}
		};
	};
	
	var initialize=function(){
		switch(opt.tipo){
			case 0://padrão/lista - todos os aleatórios são na mesma janela - a largura é igual para todos os banners, mas a altura pode variar
			{
				//para este tipo de padrão de banner / lista  de banners - a largura e altura de cada banner são sempre fixos.
				opt.width = list[0].sizex;
				opt.height = list[0].sizey;
				
				document.write("<div class='banner_container' style='width:"+opt.width+"px;' id='banngrid_"+opt.id+"'></div>");
				var palco = $('div#banngrid_'+opt.id+':eq(0)');//palco base onde serão armazenados os banners
				var oBlock=null;
				var oTmp=null;
	
				//reorganiza aleatoriamente a lista
				//lógica: ao inicializar reorganiza aleatoriamente a lista e depois apenas faz o loop na lista.
				var i0=0;//controle do loop
				list.sort(function(){
					return Math.round(Math.random())-0.5;//0.5-Math.random()
				});
				
				var loadBannTipo0=function(){
					if(oBlock!=null){//demais vezes
						if(opt.effect=='slide'){
							oBlock.css({position:'absolute',zIndex:1}).animate({left:opt.width},delay);//deixa como absolute e para traz do objeto que será criado abaixo
						}else{
							oBlock.css({position:'absolute',zIndex:1});//deixa como absolute e para traz do objeto que será criado abaixo
						};						
					};
					
					x=(optLimite>list.length?list.length:optLimite);
					var html="<div class='block'>";
					for(i=0;i<x;i++){
						html+=dwrite(i0); 
						i0++;
						if(i0>=list.length)i0=0;
					};
					html+="</div>";
					oTmp = $(html).prependTo(palco);
					html=null;
					
					//console.debug(list.length+'        '+optLimite);
					if(list.length>optLimite){//prossegue com a repetição somente se houver mais imagens do que o limite do palco para exibir.
						html = function(){
							if(oBlock!=null)oBlock.unbind().remove();//remove o antigo
							oBlock = $(this);
							if(opt.refresh>0)setTimeout(function(){loadBannTipo0()},1000*opt.refresh);
						};
					}
					if(opt.effect=='slide'){
						oTmp.show().css({left:opt.width*-1}).animate({left:0},delay,html);
					}else{//default effect fade
						oTmp.hide().fadeIn(delay,html);
					};
					
					
				};
				loadBannTipo0();
				break
			}
			case 1://popup
			{
				rd=rand(list.length);
				var wobp=window.open('','bannopop_'+opt.id,'width='+list[rd].sizex+',height='+list[rd].sizey+',top='+positionBann(rd,true).top+',left='+positionBann(rd,true).left+',scrollbars=auto');
				$(wobp).bind('load',function(){
												 var html="<html><head><title>Banner</title><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>";
												 html+="<style>body{margin:0px;}</style></head><body>";
												 html+=dwrite(rd);
												 html+="</body></html>";
												 wobp.document.open();
												 wobp.document.write(html);
												 wobp.document.close();
												 if(window.focus)wobp.focus();
											 })
				;
				break;
			}
			case 2:{//flutuante
				setTimeout(function(){
									var btClose=false;
									rd=rand(list.length);
									obj = $(dwrite(rd)).appendTo(document.body).css(positionBann(rd)).css({zIndex:999});
									obj.find('a#banner_btClose:eq(0)').bind('click',function(){
																				obj.fadeOut('slow',function(){obj.remove()});
																				return false
																				})
									;
									jqWin.resize(function(){obj.css(positionBann(rd));});
									time=0;
									if(opt.refresh>0){
										var interTime=setInterval(function(){
																		   time++;
																		   if(time>=opt.refresh){
																			   obj.fadeOut('slow',function(){obj.remove();});
																			   clearInterval(interTime)
																			}
														},1000);
									}
				},1);
				break
			}
			default:{ /*não faz nada*/break;}
		};
	};
	
	initialize();
};
