$.easing.easeOutBounce = function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b}};
$.easing.easeInOutQuad = function (x, t, b, c, d) { if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; };
$.easing.easeOutElastic = function (x, t, b, c, d) { var s=1.70158;var p=0;var a=c;if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;if (a < Math.abs(c)) { a=c; var s=p/4; }else var s = p/(2*Math.PI) * Math.asin (c/a);return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; }
Number.prototype.odd = function(){ return (this & 1)?true:false;}

if(!Array.indexOf){Array.prototype.indexOf=function(o){for(var i=0;i<this.length;i++){if(this[i]==o){return i;}}return -1;}}
// encontra o valor anterior ao N informado
Array.prototype.previous = function(n)
{
	for (var i=0; i<this.length; i++)
	{
		if (n >= this[i])
			return this[i];
	}
}

function imprimir() {
	source = $("#pageview").css('background-image').replace('url(','').replace(')','').replace(/\"/gi,'');
	WindowObject = window.open('i.php?p='+source, "ImprimirArquivo","width=0,height=0,top=0,left=0,toolbars=no,scrollbars=no,status=no,resizable=no");
	/*var img = new Image();
	img.src = $("#pageview").css('background-image').replace('url(','').replace(')','');
	WindowObject.document.write("<html><head><style>*{margin:0;padding:0;}</style></head><body><img src='"+img.src+"'/></body></html>");
	*/
}

//150, meia 75, 100

var	page,
	lastHash,
	args,
	activeView,
	pagesList,
	pageclick = true,
	activeMini=0,	
	scrollsize = 500,
	bannerShow=true,
	selectedCaderno,
	currzoom = 1,
	minzoom = 100;
function uncache(){
	return "?"+(+new Date());
}
function checkHash()
{
	var hash = (parent.location.hash.split("/").length > 1 ? parent.location.hash.split("/")[1] : parent.location.hash.split("/")[0]).toLowerCase();
	if (hash != lastHash)
	{
		page = hash.split("?")[0];
		var getArgs = (hash.split("?").length > 1 ? hash.split("?")[1].split("&") : false);
		args = {};
		args.length = 0;
		if (args != false)
		{
			for (a in getArgs)
			{
				if (getArgs[a] != "" && typeof getArgs[a] == 'string')
				{
					var arg = getArgs[a].split("=");
					args[arg[0]] = arg[1];
					args.length++;
				}
			}
		}
		lastHash = hash;
		renderView();
	}
}
$(function(){
	checkHash();
	setTimeout(arguments.callee, 25);
});
function getNatural(dim,img){
	if (dim == "width")
	{
		if (typeof img.naturalWidth == "undefined")
		{
			var tmpimg = new Image();
			tmpimg.src = img.src;
			return tmpimg.width;
		}
		else
			return img.naturalWidth;
	}
	else
	{
		if (typeof img.naturalHeight == "undefined")
		{
			var tmpimg = new Image();
			tmpimg.src = img.src;
			return tmpimg.height;
		}
		else
			return img.naturalHeight;
	}
}
function modal(did) {
	d = $(document);
	o = $("<div>");
	o.css('width',d.width()).css('height',d.height()).css('position','absolute').css('top','0').css('left','0').css('background-image',"url('_img/overlay.png')").css('diplay','none').css('z-index','10').attr('id','overlaydiv');
	$("body").append(o);
	o.show();
		div = $("#"+did);
		dw = (div.css('width')).replace('px','');
		ml = -1*Math.round(dw/2);
		dh = (div.css('height')).replace('px','');
		mt = -1*Math.round(dh/2);
		div.css('top','50%').css('left','50%').css('margin-left',ml).css('margin-top',mt).css('position','fixed').css('z-index','11').css("border","3px solid #fff").css("border-radius","10px").css('-moz-box-shadow','6px 6px 1px #333').css('-webkit-box-shadow','6px 6px 1px #333').css('box-shadow','6px 6px 1px #333');
		div.fadeIn();
	setTimeout(closeme,10000);
	o.click(closeme);
	function closeme(){
		o.fadeOut(400,function(){o.remove();});
		div.fadeOut();
	}
}
function scrollToPage(page) {
	if (typeof page == "string")
	{
		if (activeView == 0)
		{
			function algo(k) { i = 0; j = 2; while (j<=k) { if (!(j%2)) i+=scrollsize; j++; } return i; }
			i=0;
			$("#mininav ul li").each(function(){
				if ($(this).attr('id') == page) {
					$("#mininav ul").animate({scrollTop: algo(i)}, 100,function(){activeMini = $("#mininav ul").attr('scrollTop'); imgOndemand();});
					return;
				};
				i++;
			});
		}
		else
		{
			activeMini = 0;
			for (var i=0; i<pagesList.length; i++)
			{
				if (i.odd())
					activeMini += scrollsize;
				if (pagesList[i] == page)
				{
					pg = parseInt(i)+1;
					window.location = "#!/view?e="+args.e+"&p="+pg;
					return false;
				}
			}
		}
	}
	else
	{
		activeMini = 0;
		for (var i=0; i<pagesList.length; i++)
		{
			if (i.odd())
				activeMini += scrollsize;
			if (i == page)
			{
				$("#mininav ul").animate({scrollTop: activeMini}, 100, function(){imgOndemand();});
				return false;
			}
				
		}
	}
}
function montarBaseNav() {
	dim = '<div style="position:absolute; margin-top:10; margin-left:266px; background-image:url(_img/divider.png); width:20px; height:500px;"></div>';
	die = '<div id="divshad" style="position:absolute; top:70; left:566px; background-image:url(_img/divider.png); width:20px; height:500px;"></div>';
	if ($.browser.msie && $.browser.version == "7.0")
	{
		pagina = die;
		var mn = $("#mininav");

		$(window).resize(function(){
			$("#divshad").css('left',mn.offset().left+(mn.width()/2)-10+'px');
		});
		$("#divshad").css('left',mn.offset().left+(mn.width()/2)-10+'px');
	}
	else
		pagina = dim;
	
	pagina += '<li>'+$("#ppage").html()+'</li>';
	$("#mininav ul").append(pagina);
	$('iframe').remove();
	$('<div style="text-align:center;margin-top:20px;"><iframe src="/novo/adsense.php" width=728 scrolling=no frameborder=0></iframe></div>').appendTo($('body'));
	
}
function adicionarPagina(e,arq,p) {
	pindex = pagesList.indexOf(arq)+1;

	if (eval(args.preview))
		preview = "&preview=true";
	else
		preview = "";
		
	pagina = "<li id='"+arq+"'><a href='#!/view?e="+e+"&p="+pindex+preview+"'><img src='_img/loadingpage.gif' class='ondemand' truesrc='"+genFileSrc("edicoes/"+e+"/mini/"+arq)+"' width='276' height='500'/></a></li>";
		
	$("#mininav ul").append(pagina);
}
function drawPage(target, imagesource, cb)
{
	$("#loading").stop(true,true).slideDown('fast');

	var d = document.getElementById(target),
		i = $('<img />');

	i.load(function () {

		$('iframe').remove();

		$("#pageview").css({'width':getNatural("width",this),'height':getNatural("height",this)+10}).unbind("click").click(function(){
			if (pageclick) {
				scrollToPage(parseInt(args.p)-1);
				d.style.backgroundImage = 'none';
				window.location = genHashUrl("#!/mini?e="+args.e);
			}
		});

		d.style.backgroundImage = 'url('+this.src+')';
		$("#loading").stop(true,true).slideUp('slow','easeOutBounce');

		cb&&cb.call();

	}).attr('src',imagesource);

}

// NAVEGAÇÃO
function prevItemView()
{
	if (activeView == 0)
	{
		$("#mininav ul").stop(true,true).animate({scrollTop: "-="+scrollsize}, 100, 'easeInOutQuad', function(){
			activeMini = $("#mininav ul").attr('scrollTop');
			imgOndemand();
		});
	}
	else
	{
		if (parseInt(args.p).odd())
			activeMini-=scrollsize;

		currentPage = parseFloat(args.p);
		if (currentPage > 1)
		{
			nextPage = parseFloat(currentPage-1);
			window.location = genHashUrl("#!/view?e="+args.e+"&p="+nextPage);
		}
	}
}
function nextItemView()
{
	if (activeView == 0)
	{
		$("#mininav ul").stop(true,true).animate({scrollTop: "+="+scrollsize}, 100, 'easeInOutQuad', function(){
			activeMini = $("#mininav ul").attr('scrollTop');
			imgOndemand();
		});
	}
	else
	{
		if (parseInt(args.p).odd())
			activeMini += scrollsize;

		currentPage = parseFloat(args.p);
		if (currentPage < pagesList.length)
		{
			nextPage = parseFloat(currentPage+1);
			window.location = genHashUrl("#!/view?e="+args.e+"&p="+nextPage);
		}
	}
}

function genHashUrl(url)
{
	if (eval(args.preview))
		return url+"&preview=true";
	else
		return url;
}
function genFileSrc(src)
{
	if (eval(args.preview))
		return src.replace("edicoes","_uploads");
	else
		return src;
}


digital =
{
	atual:undefined,
	ultima:undefined,
	especiais:undefined,
	loadedf:{},
	loaded: {},
	selecionar: function(edicao)
	{
		this.atual = parseFloat(edicao);
		$("#sedi").val(edicao);
	},
	listar: function(callback)
	{
		if (digital.especiais == undefined)
		{
			$.post('edicoes.php',{"especiais":0},function(data)
			{
				digital.especiais = data;
				
				var especiais = [];
				
				for (var i=0; i<(digital.especiais).length; i++)
				{
					especiais.push(parseFloat(digital.especiais[i].split("/")[1].split(".")[0]));
				}

				digital.especiais = especiais;
				
			},"json");
		}
	
		$.post('edicoes.php',{"listar":0},function(data)
		{
			meses = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
			digital.ultima = data.edicao;
			$("#sedi").html("");
			for (var i=0; i<data.edicoes.length; i++)
			{
				var e = data.edicoes[i];
				var ano = e.substr(0,4);
				var mes = e.substr(4,2);
				var dia = e.substr(6,2);
				
				var dma = dia+" de "+meses[parseFloat(mes)-1]+" de "+ano;
				$("#sedi").append('<option value="'+e+'">'+dma+'</option>');
				digital.selecionar(digital.ultima);
			}
			
			if (typeof callback != "undefined")
				callback();
		},"json");

	},
	paginas: function(edicao,callback)
	{
		digital.selecionar(edicao);
		
		function handleXML(xml,callback)
		{
			$("#mininav ul").html("").scrollTop(0);
			$("#scad").html("");
			montarBaseNav();
			pagesList = [];
			$(xml).find("pagina").each(function(){ pagesList.push($(this).text());});
			i = 0;
			$(xml).find("caderno").each(function(){
				var fname = $(this).find("pagina:first").text();
				var s = '<option value="'+fname+'">'+$(this).attr("nome")+'</option>';
				$("#scad").append(s);
				if (fname == selectedCaderno)
					$("#scad").val(fname);
				
				$(this).find("pagina").each(function(){
					i++;
					adicionarPagina(edicao,$(this).text(),i);
				});
			});
			
			if (digital.especiais.previous(digital.atual) < digital.atual)
			{
				$.get("edicoes_esp/"+digital.especiais.previous(digital.atual)+".xml",function(xml)
				{
					esp = digital.especiais.previous(digital.atual);
					$(xml).find("pagina").each(function(){ pagesList.push($(this).text());});
					$(xml).find("caderno").each(function(){
						var fname = $(this).find("pagina:first").text();
						var s = '<option value="'+fname+'">'+$(this).attr("nome")+'</option>';
						$("#scad").append(s);
						if (fname == selectedCaderno)
							$("#scad").val(fname);
						
						$(this).find("pagina").each(function(){
							i++;
							adicionarPagina(esp,$(this).text(),i);
						});
					});

				});
			}
			
			callback();
		}
		if (digital.loaded[edicao] == undefined)
		{
			edicao_url = genFileSrc("edicoes/"+edicao+"/config-edi.xml"+uncache());
			$.ajax({url: edicao_url ,type:"GET",dataType:"xml",
			success: function(xml) { digital.loaded[edicao] = xml; handleXML(xml, function() {if (typeof callback != "undefined") callback()} ); }});
		}
		else
			handleXML(digital.loaded[edicao], function(){ if (typeof callback != "undefined") callback() });
	}
}

function showBanner(file) {
	var flashvars = {};
	var params = {
		'play'		:'true',
		'quality'	:'best',
		'wmode'		:'transparent'
	};
	var attributes = {};
	attributes.id = "bannerswf";
	attributes.name = "bannerswf";
	swfobject.embedSWF('banners/'+file, "semFlash", "1000", "500", "9.0.0", false, flashvars, params, attributes);
	modal("banner");
}
function renderView()
{
	if (digital.ultima == undefined)
		digital.listar(final);
	else
		final();
	function final()
	{
		switch(page)
		{
			case 'view':
				function displayPage(edicao)
				{
					$("#head-nav").css('background-position','347px 0px');
					$("#head-nav .zoomtool").css('visibility','visible');
					$("#btnPrint").css('visibility','visible');
					$("#mininav").hide();

					document.title = "DM Digital - Página "+args.p;
					$('head meta[property=og:url]').attr('content',"http://www.dmdigital.com.br/share/?e="+args.e+"&p="+args.p);
					$('head meta[property=og:title]').attr('content',document.title);
					$('head meta[property=og:description]').attr('content','Versão digital do Diário da Manhã - Página '+args.p);
					$('head meta[property=og:image]').attr('content',"http://www.dmdigital.com.br/novo/edicoes/"+edicao+"/"+pagesList[parseFloat(args.p)-1]);

					$("#socialnetwork td").eq(1).html("<div id='socialshare'><script>(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) {return;}  js = d.createElement(s); js.id = id;  js.src = \"//connect.facebook.net/pt_BR/all.js#xfbml=1&appId=279304678755106\";  fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));</script><fb:like href=\"http://www.dmdigital.com.br/share/?e="+args.e+"&p="+args.p+"\" send=\"false\" layout=\"box_count\" width=\"20\" show_faces=\"false\"></fb:like><div id='fb-root' style='margin-bottom:10px;'></div><a href=\"https://twitter.com/share\" class=\"twitter-share-button\" data-url=\"http://www.dmdigital.com.br/share/?e="+args.e+"&p="+args.p+"\" data-text=\"DM Digital - Pag. "+args.p+"\" data-count=\"none\" data-via=\"diariodamanha\" data-lang=\"pt\">Tweet</a><script type=\"text/javascript\" src=\"//platform.twitter.com/widgets.js\"></script></div>")
						.css('visibility','visible');

					drawPage("pageview",genFileSrc("edicoes/"+edicao+"/"+pagesList[parseFloat(args.p)-1]), function () {


						$("#pageview").stop(true,true).fadeIn(400,function(){

								var i = $('<img />');
								i.load(function()
								{
									var iw = getNatural("width", this) + 100;

									if (window.innerWidth < iw) {
										var nz = (window.innerWidth/iw * 100);
										renderZoom(nz);
										minzoom = nz;
									}
								}).attr('src',genFileSrc("edicoes/"+edicao+"/"+pagesList[parseFloat(args.p)-1]));

							pageDragger.begin();
						});
						/*if (bannerShow == true)
						{
							showBanner('1.swf');
							bannerShow = false;
						}*/
						activeView = 1;
					
					});

				}
				
				if (args.length > 0 && parseFloat(args.p)>0)
					digital.paginas(args.e,function(){ displayPage(args.e); });
				else
					window.location = "#!/mini";
			break;
	
			case 'mini':
				function displayNavigation()
				{
					document.title = "DM Digital - Navegação";
					$('head meta[property=og:title]').attr('content',document.title);
					$('head meta[property=og:description]').attr('content',document.title);
					$("#head-nav").css('background-position','0px 0px');
					$("#head-nav .zoomtool").css('visibility','hidden');
					$("#btnPrint").css('visibility','hidden');
					
					$("#pageview").hide();
					$("#mininav").stop(true,true).fadeIn();
					activeView = 0;
					disableImageDrag();
					imgOndemand();
				}
				
				if (args.length > 0)
					digital.paginas(args.e,displayNavigation);
				else
					digital.paginas(digital.ultima,displayNavigation);
			break;
	
			default:
				window.location = "#!/mini";
				return;
			break;
		}
	}
}

function renderZoom(z){
	z=Math.round(z);
	currzoom = z;
	if (!$.browser.mozilla) {
		document.getElementById('pageview').style.zoom = z+"%";
	} else {
		var i = new Image();
		i.onload = function()
		{
			z=z/100;
			iw = getNatural("width",i);
			ih = getNatural("height",i);
			
			oc = (window.innerWidth/2);	//centro da janela
			ie = iw*z;				//imagem escalada
			transX = oc-ie/2;				//offset de translação x

			if (transX > 0)
				transX = 0;
			
			transX *= -1;
			transY = ih/2*z-ih/2;
			
			matrix = "matrix("+z+", 0, 0, "+z+", "+transX+"px, "+transY+"px)";
			
			$("#pageview").css("-moz-transform",matrix);
		}
		i.src = $("#pageview").css('background-image').split("\"")[1];
	}
}

function pageZoom(type)
{
	if (activeView == 1)
	{
		var typeMod = {
			'in': 1,
			'out': -1
		};

		if (!$.browser.mozilla)
		{
			var cz = document.getElementById('pageview').style.zoom;
			if (cz == "") cz=100;

			zoomval=parseInt(cz)+(typeMod[type]*25);
		}
		else
		{

			matrix = $("#pageview").css("-moz-transform").split("(")[1].split(")")[0].split(",");
			var cz = parseFloat(matrix[0]);
			zoomval=(cz+(typeMod[type]*.4))*100;

		}

	

		if (zoomval < minzoom) zoomval = minzoom;
		if (zoomval > 200) zoomval = 200;

		renderZoom(zoomval);

	}
}


$(document).ready(function(){

	// ie select/drag stop
	document.ondragstart = function () {return false;}
	document.onselectstart = function(){ return false;}

	if ($.browser.mozilla)
		$("table").css('border-spacing','5px');

	$("img[type=bwd]").hover(function(){$(this).attr('src','_img/m_nav-eh.png').css('color','#3069cc')},function(){$(this).attr('src','_img/m_nav-e.png').css('color','')}).click(function(){prevItemView();});
	$("img[type=fwd]").hover(function(){$(this).attr('src','_img/m_nav-dh.png').css('color','#3069cc')},function(){$(this).attr('src','_img/m_nav-d.png').css('color','')}).click(function(){nextItemView(); });
	$("img[type=zin]").hover(function(){$(this).attr('src','_img/m_nav-ih.png')},function(){$(this).attr('src','_img/m_nav-i.png')}).click(function(){pageZoom('in');});
	$("img[type=zout]").hover(function(){$(this).attr('src','_img/m_nav-oh.png')},function(){$(this).attr('src','_img/m_nav-o.png')}).click(function(){pageZoom('out');});

	$(document)[($.browser.mozilla)?'keypress':'keydown'](function(e)
	{
		var arrow = {left: 37, up: 38, right: 39, down: 40};
		
		if ($.browser.mozilla)
		{
			switch(e.which)
			{
				case 61:
				pageZoom('in');
				break;
				case 45:
				pageZoom('out');
				break;
			}

		}
		switch(e.keyCode) {
			case arrow.left:
				prevItemView();
			break;
			case arrow.right:
				nextItemView();
			break;
			case 187:
				pageZoom('in');
			break;
			case 189:
				pageZoom('out');
			break;
		}
		if (activeView == 0) {
			switch(e.keyCode) {
				case arrow.down:
					nextItemView();
				break;
				case arrow.up:
					prevItemView();
				break;
			}
		}
	});
	
	$("#scad").change(function(){
		selectedCaderno = $(this).val();
		scrollToPage(selectedCaderno);
	});
	
	$("#sedi").change(function(){
		activeMini = 0;
		selected = $(this).val();
		window.location = "#!/mini?e="+selected;
	});	
	
});

function disableImageDrag()
{
	imgs = document.getElementsByTagName('img');
	for (i = 0; i < imgs.length; i++)
		imgs[i].onmousedown = function (e) { if (typeof e != "undefined") e.preventDefault(); else return false; };
}


pageDragger = {
	scrollpts:{
		x:undefined,
		y:undefined
	},
	startpts:{
		x:undefined,
		y:undefined
	},
	begin:function()
	{
		dom = ($.browser.msie || $.browser.mozilla)?'html':'body';
			
		$("#pageview").unbind('mousedown').mousedown(function(e){
			pageclick = true;
			
			pageDragger.startpts = {x:e.clientX,y:e.clientY};
			pageDragger.scrollpts = {x:$(dom).scrollLeft(),y:$(dom).scrollTop()};
			
		});
		
		$(($.browser.msie)?document:window).unbind('mouseup').unbind('mousemove').mouseup(function(e){
		
			pageDragger.scrollpts={x:undefined,y:undefined};
			pageDragger.startpts={x:undefined,y:undefined};
			
		}).mousemove(function(e){
			if (pageDragger.startpts.x != undefined	&&
				pageDragger.startpts.y != undefined)
			{
				pageclick = false;

				ratioX = currzoom/100*1004/$(window).width();
				ratioY = $(document).height()/$(window).height();

				valueX = ((pageDragger.startpts.x-e.clientX))*ratioX;
				valueY = ((pageDragger.startpts.y-e.clientY))*ratioY;
				
				$(dom).scrollTop(valueY+pageDragger.scrollpts.y);
				$(dom).scrollLeft(valueX+pageDragger.scrollpts.x);
			}
		});
	}
}

var imgToLoad = 1;
var offset = 70;
 
function imgOndemand() {
	var _$w = $("#mininav ul");
	$('img.ondemand').each(function () {
		var $img = $(this);
		if ($img.offset().top <= offset) {
			$img.attr('src', $img.attr('truesrc')).removeClass('ondemand');
			
		}
	});
	imgToLoad = $('img.ondemand').length
}
