﻿var utils = utils || {};
var xhr = xhr || {};

utils.authenticated = false;

utils.isAuthenticated = function(callback) {
	callback = typeof callback == "function"? callback : function(){};
	var dtRnd = new Date();
	$.getJSON("/authenticated.vm?flavor=json&rnd="+dtRnd.getTime(), function(data){
		utils.authenticated = data.authenticated;
		callback.call(utils.authenticated, utils.authenticated);
	});
};

utils.tellFriendActions = function() {
	$('.sendfriend > a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();

		var messageSubject = '';
		switch($('#postMediaType').val()) {
			case "V": messageSubject = 'Tem vídeo para você no UOL'; break;
			case "F": messageSubject = 'Tem foto para você no UOL'; break;
			case "T": messageSubject = 'Tem texto para você no UOL'; break;
			case "P": messageSubject = 'Tem áudio para você no UOL'; break;
		}
		
		var messageMediaTitle = $('#postMediaTitle').val();
		var messageSkin = "taipei-video";
		
		if ($('.playlist-actions .playlistUrl').length) {
			var messageMediaUrl = $(this).parent().next().val();
			messageMediaTitle = $(this).parents('li').find('.title a').html();
			messageSubject = "Tem playlist para você no UOL";
			messageSkin = "taipei-playlist";
		} else if ($('#playlistUrl').length && $('#playlistUrl').val() != "") {
			var messageMediaUrl = $('#playlistUrl').val();
			messageMediaTitle = document.title;
			messageSubject = "Tem playlist para você no UOL";
			messageSkin = "taipei-playlist";
		} else if ($('#slideShow').length != 0) {
			messageMediaTitle = document.title;
			var messageMediaUrl = $('#slideUrl').val();
			messageSubject = "Tem álbum para você no UOL";
			messageSkin = "taipei-album";
		} else if ($('#postMediaId').val() != "") {
			var messageMediaUrl = 'http://mais.uol.com.br/view/'+$('#postMediaId').val();
		} else {
			var messageMediaUrl = window.location;
		}
		
		utils.tellFriendParams = { "messageSubject":messageSubject, "messageMediaUrl":messageMediaUrl, "messageMediaTitle":messageMediaTitle, "messageSkin":messageSkin }
		utils.showThickBox('tellfriend.vm','Indicar para amigos',450,290);
	});
}

utils.tellFriendCancel = function() {
	tb_remove();
}

utils.tellFriendSuccess = function() {
	utils.showTbMessage('Mensagem enviada com sucesso.','ok');
	setTimeout("tb_remove()",3000);
}
utils.addBookmarkActions = function() {
	$('.savebookmark > a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		utils.showThickBox('favorite_add.vm','Salvar como favorito',450,280);
	});
}
utils.addBookmarkCancel = function() {
	tb_remove();
}
utils.addBookmarkSave = function() {
	var params = utils.addBookmarkSaveParams;
	$.getJSON("/ajax/favourites.html?action=add&mediaId="+postview.mediaId+"&visibility="+params.visibility+"&flavor=json", function(data){
		if (data.result) {
			utils.showTbMessage('Gravado com sucesso nos favoritos','ok');
			setTimeout("tb_remove()",3000);
		} else {
			utils.showTbMessage('Não foi possível gravar nos favoritos.','error');
		}
	});
};

utils.updBookmarkSaveParams = {};
utils.updateBookmarkActions = function() {
	$('.updatevisibility > a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		var tmpParams = $(this).attr('id').split('_');

		utils.updBookmarkSaveParams.idtMedia     = tmpParams[1];
		utils.updBookmarkSaveParams.indMediaType = tmpParams[2];
		utils.updBookmarkSaveParams.currVis      = tmpParams[3];

		utils.showThickBox('favorite_upd.vm?currVis='+utils.updBookmarkSaveParams.currVis,'Alterar compartilhamento',450,280);
	});
}
utils.updateBookmarkCancel = function() {
	tb_remove();
}
utils.updateBookmarkSave = function() {
	var params = utils.updBookmarkSaveParams;
	$.getJSON("/ajax/favourites.html?action=change&mediaId="+params.idtMedia+"&visibility="+params.visibility+"&flavor=json", function(data){
		if (data.result) {
			utils.showTbMessage('Compartilhamento gravado com sucesso','ok');
			setTimeout("tb_remove()",3000);
		} else {
			utils.showTbMessage('Não foi possível gravar o compartilhamento nos favoritos.','error');
		}
	});
};

utils.deleteMediaActions = function() {
	$('.deletemedia > a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		utils.showThickBox('media_remove.vm','Apagar',400,160);
	});
}

utils.deleteMediaCancel = function() {
	tb_remove();
}
utils.deleteMediaSave = function() {
	$.getJSON("/ajax/contentUpdate.html?action=removeSingleFile&mediaId="+postview.mediaId+"&flavor=json", function(data){
		if (data.result) {
			var messageSubject = '';
			switch($('#postMediaType').val()) {
				case "V": messageSubject = 'Vídeo apagado com sucesso.'; break;
				case "F": messageSubject = 'Foto apagada com sucesso.'; break;
				case "T": messageSubject = 'Texto apagado com sucesso.'; break;
				case "P": messageSubject = 'Áudio apagado com sucesso.'; break;
				default:  messageSubject = 'Post apagado com sucesso.'; break;
			}
			utils.showTbMessage(messageSubject,'ok');
			setTimeout("utils.deleteMediaRedir()",3000);
			$("#TB_overlay").click(function () { utils.deleteMediaRedir(); });
		} else {
			utils.showTbMessage('Não foi possível remover o conteúdo.','error');
		}
	});
};

utils.userPostsSearch = function() {
	$('#userPostsSearchForm').submit(function(e){
		var search_term = $('#userPostsSearchTerm').val();
		if(!search_term) {
			alert('O campo da busca deve ser preenchido.');
			$('#userPostsSearchTerm').each(function(){ this.focus() });
			e.preventDefault();
			e.stopPropagation();
			return false;
		} else {
			$("#userPostsSearchTerm_Submit").attr('name', 'q').val( $("#userPostsSearchTerm").removeAttr('name').val() + '+' + $("#ownerCodProfile").val() );
		}
		return true;
	});
}

utils.deleteMediaRedir = function() {
	if($('.zeit-list ul li').length > 1) {
		window.location.reload();
	} else {
		window.location = '/myPage.html';
	}
}

utils.showTbMessage = function(message,type) {
	$('#TB_ajaxContent').html('<dl class="msg '+type+'"><dt>'+message+'</dt></dl>');
}

var zeit = zeit || {};
zeit.showgallery = function() {
	$(".zeit-list")
		.not(".skip")
		.removeClass("zeit-list")
		.addClass("zeit-gallery")
		.find('.medium')
			.removeClass('medium')
			.addClass('large');

	$('.zeit-nav')
		.not(".skip")
		.addClass('showgallery-active')
		.removeClass('showlist-active');
	zeit.heightFix(false);
}

zeit.showlist = function() {
	$(".zeit-gallery").removeClass("zeit-gallery").addClass("zeit-list");
	$('.zeit-nav')
		.addClass('showlist-active')
		.removeClass('showgallery-active');
	$(".zeit-list").find('.large').removeClass('large').addClass('medium');
	zeit.heightFix(true);
	zeit.limitDescription();
}

zeit.setEvents = function() {
	$('.zeit-nav a').unbind("click");

	$('.zeit-nav > .showlist > a').click( function () {
		zeit.showlist();
		MEDIA_SIZE = "medium";
		MEDIA_FORMAT = "list";

		if(utils.getCookie('viewType') != "list"){
			utils.delCookie('viewType');
			utils.createCookie("viewType","list");
		}

		return false;
	});

	$('.zeit-nav > .showgallery > a').click( function () {
		zeit.showgallery();
		MEDIA_SIZE = "large";
		MEDIA_FORMAT = "gallery";

		if(utils.getCookie('viewType') != "gallery"){
			utils.delCookie('viewType');
			utils.createCookie("viewType","gallery");
		}

		return false;
	});
}

zeit.forceView = function(){
	return true;
/*
	if(utils.getCookie('viewType') != "list"){
		zeit.showgallery();
		MEDIA_SIZE = "large";
		MEDIA_FORMAT = "gallery";
	} else {
		zeit.showlist();
		MEDIA_SIZE = "medium";
		MEDIA_FORMAT = "list";
	}
*/
}

zeit.heightFix = function(bList) {
	if ($.grep($('head link'), function(el){ return el.href.match(/2cols\.css/)}).length == 1 ) {
		$('li.media dd.stats').css('paddingTop','0px');
		if (bList) {
			window.setTimeout(function() {
				var list = $('li.media');
				list.css('height','auto');
				var pairs = Math.floor((list.length)/2);
				for (var idxPair = 0; idxPair < pairs; idxPair++) {
					var liLeft = idxPair*2;
					var liRight = liLeft+1;
					var lHeight = list.slice(liLeft,(liLeft+1)).height();
					var rHeight = list.slice(liRight,(liRight+1)).height();

					if (list.slice(liLeft,(liLeft+1)).hasClass('media_shared')) {
						lHeight = lHeight-20;
					}
					if (list.slice(liRight,(liRight+1)).hasClass('media_shared')) {
						rHeight = rHeight-20;
					}

					var diff = lHeight - rHeight;
					if (diff < 0) {
						list.slice(liLeft,(liLeft+1)).css('height',(rHeight)+'px').find('dd.stats').css('paddingTop',((diff)*-1)+'px');
					} else if (diff > 0) {
						list.slice(liRight,(liRight+1)).css('height',(lHeight)+'px').find('dd.stats').css('paddingTop',diff+'px');
					}
				}
			},10);
		} else {
			$('li.media').css('height','272px');
		}
	}
}

zeit.limitDescription = function(){
	$('.zeit-list .media .tags').each( function() {
		var parent = $(this).parents('dl:first');
		if (parent.children('dd.plus').length == 0) {
			parent.addClass('collapsed');
			var plus = $('<dd class="plus"><div /></dd>').click( function() {
					var plusBtn = $(this).children('div:first');
					plusBtn.toggleClass('minus').parents('dl:first').toggleClass('full');
					plusBtn.css('marginTop', (plusBtn.parents('dd:first').height() - plusBtn.height()) )
					zeit.heightFix(true);
				});
			plus.insertAfter($(this));
		}
	});
}

zeit.playlistEvents = function() {
	playlist.addMediaId = "";
	playlist.removeMediaId = "";

	$('.thumb span.addPlaylist').each( function() { playlist.addMedia(this); } );
}

var playlist = playlist || {};
playlist.addMedia = function(elem) {
	$(elem)
		.mouseover( function(e) {
			$(this).addClass('playlistover');
		    if ($('#toolTip').length == 0) {
		        $('body').append('<div id="toolTip">Adicionar à playlist</div>');
		    }
		    $('#toolTip')
		        .show()
		        .css('position','absolute')
		        .css('left',(e.pageX+15)+'px')
		        .css('top',(e.pageY+15)+'px');
		})
		.mousemove(function(e) {
		    $('#toolTip')
		        .css('left',(e.pageX+15)+'px')
		        .css('top',(e.pageY+15)+'px');
		})
		.mouseout( function() {
			$(this).removeClass('playlistover')
			$('#toolTip').hide();
		})
		.click( function() {
			playlist.addMediaId = this.id;
			playlist.playlistId = "";
			$(this).addClass('selectedPlaylist');
			playlist.addMediaExecute();
			$('#toolTip').hide();
		});
}

playlist.addMediaExecute = function() {
	var postData = { 'action': 'add', 'playlistId': playlist.playlistId,  'mediaId' : playlist.addMediaId };
	$.getJSON('/ajax/playlistMedias', postData, function(data) {
		if(data.result) {
			if($('#playlistArea').length) {
				if ( (playlist.playlistId == $('#playlistId').val()) || !playlist.playlistId || !$('#playlistId').length ) {
					playlist.loadContent( ($('#playlistPage').val() || 1) , 'full');
				}
			;}
			if(!playlist.playlistId) { playlist.incrementQuicklist(1) };
		}
	});
}

playlist.initContinuousPlay = function() {
	$('.playlist-actions .play').attr('href', $('#firstMediaUrl').val());
	$('.continuous a').add('.play').click( function(e) {
		e.preventDefault();
		e.stopPropagation();

		utils.createCookie('playlistId', $('#playlistId').val());
		utils.createCookie('playlistPage', $('#playlistPage').val());
		utils.createCookie('autoPlay', 1);

		window.location = this.href;
	})
}

playlist.initCreatePlaylist = function() {
	$('.playlist-actions .save').click( function() {
		//to do: verificar a possibilidade de mesclar com a criar playlist
		playlist.mediaId = "";
		utils.isAuthenticated(function(authenticated) {
			if (authenticated == true) {
				playlist.createPlaylistExecute();
			} else {
				utils.showThickBox('blank.vm','Nova Playlist',500,375);
				utils.showLogin('/static/callback.vm?callback=playlist.createPlaylistExecute','Para criar uma playlist é necessário estar autenticado.');
			}
		});
	});
}

playlist.createPlaylistExecute = function() {
	window.setTimeout( function() {
		$('#TB_ajaxContent').html('');
		utils.showThickBox('createPlaylist.vm?action=create&flavor=script&cb=playlist.createPlaylistResult&mediaId='+playlist.mediaId,'Salvar playlist',480,387);
	}, 1);
}

playlist.createPlaylistResult = function(data) {
	if (data.result) {
		utils.showTbMessage('Playlist criada com sucesso.','ok');
		window.setTimeout( function() {
			tb_remove();
			if ($('#userPlaylist').length) {
				utils.createCookie('playlistId', data.playlistId);
				utils.createCookie('playlistPage', $('#playlistPage').val());
				utils.createCookie('autoPlay', 1);
				window.location.reload();
			} else {
				window.location = $('#saveRedirectUrl').val().replace(/__playlist__/,data.playlistId);
			}
		}, 2000);
	} else {
		utils.showTbMessage('Não foi possível criar sua playlist. Por favor, tente novamente.','error');
	}
}

playlist.incrementQuicklist = function(amount) {
	var mediaCounter = $('li.quickList').find('a span');
	var totalMedias = new Number(mediaCounter.html()) + (amount);
	if (totalMedias > 0 ) {
		mediaCounter.html(totalMedias);
		$('li.quickList').removeClass('hidden').prev().removeClass('last');
	} else {
		$('li.quickList').addClass('hidden').prev().addClass('last');
	}
}

utils.getCookie = function(ck){
	var results = document.cookie.match ( '(^|;) ?' + ck + '=([^;]*)(;|$)' );
	if(results)
		return ( unescape ( results[2] ) );
	else
		return null;
}

utils.delCookie = function(ck){
 	var cookie_date = new Date();
 	cookie_date.setTime (cookie_date.getTime() - 1);
 	document.cookie = ck += "=; expires=" + cookie_date.toGMTString();
}

utils.createCookie = function(name,value,days, path) {
	path = path || '/';
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=" + path;
}

utils.showLogin = function(redirUrl,notAuthMessage,standalone) {
	if (!redirUrl.match(/^http\:\/\/.*?\//gim)) {
		redirUrl = window.location.toString().replace(/^(http\:\/\/.*?\/)(.*)$/gim,'$1')+redirUrl;
	}
	redirUrl = redirUrl.replace(/(http\:\/\/.*?)\/\/(.*)$/gim,'$1/$2');
	if (!standalone) {
		var html = '\n'+
		'<div id="notauth" class="notauthwindow">\n'+
		'	<h3>'+notAuthMessage+'</h3>\n'+
		'	<iframe src="https://acesso.uol.com.br/login.html?skin=taipei-video-iframe&dest=REDIR|'+redirUrl+'" width="520" height="255" name="acesso_iframe" id="acesso_iframe" border="0" frameborder="0"></iframe>\n'+
		'	<p style="text-align:center;"><a href="#" style="color:#005ACF !important; text-decoration:none !important; font-family:Arial,Sans !important; font-size:14px !important;" class="cancelAuth">Cancelar</a></p>'+
		'</div>\n'+
		'';
		if (!notAuthMessage) {
			var notAuthMessage = 'Usuário não autenticado';
		}
		loginWidth = 530;
		loginHeight = 350;
		difWidth = loginWidth - $('#TB_window').width();
		difHeight = loginHeight - $('#TB_window').height();

		prevMarginLeft = parseFloat( ($('#TB_window').css('margin-left')).replace('px','') );
		prevMarginTop = parseFloat( ($('#TB_window').css('margin-top')).replace('px','') );

		prevTop = $('#TB_window').offset().top;
		prevLeft = $('#TB_window').offset().left;
		prevWidth = $('#TB_window').width();
		prevHeight = $('#TB_window').height();
		prevContentWidth = $('#TB_ajaxContent').width();
		prevContentHeight = $('#TB_ajaxContent').height();
		$('#TB_window').css('top',(prevTop)+'px').css('left',(prevLeft)+'px').css('margin-left','0px').css('margin-top','0px');

		$('#TB_ajaxContent').animate({
			width: parseInt(loginWidth-30), height: parseInt(loginHeight-24)
		}, 'medium');
		$('#TB_window').animate({ width: parseInt(loginWidth), height: parseInt(loginHeight), top: parseInt(prevTop-(difHeight/2)), left: parseInt(prevLeft-(difWidth/2)) }, 'medium',null,function() {
			$('#TB_window').css('top','50%').css('left','50%').css('margin-left',((loginWidth/2)*-1)+'px').css('margin-top',(((loginHeight/2)*-1)+12)+'px');
		});
		window.TB_WIDTH = loginWidth;
		window.TB_HEIGHT = loginHeight;
		$('#TB_ajaxContent > iframe').eq(0).slideUp('medium', function(){
			$('#TB_ajaxContent').append(html);
			$('.cancelAuth').addClass('cancelAuthClass').click(function(e) {
				e.stopPropagation();
				e.preventDefault();
				tb_remove();
			});
		});
	} else {
		utils.showThickBox('blank.vm','Autenticação',530,350);
		utils.showLogin(redirUrl,notAuthMessage);
	}
}

utils.putLightFrame = function(redirUrl,frameWidth,frameHeight) {
	if ($('#TB_temp_container').length == 0) {
		$(document.body).append('<div class="hidden" id="TB_temp_container"></div>');
	}
	$('#TB_temp_container').html('<iframe id="TB_temp_window" style="width:'+frameWidth+'px;height:'+frameHeight+'px;" frameborder="0" src="'+redirUrl+'"></iframe>');
}

utils.showThickBox = function(url,title,width,height) {
	if (url.indexOf("http://") == -1 && url.indexOf("https://") == -1) {
		utils.putLightFrame('/static/'+url,width,height);
	} else {
		utils.putLightFrame(url,width,height);
	}
	tb_show(title, 'x?TB_inline=true&height='+height+'&width='+width+'&inlineId=TB_temp_container', null);
}

utils.filterInterval = null;
utils.startFilters = function() {
	var filters = TYPES.split(",");

	if (TYPES == "A") {
		$('#filters dd').addClass("selected");
	} else {
		$(filters).each(function(){
			$("#filters dd a[rel=" + this + "]").parents("dd:first").addClass("selected");
		});
	}

	$('#filters a').click(function(e){
		e.stopPropagation();
		e.preventDefault();

		clearInterval(utils.filterInterval);
		$(this).parents("dd:first").toggleClass("selected");
		utils.setFilterTypes();

		utils.filterInterval = setTimeout(utils.applyFilters, 1500);
	});
}

utils.setFilterTypes = function() {
	var filters = [];
	$("#filters dd.selected a").each(function(){
		filters.push(this.rel);
	});

	TYPES = filters.join(",");
}

utils.applyFilters = function() {
	$("a").each(function(){
		var url = this.href;

		if (url.indexOf("types=") != -1) {
			url = url.replace(/&?types=[^&]+/gim, "");
			url += "&types=" + TYPES;
		} else if (url.indexOf("?") != -1) {
			url += "&types=" + TYPES;
		} else if (url.indexOf("#") != -1) {
			url += "?types=" + TYPES;
		}
	});

	try {
		inits[CURRENT_PAGE]['onfilter'][CURRENT_SECTION].call();
	} catch (e) {
		//console.warn("No onfilter method found for " + CURRENT_PAGE + "#" + CURRENT_SECTION);
	}
};

utils.initInappropriate = function() {
	$(".linkinappropriate").attr("target","_blank");
	$(".user-action-denunciar a").attr("target","_blank");
	$("a.user-action-denunciar").attr("target","_blank");
};

utils.addFriendSaveCodProfile = '';
utils.addFriendActions = function() {
	$('.user-action-add').click(function(e) {
		$(this).attr('href','#');
		e.stopPropagation();
		e.preventDefault();
		var friendProfile = $(this).attr('id').replace(/addfriend_profile_/gim,'');
		if (friendProfile) {
			utils.addFriendSaveCodProfile = friendProfile;
			utils.isAuthenticated(function(isAuth) {
				if (isAuth) {
					utils.addFriendSave();
				} else {
					utils.showLogin('/static/callback.vm?callback=utils.addFriendSave','Por favor, identifique-se para adicionar esta pessoa à sua rede de amigos',true);
				}
			});
		}
	});
};

utils.addFriendSave = function() {
	utils.showThickBox('blank.vm','Adicionar como amigo',400,100);
	$.getJSON("/ajax/friends.html?show=inviteFriend&codProfileTo="+utils.addFriendSaveCodProfile+"&flavor=json", function(data){
		if (data.result == true) {
			utils.showTbMessage('Amigo adicionado com sucesso. Aguarde aprovação.','ok');
			setTimeout("tb_remove()",3000);
		} else {
			utils.showTbMessage('Não foi possível adicionar o usuário como amigo.','error');
		}
	});
};

utils.initConfigPage = function() {
	$('.changeConfig').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		utils.configPage();
	}).css('outline','none');
}

utils.configPage = function() {
	utils.isAuthenticated(function(isAuth){
		if(isAuth) {
			tb_remove();
			utils.showThickBox('http://mais.uol.com.br/pageConfig.html','Configurações',625,499);
			$('#TB_window').css('height','529px');
		} else {
			utils.showLogin('/static/callback.vm?callback=utils.configPage','Por favor, identifique-se para alterar suas opções',true);
		}
	});
}



utils.processUrl = function(param) {
	var strUrl = $('#profile_desUrlProfile').val();
	if (param == 'submit') {
		$.ajax({
			type: "POST",
			data:{"url":strUrl},
			url: "/ajax/config/urlUserVerify.js",
			dataType: "json",
			async: true,
			success: function(data) {
				var dataResult = data.result;
				var flagSubmit = false;
				if (dataResult.match(/[^a-zA-Z0-9_\-\.]gim/)) { dataResult = "invalidUrl"; }
				switch(dataResult) {
					case "success":
						flagSubmit = true;
						break;
					case "sameUrl":
						flagSubmit = true;
						break;
					case "usedUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil informado já existe.');
						flagSubmit = false;
						break;
					case "invalidUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil é inválido.'); flagSubmit = false;
						break;
					case "reservedUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil informado não é permitido.');
						flagSubmit = false;
						break;
					case "emptyUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('não deixe o endereço do perfil vazio.'); flagSubmit = false;
						break;
				}
				if (flagSubmit) {
                	$("form").unbind('submit');
                	$("#formUpdConfig").submit();
				}
			}
		});
	} else if (param == 'blur') {
		$.ajax({
			type: "POST",
			data:{"url":strUrl},
			url: "/ajax/config/urlUserVerify.js",
			dataType: "json",
			async: true,
			success: function(data) {
				var dataResult = data.result;
				if (dataResult.match(/[^a-zA-Z0-9_\-\.]gim/)) { dataResult = "invalidUrl"; }
				switch(dataResult) {
					case "success":
						$('.msg-mini').text(' ').css('display','block').addClass("ok-mini").append('o endereço do perfil informado é válido.');
						break;
					case "sameUrl":
						break;
					case "usedUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil informado já existe.');
						break;
					case "invalidUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil é inválido.');
						break;
					case "reservedUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('o endereço do perfil informado não é permitido.');
						break;
					case "emptyUrl":
						$('.msg-mini').text(' ').css('display','block').addClass("error-mini").append('não deixe o endereço do perfil vazio.');
						break;
				}
			}
		});
	}
};

utils.deleteMessage = function(param) {
	$(param).css('display','none');
	$(param).removeClass("error-mini");
	$(param).removeClass("ok-mini");
	$(param).text(' ');
}

utils.deleteUserPhoto = function() {
	$.ajax({
			type: "POST",
			data:{"action":"removeImageProfile"},
			url: "/pageConfig.html",
			dataType: "json",
			async: true,
			success: function(data) {
				var dataResult = data.result;
				if (dataResult == "success") {
					$('div.change-image').css('display','none');
				}
			}
	});
}

utils.saveConfigPage = function(win) {
	var form = win.document.forms[0];

	var submitter = function(isAuth) {
		if(isAuth) {
			$(form).ajaxSubmit({
				complete: function(d){
					eval("data = " + d.responseText);

					utils.showTbMessage('As configurações foram salvas com sucesso.','ok');
					setTimeout(tb_remove, 3000);
				},
				dataType: 'json'
			});
		} else {
			utils.showLogin('/static/callback.vm?callback=utils.saveConfigPage','Por favor, identifique-se para alterar suas opções',false);
		}
	}

	utils.isAuthenticated(submitter);

	return false;
}

utils.initSortControl = function() {
	$('dl.sort').each(function(){
		$('dt:first a', this).click(function(e){
			if (!$('#objectContainer').length) { $('object').hide(); };
			$('.sort dd').hide();
			$('.sort').removeClass('opened');
			$(this).parents('dl').find('dd').toggle();
			$(this).parents('dl').toggleClass('opened');

			return false;
		});

	});


	$(document).click(function(){
		$('.sort dd').hide();
		$('object').show();
		$('.sort').removeClass('opened');
	});

	$('dl.sort strong')
		.mouseover(function(){
			$(this).addClass('hover');
		})
		.mouseout(function(){
			$(this).removeClass('hover');
		});
}

utils.initCreateGroup = function() {
	$(".addGroupButton").click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		window.location = $(this).attr("name");
	});
}
utils.addGroupProfile = "";
utils.changeUserGroups = function(codProfile,urlParam) {
	if (!urlParam) {
		var urlParam = "";
	} else {
		urlParam = "?"+urlParam;
	}
	utils.addGroupProfile = codProfile;

	var tbTitle = 'Incluir amigo em grupos';
	if (urlParam.indexOf('isInvite=1') != -1) {
		var tbTitle = 'Novo pedido de amizade';
	}
	utils.showThickBox('addFriendGroups.vm'+urlParam,tbTitle,530,300);
}

utils.changeUserGroupsSave = function(groupList) {
	try {
		eval('var currentProfileGroups = profileGroups_'+utils.addGroupProfile+';');
	} catch(e) {
		var currentProfileGroups = [];
	}

	if (currentProfileGroups.length > 0) {
		utils.groupList = groupList;
		var groupNames = [];
		for (var idxRemove = 0; idxRemove < currentProfileGroups.length; idxRemove++) {
			groupNames.push(currentProfileGroups[idxRemove].namGroup);
		}
		utils.iframePost("/ajax/groups.html", { "action":"remove","group":groupNames.join(","),"codProfileTo":utils.addGroupProfile,"flavor":"script", "callback":"utils.changeUserGroupsSaveResult"} );
	} else {
		utils.changeUserGroupsAdd(groupList);
	}
}

utils.changeUserGroupsSaveResult = function(data){
	if (data.result) {
		utils.changeUserGroupsAdd(utils.groupList);
	} else {
		utils.showTbMessage("Houve um erro ao alterar os grupos do usuário.","error");
	}
}

utils.changeUserGroupsAdd = function(groupList) {
	if (groupList.length > 0) {
		var groupNames = [];
		for (var idxAdd = 0; idxAdd < groupList.length; idxAdd++) {
			groupNames.push(groupList[idxAdd].namGroup);
		}

		utils.iframePost("/ajax/groups.html",{ "action":"add","group":groupNames.join(","),"codProfileTo":utils.addGroupProfile,"flavor":"script", "callback":"utils.changeUserGroupsAddResult"});

	} else {
		utils.inviteFinished("Grupos do usuário alterados com sucesso.");
		//utils.showTbMessage("Grupos do usuário alterados com sucesso.","ok");
	}
}

utils.changeUserGroupsAddResult = function(data) {
	if (data.result) {
		utils.inviteFinished("Grupos do usuário alterados com sucesso.");
	} else {
		utils.showTbMessage("Houve um erro ao alterar os grupos do usuário.","error");
	}
}

utils.inviteFinished = function(message) {
	setTimeout("tb_remove();utils.reloadLocation();",2000);
	$("#TB_ajaxWindowTitle").html("Grupos de usuários");
	$("#userData").css("display","none");
	$("#groupData").css("display","none");
	$("#addFriendGroupConfirm").css("display","none");
	$("#addFriendGroupCancel").css("display","none");
	utils.showTbMessage(message,'ok');
}

utils.reloadLocation = function() {
	window.location.reload();
}

utils.listInvites = function() {
	$.getJSON("/ajax/friends.html?show=listInvites&types=A&flavor=json", function(data){
		if (data.content.length > 0) {
			for (var idxInvite = 0; idxInvite < data.content.length; idxInvite++) {
				//eval('var window.profileGroups_'+data.content[idxInvite].userProfile+' = [];');
				var cssClass = (idxInvite+1)%2 == 0 ? 'typeb' : 'typea';
				$(".friendsContainer").append('<div class="inviteFloat '+cssClass+' clearfix profile_'+data.content[idxInvite].userProfile+'"></div>');
				var cssMargin = '';
				$('.profile_'+data.content[idxInvite].userProfile+'').append('<dl></dl>');
				if (data.content[idxInvite].flgImage == "0") {
					$('.profile_'+data.content[idxInvite].userProfile+' dl').append('<dt class="profileImage posImgProfileAbsolute"><img src="http://'+data.content[idxInvite].userProfile+'.uolk.uol.com.br/images/thumb_avatar.jpg" /></dt>');
					cssMargin = ' marginProfileImage';
				}
				$('.profile_'+data.content[idxInvite].userProfile+' dl').append('<dd class="profileNick'+cssMargin+'"><a href="/content.html?types=A&action=contentsFromAuthor&codProfile='+data.content[idxInvite].userProfile+'">'+data.content[idxInvite].userName+'</a><span>quer fazer parte da sua rede de amigos</span></dd>');
				$('.profile_'+data.content[idxInvite].userProfile+' dl').append('<dd class="'+cssMargin+'"><ul class="clearfix"><li class="inviteYes"><a href="" id="confirm_'+data.content[idxInvite].userProfile+'" class="actionConfirmInvite">É amigo</a></li><li class="inviteNo"><a href="" id="reprove_'+data.content[idxInvite].userProfile+'" class="actionReproveInvite">Não é amigo</a></li></ul></dd>');
			}
			utils.initInvites();
		}
	});
}

utils.initFriendDetails = function() {
	friends.currentProfile = false;
	$('.friendContent').mouseover(function(e){
		e.stopPropagation();
		e.preventDefault();
		var matches = $(this).attr('class').match(/profile_([^ ]+)/);
		if  (matches) {
			if (friends.currentProfile != matches[1]) {
				friends.currentProfile = matches[1];
				$('.friendContent').css('border','2px solid #fff');
				$('.userPlus').hide();
				$('.userPlusBox').hide();
				$(this).css('border','2px solid #aaa');
				$('.userPlus',this).css('display','block').attr('src','http://mais.i.uol.com.br/images/bot-mais.gif');
			} else {
				return false;
			}
		}
		return false;
	});

	$('.userPlus').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		if ($(this).attr('src').match(/menos/gim)) {
			$(this).attr('src','http://mais.i.uol.com.br/images/bot-mais.gif');
			$("#userPlusBox_"+friends.currentProfile).hide();
		} else {
			if($(this).parents('.friendContent').attr('class').match(/typea/gim)){
				var cor = '#fff';
			} else {
				var cor = "#f3f3f3";
			}
			$(this).attr('src','http://mais.i.uol.com.br/images/bot-menos.gif');
			$("#userPlusBox_"+friends.currentProfile).css('background',cor).show();
		}
	});

	$('body').click(function(){
		$('.friendContent').css('border','2px solid #fff');
		$('.userPlus').hide();
		$('.userPlusBox').hide();
	});

	$('body').mouseover(function(){
		if (friends.currentProfile) {
			friends.currentProfile = false;
			$('.friendContent').css('border','2px solid #fff');
			$('.userPlus').hide();
			$('.userPlusBox').hide();
		}
	});
}

utils.delTagCancel = function(){
	tb_remove();
}

utils.delTagName = '';
utils.delTag = function(delTagName,url) {
	utils.delTagName = delTagName;
	utils.url = url;
	utils.showThickBox('tag_remove.vm','Exclusão de tag',400,150);
}

utils.delTagCancel = function() {
	tb_remove();
}

utils.delTagSave = function(url) {
	$.getJSON(url,
		function(data){
			if (data.result == false) {
				utils.showTbMessage('Não foi possível a tag '+utils.delFriendNick+'.','error');
			} else {
				window.location.reload();
			}
		}
	);

}

utils.validationError = function(el,msg) {
	$('#'+el+'_error').removeClass('hide').html(msg);
	//$('#'+el).addClass('fieldError');
	$('#'+el).focus(function() {
		//$(this).removeClass('fieldError');
		$('#'+el+'_error').addClass('hide');
		//$(this).unbind('focus');
	});
}


utils.removeFavouriteSaveParams = {};
utils.removeFavouriteActions = function() {
	$('.removefavourite a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		var tmpParams = $(this).attr('id').split('_');

		utils.removeFavouriteSaveParams.idtMedia     = tmpParams[1];
		utils.removeFavouriteSaveParams.indMediaType = tmpParams[2];

		utils.showThickBox('favorite_remove.vm','Remover dos favoritos',450,280);
	});
}

utils.removeFavouriteCancel = function() {
	tb_remove();
}

utils.removeFavouriteSave = function() {
	var params = utils.removeFavouriteSaveParams;
	$.getJSON("/ajax/favourites.html?action=remove&mediaId="+params.idtMedia+"&flavor=json", function(data){
		if (data.result) {
			utils.showTbMessage('Post removido dos favoritos','ok');
			setTimeout("tb_remove()",3000);
			setTimeout("location.reload()", 3500);
		} else {
			utils.showTbMessage('Não foi possível remover o post dos favoritos.','error');
		}
	});
}

zeit.currentFrameTimer = null;
zeit.currentFrameNum = 0;
zeit.currentFrameIdent = null;
zeit.currentFrameSize = null;
zeit.currentFrameObj = null;
zeit.setVideoFrames = function() {
	$('.thumb.video img').not('.hot, .hasFrames').addClass('hasFrames').mouseover(zeit.frameIn);
	$('.thumb.video img').not('.hot').mouseout(zeit.frameOut);
}

zeit.frameIn = function quadradinho (e) {
	e.stopPropagation();
	if (!$(this).attr('src').match(/_err_/gim)) {
		//zeit.currentFrameIdent = $(this).attr('src').replace(/(.+\/[a-zA-Z0-9]{1}\/[a-zA-Z0-9]{2}\/[a-zA-Z0-9]{2}\/[0-9]+).+/gim,'$1');
		zeit.currentFrameIdent = $(this).attr('src').replace(/(\/.+\/[0-9]+)-[a-zA-Z]+\.[a-zA-Z]+$/gim,'$1');
		zeit.currentFrameObj = $(this);
		zeit.currentFrameNum = 0;
		zeit.currentFrameSize = 'large';
		if ($(this).parents('.thumb').is('.medium')) {
			zeit.currentFrameSize = 'medium';
		} else if ($(this).parents('.thumb').is('.xsmall')) {
			zeit.currentFrameSize = 'small';
		}
		zeit.currentFrameTimer = window.setInterval('zeit.changeFrame()',1000);
	}
	return false;
}

zeit.frameOut = function bolinha (e) {
	e.stopPropagation();
	if (zeit.currentFrameIdent) {
		var currSrc = $(this).attr('src');
		zeit.currentFrameNum = 0;
		var size = 'large';
		if ($(this).parents('.thumb').is('.medium')) {
			size = 'medium';
		} else if ($(this).parents('.thumb').is('.xsmall')) {
			size = 'small';
		}
		$(this).attr('src',zeit.currentFrameIdent+'-'+zeit.currentFrameSize+'.jpg');
		window.clearInterval(zeit.currentFrameTimer);
	}
	zeit.currentFrameTimer = null;
	zeit.currentFrameIdent = null;
	return false;
}

zeit.changeFrame = function() {
	zeit.currentFrameObj.attr('src',zeit.currentFrameIdent+'-'+zeit.currentFrameNum+'.jpg');
	zeit.currentFrameNum++;
	if (zeit.currentFrameNum > 9) {
		zeit.currentFrameNum = 0;
	}
}

;(function($){
	jQuery.fn.inject = function(sendurl,params,scope,callback) {
		var element = $(this);
		$.ajax({
			url:sendurl,
			data:params,
			beforeSend:function(xhrhandler) {
				try { xhr[scope].abort(); } catch(e) {  }
				xhr[scope] = xhrhandler;
			},
			complete:function(xhrhandler,status) {
				if (typeof callback == 'function') {
					callback.call(element,xhrhandler);
				} else {
					element.html(xhrhandler.responseText);
				}
			}
		});
	}
})(jQuery);

utils.forceRateImg = function(){
	$('.rating img').each(function(){

		var att = $(this).attr('src');
		var tgt = att.toString().replace(/.+([0-9]{2}).+/gim,'$1');
		var a = tgt.charAt(0);
		var b = tgt.charAt(1);
		var tmp = a.toString() + b.toString()
		if(b < 3)
			b = 0;
		else if(b > 7){
			b = 0;
			a = eval(a) + 1;
		}
		else
			b = 5;

		var result = a.toString() + b.toString();
		var final = $(this).attr('src').replace(tmp,result);
		$(this).attr('src',final);
	});
}

utils.showFlash = function() {
	$('object').css('visibility','visible');
	$('embed').css('visibility','visible');
}
utils.hideFlash = function() {
	$('object').css('visibility','hidden');
	$('embed').css('visibility','hidden');
}

utils.calendarMaxDate = 0;
utils.calendarCurDate = 0;
utils.getContentCalendar = function(month,year) {
	month = parseFloat(month);
	if (month < 10) {
		month = '0'+month.toString();
	}
	utils.calendarCurDate = parseFloat(year+''+month+'');

	var codProfileConsult = $('#codprofile_calendar').val();
	var strCodProfile = '';
	if (codProfileConsult) {
		strCodProfile = '&codProfile='+codProfileConsult;
	}

	$('#dateListContainer').html('');

	if ($('#calendarUrl').val() != undefined) {
		var urlToGet = $('#calendarUrl').val();
	} else {
		if (strCodProfile == '') {
			var urlToGet = '/ajax/myContentCalendar.js?getCal';
		} else {
			var urlToGet = '/ajax/contentCalendar.js?getCal';
		}
	}
	$('#dateListContainer').load(urlToGet+'&month='+month+'&year='+year+strCodProfile+'',false,function(e) {
		utils.fixFeaturesPosition();
	});
}

utils.initCalendar = function() {
	if ($('#dateListContainer').length > 0) {
		if (!month || !year) {
			var tmpDate = $('#currDateFilter').val();
			var arrTmpDate = tmpDate.split('/');
			if (tmpDate.length == 10) {
				var month = arrTmpDate[1];
				var year = arrTmpDate[2];
			} else if(tmpDate.length == 7) {
				var month = arrTmpDate[0];
				var year = arrTmpDate[1];
			} else {
				return false;
			}
		}

		if (utils.calendarMaxDate == 0) {
			var tmpMaxDate = $('#maxDateFilter').val();
			if (tmpMaxDate.length != 10) {
				return false;
			}
			var arrTmpMaxDate = tmpMaxDate.split('/');
			utils.calendarMaxDate = parseFloat(arrTmpMaxDate[2]+''+arrTmpMaxDate[1]);
		}
		utils.calendarCurDate = parseFloat(year+''+month+'');

		$('.calendar_prev a').click(function(e) {
			e.stopPropagation();
			e.preventDefault();
			var month = utils.calendarCurDate.toString().substr(4,2);
			var year = utils.calendarCurDate.toString().substr(0,4);
			if (month == '01') {
				month = '12';
				year = year-1;
			} else {
				month = month-1;
			}
			utils.getContentCalendar(month,year);
		});
		$('.calendar_next a').click(function(e) {
			e.stopPropagation();
			e.preventDefault();
			var month = utils.calendarCurDate.toString().substr(4,2);
			var year = utils.calendarCurDate.toString().substr(0,4);
			if (month == '12') {
				month = 1;
				year = parseFloat(year)+1;
			} else {
				month = parseFloat(month)+1;
			}
			if (month < 10) {
				month = '0'+month.toString();
			}
			if (parseFloat(year+''+month+'') > utils.calendarMaxDate) {

			} else {
				utils.getContentCalendar(month,year);
			}
		});
		utils.getContentCalendar(month,year);
	}
}

utils.initExternalLinks = function() {
	console.info('init external link');
	$('.postInfo .postExtraInfo a, .media .description a, div.postContentText a').each(function() {
		var insideLinkText = $(this).html();
		if(insideLinkText && insideLinkText != "" && insideLinkText != null) {
		$(this).addClass('URIEncoded').attr('href','http://'+Base64.encode($(this).attr('href'))).html(insideLinkText);
		$(this).click(function(e) {
			var strLink = Base64.decode($(this).attr('href').replace(/http\:\/\//gim,''))
			$(this).attr('target','_blank');
			if (strLink != '' && strLink != '#' && !strLink.match('\.uol\.com\.br')) {
				e.stopPropagation();
				e.preventDefault();
				utils.confirmExternalLink($(this));
			} else if(strLink.match('\.uol\.com\.br')) {
				e.stopPropagation();
				e.preventDefault();
				window.open(strLink);
			} else {
				return false;
			}
		});
		}
	});
}

utils.confirmExternalLinkUrl = '';
utils.confirmExternalLink = function(objLink) {
	utils.confirmExternalLinkUrl = Base64.decode(objLink.attr('href').replace(/http\:\/\//gim,''));
	utils.showThickBox('confirm_external_access.vm','Confirmação de acesso',450,190);
}

utils.confirmExternalLinkOpen = function(url) {
	window.open(url);
}

utils.fixFeaturesPosition = function() {
	$('.blfeature').css('position','static');
	$('.blfeature').css('position','relative');
}


utils.dartParams = {};
utils.parseDartData = function(advDartType, advSyncHtml, advSyncClickTag, advSyncTrackingTag, advSyncWidth, advSyncHeight, advSyncHtml2, advSyncClickTag2, advSyncTrackingTag2, advSyncWidth2, advSyncHeight2) {
	utils.dartParams.type = advDartType;
	utils.dartParams.url = advSyncHtml;
	utils.dartParams.clickTag = advSyncClickTag;
	utils.dartParams.trackingTag = advSyncTrackingTag;
	utils.dartParams.width = advSyncWidth;
	utils.dartParams.height = advSyncHeight;
	utils.dartParams.url2 = advSyncHtml2;
	utils.dartParams.clickTag2 = advSyncClickTag2;
	utils.dartParams.trackingTag2 = advSyncTrackingTag2;
	utils.dartParams.width2 = advSyncWidth2;
	utils.dartParams.height2 = advSyncHeight2;
}

utils.parseDartEvent = function(ev) {
	switch(utils.dartParams.type.toString()) {
		case "1":
			if (ev == 'advin') {
				utils.putDartBanner(utils.dartParams.url,utils.dartParams.clickTag,utils.dartParams.trackingTag,utils.dartParams.width,utils.dartParams.height);
			}
		break;
		case "2":
			if (ev == 'advin') {
				utils.putDartBanner(utils.dartParams.url,utils.dartParams.clickTag,utils.dartParams.trackingTag,utils.dartParams.width,utils.dartParams.height);
			} else if (ev == 'advout') {
				utils.putDartBanner(utils.dartParams.url2,utils.dartParams.clickTag2,utils.dartParams.trackingTag2,utils.dartParams.width2,utils.dartParams.height2);
			}
		break;
		case "3":
			if (ev == 'advin') {
				utils.putDartBanner(utils.dartParams.url,utils.dartParams.clickTag,utils.dartParams.trackingTag,utils.dartParams.width,utils.dartParams.height);
			}
		break;
		case "4":
			if (ev == 'mainvideo') {
				utils.putDartBanner(utils.dartParams.url,utils.dartParams.clickTag,utils.dartParams.trackingTag,utils.dartParams.width,utils.dartParams.height);
			} else if (ev == 'advout') {
				utils.putDartBanner(utils.dartParams.url2,utils.dartParams.clickTag2,utils.dartParams.trackingTag2,utils.dartParams.width2,utils.dartParams.height2);
			}
		break;
	}
}

utils.putDartBanner = function(url,clickTag,trackingTag,width,height) {
	if($('.postBody #rightMiddleContent').length) {
		var flashVarsEmbed = '';
		var flashVarsObject = '';
		if (clickTag) {
			//clickTag = clickTag.replace(/\&/gim,'&amp;');
			clickTag = escape(clickTag);
			flashVarsEmbed = 'flashvars="clickTag='+clickTag+'"';
			flashVarsObject = '<param name="FlashVars" value="clickTag='+clickTag+'" />';
		}
		if (!width) {
			var width = '240';
		}
		if (!height) {
			var height = '200';
		}
		$('#lateralContainerAd').remove();
		$('.postBody #rightMiddleContent').prepend('<div id="lateralContainerAd" style="text-align:center !important;"><div id="closeLateralAd"><a href="#">fechar</a></div><object width="'+width+'" height="'+height+'">'+flashVarsObject+'<param value="'+url+'" name="movie"/><param value="transparent" name="wmode"/><param value="best" name="quality"/><embed width="'+width+'" height="'+height+'" type="application/x-shockwave-flash" src="'+url+'" quality="best" wmode="transparent" '+flashVarsEmbed+' /></object></div>');
		$('#closeLateralAd a').click(function(e) {
			e.stopPropagation();
			e.preventDefault();
			$('#lateralContainerAd').slideUp('slow');
		});
		if (trackingTag) {
			$('body').append('<div style="display:none;"><img src="'+trackingTag+'" /></div>');
		}
	}
}
/*
utils.parseDartData = function(url,clickTag,width,height) {
	var flashVarsEmbed = '';
	var flashVarsObject = '';
	if (clickTag) {
		clickTag = clickTag.replace(/\&/gim,'&amp;');
		console.info(clickTag);
		flashVarsEmbed = 'flashvars="clickTag='+clickTag+'"';
		flashVarsObject = '<param name="FlashVars" value="clickTag='+clickTag+'" />';
	}
//	if (!width) {
		var width = '240';
//	}
//	if (!height) {
		var height = '200';
//	}
	$('#rightMiddleContent').prepend('<div id="lateralContainerAd" style="text-align:center !important;"><div id="closeLateralAd"><a href="#">fechar</a></div><object width="'+width+'" height="'+height+'">'+flashVarsObject+'<param value="'+url+'" name="movie"/><param value="transparent" name="wmode"/><param value="best" name="quality"/><embed width="'+width+'" height="'+height+'" type="application/x-shockwave-flash" src="'+url+'" quality="best" wmode="transparent" '+flashVarsEmbed+' /></object></div>');
	$('#closeLateralAd a').click(function(e) {
		e.stopPropagation();
		e.preventDefault();
		$('#lateralContainerAd').slideUp('slow');
	});
}
*/






utils.setTagCloudState = function (state) {
	document.cookie='tagCloudState='+state;
}

utils.getTagCloudState = function () {
	if (utils.getCookie('tagCloudState') == 'list') {
		return 'list';
	} else {
		return 'cloud';
	}
}

var Base64 = {
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	encode : function (input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = Base64._utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output +
			this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
			this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
		}
		return output;
	},

	// public method for decoding
	decode : function (input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = Base64._utf8_decode(output);
		return output;
	},
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while ( i < utftext.length ) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}
}

utils.iframePost = function(postUrl, dataParams) {
	$('body').remove("#postFrame, #postForm");
	var newFrame = $('<iframe id="postFrame" name="postFrame" src="javascript:;" />');
	var newForm = $('<form id="postForm" action="'+ postUrl +'" method="post" target="postFrame" />');
	for(param in dataParams) {
		//console.info(dataParams[param]);
		var field = document.createElement('input');
		field.setAttribute("type", "hidden");
		field.setAttribute("name", param);
		field.setAttribute("value", dataParams[param]);
		newForm.append(field);
		//newForm.append('<input type="hidden" name="'+ param +'" value="' + dataParams[param]+ '" />');
	}
	$('body').append(newFrame).append(newForm);
	newForm.submit();
}

utils.setMediaCookieEvents = function() {
	if ($('.postBody').filter('.postVideo').length == 0) {
		var date = new Date();
		date.setTime((date.getTime()-3600000));
		var expires = "; expires="+date.toGMTString();
		document.cookie = "maiskey="+expires+"; path=/";
	}
	$('a.hasKeyData').click(function(e) {
		var classData = $(this).attr('class').split(' ');
		if (classData.length > 0) {
			for (var idxClass = 0; idxClass < classData.length; idxClass++) {
				if (classData[idxClass].match(/^key_[a-zA-Z0-9]+$/gim)) {
					var keyName = classData[idxClass];
				}
			}
		}
		if (keyName) {
			try {
				var maiskey = uolmais.keyList[keyName].k;
				var date = new Date();
				date.setTime(date.getTime()+(1*24*60*60*100000));
				var expires = "; expires="+date.toGMTString();
				document.cookie = "maiskey="+maiskey+expires+"; path=/";
			} catch(e) {  }
		}
	});
}


utils.getFlashVersion = function(){

	//Exemplo de tratamento do retorno da funcao
	//version = getFlashVersion().split(',').shift();

	// ie
	try {
		try {
			// avoid fp6 minor version lookup issues
			// see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
			var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
			try { axo.AllowScriptAccess = 'always'; }
			catch(e) { return '6,0,0'; }
		} catch(e) {}
			return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
			// other browsers
	} catch(e) {
		try {
			if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
				return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
			}
		} catch(e) {}
	}
	return '0,0,0';
}

utils.formatErrorMessage = function(obj, glue, attribute){
	var output = new Array();
	glue = glue || '<br />';
	attribute = attribute || 'description';
	for(message in obj) {
		output.push(obj[message][attribute]);
	}
	return output.join(glue);
}

function adsShopping(adsArray, position, skin) {
	if(adsArray.length > 0) {
		MAX_ADS = adsArray.length;
		var adHTML = ''; 
		adHTML += '<dl class="anuncio-uol-mais shopping'+position+'">';
			adHTML += '<dt class="ads-header">';
				adHTML += '<img src="http://lp.i.uol.com.br/af/ads/topo_shopping.gif" alt="Shopping UOL" \/>';
				adHTML += '<div class="ads-anuncie">';
					adHTML += '<a href="http://ca.shopping.uol.com.br">Anuncie aqui<\/a>';  
				adHTML += '<\/div>';
			adHTML += '<\/dt>';
			for(i in adsArray){
			
			var redirUrl = adsArray[i][3];
			
			try{
				if (skin) {
					redirUrl += '&par='+skin;
				}
			}catch(e){null}; 
			
			adHTML += '<dd class="ads-content">';
				adHTML += '<p>';
					adHTML += '<a href="'+ redirUrl +'" target="_blank" class="'+((i%2>0)?'AdImpar':'AdPar')+((i==MAX_ADS)?' LastAd':'')+'">';  
						adHTML += '<span class="adImagem"><img src="' + adsArray[i][2] +'" alt="' + adsArray[i][0] + '" \/><\/span><br \/>';
						adHTML += '<span class="adTitulo">' + adsArray[i][0]+'<\/span><br \/>';
						adHTML += '<span class="adTexto">' + wordbreak(adsArray[i][1]) + '<\/span>';
					adHTML += '<\/a>';
				adHTML += '<\/p>'; 
			adHTML += '<\/dd>';    
			}
		adHTML += '<\/dl>'
		adHTML += '<div class="shopping0-footer"><a href="http://mais.uol.com.br/affiliated.html">Você também pode faturar com seu conteúdo no UOL Mais</a></div>';
		document.write(adHTML); //usar append?
		adArray = [];
	}
}

function adsLinks(adsArray, position) {
	if(adsArray.length > 0) {
		var MAX_ADS = adsArray.length;
        var adHTML = ''; 
        adHTML += '<dl class="anuncio-uol-mais lp'+position+'">';
            adHTML += '<dt class="ads-header">';
                adHTML += '<img src="http://lp.i.uol.com.br/af/ads/topo_lp.gif" alt="UOL Links Patrocinados" \/>';
                adHTML += '<div class="ads-anuncie">';
                    adHTML += '<a href="http://linkspatrocinados.uol.com.br">Anuncie aqui</a>';  
                adHTML += '<\/div>';
            adHTML += '<\/dt>';
            for(i in adsArray){
            adHTML += '<dd class="ads-content">';
                adHTML += '<p>';
                    adHTML += '<a href="'+adsArray[i][4]+'" target="_blank" class="'+((i%2>0)?'AdImpar':'AdPar')+((i==MAX_ADS)?' LastAd':'')+' AdBox">';  
                        adHTML += '<span class="adTitulo">' + adsArray[i][0]+'<\/span><br \/>';
                        adHTML += '<span class="adTexto">' + adsArray[i][1] + " " + adsArray[i][2]+'</span><br \/>';
                        adHTML += '<span class="adLink">' + wordbreak(adsArray[i][3]) + '<\/span>';
                    adHTML += '<\/a>';
                adHTML += '<\/p>'; 
            adHTML += '<\/dd>';    
            }
        adHTML += '<\/dl>';
        adHTML += '<div class="shopping0-footer"><a href="http://mais.uol.com.br/affiliated.html">Você também pode faturar com seu conteúdo no UOL Mais</a></div>';
        document.write(adHTML); //usar append?
		adArray = [];
	}
}

function wordbreak(str){
	str = str.replace(/(\.|\-|\/)([^\s\d])/g,"$1<wbr \/>$2");
	if(str.match(/([a-zA-Z]{24,})/)){
		var sLongWord = RegExp.$1;
		var reLongWord = new RegExp(sLongWord);
		sLongWord = sLongWord.substring(0,23) + "<wbr \/>" + sLongWord.substring(23,sLongWord.length);
		str = str.replace(reLongWord,sLongWord);
	}
	str = str.replace(/_/g,"_<wbr \/>");
	var sUA = navigator.userAgent;
	if(sUA.match(/(Opera|AppleWebKit)/)){
		str = str.replace(/<wbr \/>/g,"&#8203;")
	}
	return str;
}

var adArray = adArray || [];