Utils = function () {
	this.Utils = Utils;
	this.name = 'Util';
	this.version = '1.0v';
	this._link = '#';
 	this.enviaAmigo = new EnviaAmigo();
  	this.enviaAmigo.init();
}

var utils = Utils.prototype;

utils.newWindow = function() { window.open(this._link) };

utils.openWindow = function(windowName, features) { window.open(this._link, windowName, features); }

utils.exec = function(cmd,link)
{
	this._link = link;
	eval("this."+cmd);
}

utils.moveBanner = function(nameDivOas, nameDivOasDisplay) 
{
	var elemDivOas = document.getElementById(nameDivOas);
	var elemDivOasDisplay = document.getElementById(nameDivOasDisplay);
	if(elemDivOasDisplay != null){
		elemDivOasDisplay.appendChild(elemDivOas);
		elemDivOas.style.display='block';
	}
}

utils.getBrowse = function()
{
	if(navigator.userAgent.indexOf('Mac_PowerPC') > -1)
	{
		return("MAC");
	}
	else if(navigator.userAgent.indexOf('MSIE 6.0') > -1)
	{
		return("WINIE");	
	}
	else if(navigator.userAgent.indexOf('Gecko') > -1)
	{
		return("MOZILLA");
	}
}

Cookie = function () {
	this.Cookie = Cookie;
	this.name = 'Cookie';
	this.version = '1.0v';
}

var cookie = Cookie.prototype;

cookie.getValue = function(offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1)
	   endstr = document.cookie.length;
	   return unescape(document.cookie.substring(offset, endstr));
}

cookie.get = function(name) {
	 var arg = name + "=";
	 var alen = arg.length;
	 var clen = document.cookie.length;
	 var i = 0;

	 while (i < clen) 
	 {           
	  var j = i + alen;									   
	  if (document.cookie.substring(i, j) == arg)
		  return this.getValue(j);
		  i = document.cookie.indexOf(" ", i) + 1;
	  if (i == 0) 
		  break; 
	 }
	 return null;
}

Passaporte = function (codSite,codRecurso) {
	this.Passaporte = Passaporte;
	this.name = 'Passaporte';
	this.version = '1.0v';
	this.Cookie = new Cookie();
	
	this.codSite = codSite;
	this.codRecurso = codRecurso;	
}

var passaporte = Passaporte.prototype;

passaporte.logout = function()
{
	pathname = location.pathname;
	myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/';
	var largeExpDate = new Date();
	largeExpDate.setTime(largeExpDate.getTime() + (60 * 24 * 3600 * -1000));
	SetCookie('usuario',"unknown",largeExpDate,myDomain);
	SetCookie('Ticket',"unknown",largeExpDate,myDomain);
	this.display();
}

passaporte.login = function()
{
	var inputUsuarioValue = eval("document.loginForm.elements['loginHlp.autenticacaoTo.login'].value");
	var inputSenhaValue = eval("document.loginForm.elements['loginHlp.autenticacaoTo.senha'].value");
	if((inputUsuarioValue.indexOf('@',0) < 0) || (!inputSenhaValue)) {
		alert('Email e senha são obrigatórios.');		
	} else {
		document.loginForm.submit();
	}
}

passaporte.display = function() {

	this.pstLogin = document.getElementById('pstLogin');
	this.pstLogout = document.getElementById('pstLogout');		

	if( ( this.Cookie.get('usuario') == null) && (this.Cookie.get('ticket') == null) ) {
		document.loginForm.URL_RETORNO.value = window.location.href;
		
		this.pstLogin.style.display = 'block';
		this.pstLogout.style.display = 'none';
	} else {
		this.pstLogin.style.display = 'none';
		this.pstLogout.style.display = 'block';
	}
}

passaporte.meuRegistro = function() {
	userCookie = this.Cookie.get('usuario');

	var codigo = '';
	
	if(userCookie != null) {
		valores = userCookie.split(';');
		codigo = valores[0];
	}

	if(userCookie == null) {
		location.replace('http://passaporte.abril.com.br/alteraUsuario.do?metodo=prepararAlterarDadosUsuario&COD_SITE=' + this.codSite + '&COD_RECURSO='+this.codRecurso+'&URL_RETORNO='+window.location.href);
	} else {
		location.replace('http://passaporte.abril.com.br/alteraUsuario.do?metodo=prepararAlterarDadosUsuario&COD_SITE=' + this.codSite + '&COD_RECURSO='+this.codRecurso+'&URL_RETORNO='+window.location.href);
	}
}

passaporte.getUsuario =  function() {
	userCookie = this.Cookie.get('usuario');
	if (userCookie != null) {
		var Usuario = new Array;
		Usuario = userCookie.split(';');
		for(var x=0;x < Usuario.length;x++) {
			Usuario[x] = Usuario[x].replace(/\+/gi, " ")
		}
		return Usuario;
	} else {
		return "Não existe o nome do usuário.";
	}
};

Publicidade = function () {
	this.Publicidade = Publicidade;
	this.name = 'Publicidade';
	this.version = '1.0v';
	this.listPos = '';
	this.sitePage = '';	
};

var publi = Publicidade.prototype;

publi.prepare = function(listaPublicidade) {
	var publiDefault = new Array();
	var publiHome = new Array();
	var publiAtual = new Array();
	var url = window.location.pathname;
		
	if(url.indexOf("/red/blogs/") >= 0){	
		canal = "blogs";
	}		
		
	for(var i=0;i <listaPublicidade.length; i++) {

		if(listaPublicidade[i]['canal'] == 'default') {
			publiDefault['listPos'] = listaPublicidade[i]['listPos'];
			publiDefault['sitePage'] = listaPublicidade[i]['sitePage'];
		}
		if(listaPublicidade[i]['canal'] == 'home') {
			publiHome['listPos'] = listaPublicidade[i]['listPos'];
			publiHome['sitePage'] = listaPublicidade[i]['sitePage'];
		}
		if(listaPublicidade[i]['canal'] == canal) {
			publiAtual['listPos'] = listaPublicidade[i]['listPos'];
			publiAtual['sitePage'] = listaPublicidade[i]['sitePage'];
		}
		if(listaPublicidade[i]['canal'] == 'sumario2027' && url.indexOf("sumario2027.html") > 0){
			publiAtual['listPos'] = listaPublicidade[i]['listPos'];
			publiAtual['sitePage'] = listaPublicidade[i]['sitePage'];		
		}		
	}	
	

	if(publiAtual['listPos']) {
		this.listPos = publiAtual['listPos'];
		this.sitePage = publiAtual['sitePage'];
	} else if(publiDefault['listPos']) {
		this.listPos = publiDefault['listPos'];
		this.sitePage = publiDefault['sitePage'];
	} else if(publiHome['listPos']) {
		this.listPos = publiHome['listPos'];
		this.sitePage = publiHome['sitePage'];
	}
};




EnviaAmigo = function () {
	this.EnviaAmigo	= EnviaAmigo;
	this.name	= 'Envia Amigo';
	this.version	= '1.0v';
	this.dominio = 'http://portalexame.abril.com.br/';
	this.Cookie	= new Cookie();
	this.Passaporte = new Passaporte();
}

var enviaamigo = EnviaAmigo.prototype;

enviaamigo.send = function() {
 	if( ( this.Cookie.get('usuario') == null) && (this.Cookie.get('ticket') == null) ){
		location.replace('http://passaporte.abril.com.br/autenticaUsuario.do?metodo=checarTipoAutenticacao&COD_SITE=35&COD_RECURSO=83&URL_RETORNO=' + escape(window.location + '?enviaEmail=true'));
		return false;
	}

	var wEnv = window.open(this.dominio+'envieamigo/html0057015.html', 'PopEnviar', 'width=430,height=400,left=0,top=0');
  	wEnv.focus();
}

enviaamigo.init = function() {
  	if(document.URL.indexOf("enviaEmail=true")>0)	{
  		this.removeParameter();
  		this.send();
	}
}

enviaamigo.removeParameter = function(){
	var url = document.location.href;
	var par = new Array;
	var parNew = new Array;
	var count = 0;
	if(url.indexOf("enviaEmail=true") != -1){
		par = url.substr(url.indexOf("?")+1,url.length).split('&');
		for(i=0;i<par.length;i++){
			if(par[i] != 'enviaEmail=true'){
				parNew[count] = par[i];
				count++;
			}
		}
		if(parNew.length > 0){
			document.location.href = url.substr(0, url.indexOf("?")) + '?' + parNew.join('&');
		}
	}
}

Email = function () {
	this.Email = Email;
	this.name = 'Email';
	this.version = '1.0v';
}

var email = Email.prototype;

email.validator = function (email) {
	invalidChars = " /:,;"
	if (email == "") return false;

	for (i=0; i<invalidChars.length; i++) {
		badChar = invalidChars.charAt(i);
		if (email.indexOf(badChar,0) > -1) return false;
	}

	atPos = email.indexOf("@",1);
	if ((atPos == -1) || (email.indexOf("@",atPos+1) != -1)) return false;
	periodPos = email.indexOf(".",atPos)
	if ((periodPos == -1) || (periodPos+3 > email.length)) return false;
	return true;
}

/* Função que checa se os emails são válidos e se a quantidade de nomes é igual a quantidade de emails
Os valores das variáveis "nomesValue" e "emailsValue" devem estar sepadaros por ";" */
email.checkAllEmail = function(nomesValue, emailsValue){
	var nomes = new Array();
	nomes = nomesValue.split(";");

	if(emailsValue == "") return false;

	var re=/[ +]/g;
	emailsValue = emailsValue.replace(re,"");

	var emails = new Array();
	emails = emailsValue.split(";");

	if(nomes.length > 1) {
		if(nomes.length != emails.length) {
			alert("O campo de nome e endereço do destinatário devem ter a mesma quantidade.");
			return false;
		}
	}

	for (var i=0;i<emails.length;i++) {
		if (!this.validator(emails[i])) {
			alert("Por favor preencha corretamente o campo do endereço do destinatário.");
			return false;
		}
	}
	return true;
}

DateHour = function () {
	this.DateHour = DateHour;
	this.name = 'DateHour';
	this.version = '1.0v';
	this.systemDate = new Array;
	this.systemDate = systemDate.split('/');
}

var dateHour = DateHour.prototype;

dateHour.getSystemDate = function(elementId,format) { 
	var element = document.getElementById(elementId);
	if(format == 'd de MMM de yyyy'){
		element.innerHTML = this.systemDate[2] + ' de ' + this.getMonthName(this.systemDate[1]) + ' de ' + this.systemDate[3];
	} else if(format == 's, d de MMM de yyyy') {
		element.innerHTML = this.getDayWeekName(this.systemDate[0]) + ', ' + this.systemDate[2] + ' de ' + this.getMonthName(this.systemDate[1]) + ' de ' + this.systemDate[3];
	} else if(format == 'dd.mm.yyyy') {
		element.innerHTML = this.systemDate[2] + '.' + this.systemDate[1] + '.' + this.systemDate[3];
	} else {
		element.innerHTML = this.systemDate[2] + '/' + this.systemDate[1] + '/' + this.systemDate[3];
	}
}

dateHour.getSystemDateHourArray = function() {
	return this.systemDate;
}

dateHour.getSystemDateObj = function() {
	var time = this.systemDate[4].split(":");
	var d = new Date(this.systemDate[3],this.systemDate[1]-1,this.systemDate[2],time[0],time[1]);
	return d;
}

dateHour.getMonthName = function(month) {
	var monthName = new Array();
	
	monthName[0] = '';
	monthName[1] = 'janeiro';
	monthName[2] = 'fevereiro';
	monthName[3] = 'março';
	monthName[4] = 'abril';
	monthName[5] = 'maio';
	monthName[6] = 'junho';
	monthName[7] = 'julho';
	monthName[8] = 'agosto';
	monthName[9] = 'setembro';
	monthName[10] = 'outubro';
	monthName[11] = 'novembro';
	monthName[12] = 'dezembro';
	
	return monthName[parseInt(month)];
}


dateHour.getDayWeekName = function(dayWeek) {
	var dayWeekName = new Array();
	
	dayWeekName[0] = 'Domingo';
	dayWeekName[1] = 'Segunda-feira';
	dayWeekName[2] = 'Terça-feira';
	dayWeekName[3] = 'Quarta-feira';
	dayWeekName[4] = 'Quinta-feira';
	dayWeekName[5] = 'Sexta-feira';
	dayWeekName[6] = 'Sabado';

	dayWeekName['Dom'] = 'Domingo';
	dayWeekName['Seg'] = 'Segunda-feira';
	dayWeekName['Ter'] = 'Terça-feira';
	dayWeekName['Qua'] = 'Quarta-feira';
	dayWeekName['Qui'] = 'Quinta-feira';
	dayWeekName['Sex'] = 'Sexta-feira';
	dayWeekName['Sab'] = 'Sabado';
	
	return dayWeekName[dayWeek];
}

dateHour.getDayWeekSmallName = function(dayWeek) {
	var dayWeekSmallName = new Array();
	
	dayWeekSmallName[0] = 'DOM';
	dayWeekSmallName[1] = 'SEG';
	dayWeekSmallName[2] = 'TER';
	dayWeekSmallName[3] = 'QUA';
	dayWeekSmallName[4] = 'QUI';
	dayWeekSmallName[5] = 'SEX';
	dayWeekSmallName[6] = 'S??B';
	
	return dayWeekSmallName[dayWeek];
}

dateHour.getListYear = function(start,end) {
	var listYear = new Array();
	var year = start;
	for(var i=0;i<=(end-start);i++){
		listYear[i] = new Array();
		listYear[i]['value'] = year;
		listYear[i]['text'] = year;
		year++;
	}
	return listYear;
}

dateHour.getListMonth = function(start,end) {
	var listMonth = new Array();
	var month = start;
	for(var i=0;i<=(end-start);i++){
		listMonth[i] = new Array();
		listMonth[i]['value'] = month;
		var monthName = this.getMonthName(month);
		listMonth[i]['text'] = (monthName).charAt(0).toUpperCase() + monthName.substr(1,monthName.length);
		month++;
	}
	return listMonth;
}

dateHour.getListDay = function(start,end) {
	var listDay = new Array();
	var day = start;
	for(var i=0;i<=(end-start);i++){
		listDay[i] = new Array();
		listDay[i]['value'] = day;
		listDay[i]['text'] = day;
		day++;
	}
	return listDay;
}

InputSelect = function () {
	this.InputSelect = InputSelect;
	this.name = 'DateHour';
	this.version = '1.0v';
}


var inputSelect = InputSelect.prototype;

inputSelect.loadOption = function(selectObject,arrayList){
	for(var i=0;i<arrayList.length;i++){
		option = new Option(arrayList[i]['text'],arrayList[i]['value']);
		selectObject.options[i] = option;
	}
}

inputSelect.selectValue = function(selectObject,value){
	for(var i=0;i<selectObject.options.length;i++){
		if(selectObject.options[i].value == value){
			selectObject.options[i].selected = true;
		}
	}
}

WideSky = function () {
	this.WideSky = WideSky;
	this.name = 'WideSky';
	this.version = '1.0v';
}

WideSky.init = function(){
	WideSky.addOnLoadBody(window,'load',WideSky.display);
}

WideSky.display = function(){
	if(screen.width > 800){
		//Mostra o Banner
		document.body.className+="mostraBanner";
		//Iniciar processo de reposicionamento automatico
		WideSky.scrollBanner("widebanner");
	}
}

WideSky.addOnLoadBody = function(obj,type,fn){
	if(obj.addEventListener)obj.addEventListener(type,fn,true);
	if(obj.attachEvent)obj.attachEvent("on"+type,fn);
}

//Função para mover banner verticalmente quando é feito o scroll na página
WideSky.scrollBanner = function(div){

	//indica posição vertical inicial    
	var startY = 0;
	
	var ns = (navigator.appName.indexOf("Netscape") != -1);
	var d = document;

	function getFloatBanner(id){

		//Recupera o Div
		var elDiv = d.getElementById(id);

		//Configura o style do div de acordo com o navegador
		if (d.layers){ 
			elDiv.style = elDiv;
		}

		//Identifica a scrollposition vertical do Browser
		elDiv.sP = function(y){ this.style.top=y+'px'; };

		//Posição do scroll para o div ser "movido"
		elDiv.y = startY;

		return elDiv;
	}
	
	window.stayTopLeft = function (){

		var pY = ns ? pageYOffset : d.body.parentNode.scrollTop;
		ftlObj.y += (pY + startY - ftlObj.y)/8;
		
		//Altera posição vertical do elemento flutuante
		ftlObj.sP(ftlObj.y);
				
		setTimeout("stayTopLeft()", 10);

	};

	ftlObj = getFloatBanner(div);
	stayTopLeft();
}


// componente de paginacao
Paginacao = function () {
	this.Paginacao = Paginacao;
	this.name = 'Paginacao';
	this.version = '1.0v';	
}

var paginacao = Paginacao.prototype;

paginacao.showPage = function(page) {
  	var paginas = pag.getElementsByClass("paginacao",document.body,"div");
  	for (var i=0; i<paginas.length; i++) {
          var link = document.getElementById("link_pagina"+(i+1));
          pag.removeClassName(link,"active");
          pag.addClassName(link,"controle",pag.hasClassName(link,"controle"));
          if (paginas[i].id == page) {
              pag.removeClassName(paginas[i],"unSelectedPage");
  	      pag.addClassName(paginas[i],"selectedPage",pag.hasClassName(paginas[i],"selectedPage"));
          } else {
              pag.removeClassName(paginas[i],"selectedPage");
              pag.addClassName(paginas[i],"unSelectedPage", pag.hasClassName(paginas[i],"unSelectedPage"));
  	  }
    }
    var linkSelecionado = document.getElementById("link_"+page);
    pag.addClassName(linkSelecionado,"active",pag.hasClassName(linkSelecionado,"active"));
}

paginacao.hasClassName = function(objElement, strClass) {
   if ( objElement.className ) {
      var arrList = objElement.className.split(' ');
      var strClassUpper = strClass.toUpperCase();

      for ( var i = 0; i < arrList.length; i++ ) {
         if ( arrList[i].toUpperCase() == strClassUpper ) {
            return true;
         }
      }

   }
   return false;
}

paginacao.addClassName = function(objElement, strClass, blnMayAlreadyExist) {
       if ( objElement.className ) {
          var arrList = objElement.className.split(' ');

          if ( blnMayAlreadyExist ) {
             var strClassUpper = strClass.toUpperCase();
             for ( var i = 0; i < arrList.length; i++ ) {
                if ( arrList[i].toUpperCase() == strClassUpper ) {
                   arrList.splice(i, 1);
                   i--;
                }
             }
          }

          arrList[arrList.length] = strClass;
          objElement.className = arrList.join(' ');
       } else {
          objElement.className = strClass;
       }

}

paginacao.removeClassName = function(objElement, strClass) {
       if ( objElement.className ) {
          var arrList = objElement.className.split(' ');
          var strClassUpper = strClass.toUpperCase();

          for ( var i = 0; i < arrList.length; i++ ) {
             if ( arrList[i].toUpperCase() == strClassUpper ){
                arrList.splice(i, 1);
                i--;
             }
          }
          objElement.className = arrList.join(' ');
       }
}

paginacao.getElementsByClass = function(searchClass,node,tag) {
    	var classElements = new Array();
    	if ( node == null ) {
    		node = document;
    	}
    	if ( tag == null ) {
    		tag = '*';
    	}
    	var els = node.getElementsByTagName(tag);
    	var elsLen = els.length;
    	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
    	for (i = 0, j = 0; i < elsLen; i++) {
    		if ( pattern.test(els[i].className) ) {
    			classElements[j] = els[i];
    			j++;
    		}
    	}
    	return classElements;
}
 
var pag = new Paginacao();