/*
 * JavaScript Document
 * DOCUMENTO CRIADO PARA INTEGRAÇÃO DO PROGRAMA LOMADEE COM A PLATAFORMA WEBVENDA.
 * WEBVENDA SISTEMAS LTDA.
 * IVAN NASCIMENTO FELICIANO
 */

/*
*Inicialização das variaveis do Lomadee.
*Ivan Nascimento - 02.07.09
*/
var bpads_acao_idPrograma="0"; 
var bpads_acao_ip="0.0.0.0"; 
var bpads_acao_codTransacao="0"; 
var token="";  
var ln="0";  
var eventos_string = "";  
var eventos = [];
var bpads_acao_extralog ="";
var requisicaoDeToken = "?getTokenLn=";

/*
*Geração de cookies durante visita identificada do lomadee
*@Param = null.
*@Result = Cookie criado.
*bpads_acao_ip = Preenchido com o IP do Cliente.
*Ivan Nascimento - 02.07.09
*/
function AddCookie(){
	var COOKIE_NAME = 'lomadee_traffic';
	var options = { path: '/', expires: 1 };		
	
	$.ajax({
		type: "GET",
		url: "/admin/inbox/integracao/ajax.aspx?ajax=getIPCliente",
		dataType: "string",
		success: function(IPClienteLomadee) {
			var date = new Date();
			var valor ="active=1&ip=" + IPClienteLomadee + "&date=" + date.toGMTString();
			$.cookie(COOKIE_NAME, valor, options);
			$.cookie("IPClienteLomadee", escape(IPClienteLomadee), options);
		}
	});	
}

/*
*Parâmetro de identificação da Plataforma de Afiliados 
*@Param = null.
*@Result = Boolean.
*Ivan Nascimento - 02.07.09
*/
function IsLomadeeVisit(){
	var retornoBoleano = false;		
	if (location.href.indexOf('origem=lomadee')>-1)
		retornoBoleano = true;
	return retornoBoleano;
}

/*
*Método verifica se o usuário veio do Lomadee, 
*caso positivo cria cookie.
*@Param = null.
*@Result = Cookie criado.
*Ivan Nascimento - 02.07.09
*/
function AcompanhaClienteLomadee(){
	if (IsLomadeeVisit())
		AddCookie();	
}

/*
*Método que retorna um Compra no padrão lomadee.
*@Param = null.
*@Result = Compra.
*Ivan Nascimento - 03.07.09
*/
function LomadeeTracker(){	
	if (GetIDPrograma()>0){				
		$.ajax({
			type: "GET",
			url: "/admin/inbox/integracao/ajax.aspx?ajax=getCompra&Opcao=new",
			dataType: "xml",
			success: function(xml){
				try{		
				  $(xml).find('Compras').find('Compra').each(function(){
						var Compra = $(this);				
						
						bpads_acao_codTransacao = Compra.find('OrderID').text();
	
						var i=0;				
						Compra.find('Produtos').find('Produto').each(function(){																	  
							var Produto = $(this);			
							for (j=0;j<=Produto.find('Quantity').text()-1;j++){
								i += j;
								eventos[i] = [];
								eventos[i]["bpads_acao_idEvento"] = Produto.find('IDEventoLomadee').text();
								eventos[i]["bpads_acao_receita"] = GetPriceComDigito(Produto.find('Price').text());
								eventos[i]["bpads_acao_produto"] = TiraAcento(Produto.find('ProductName').text());
								eventos[i]["bpads_acao_categoria"] = TiraAcento(Produto.find('Category').text());					
							}
							i++;
						}); //close each de prodtuo		
				  }); //close each de compra(		
				  
				  AddToken();			  
				} catch(err) {alert(err);};
			}
		}); //close $.ajax(	
	}
}

/*
*Método que retorna o preço com o separador decimal '.'.
*@Param = Preço.
*@Result = Preço ajustado com ponto;
*Ivan Nascimento - 15.07.09
*/
function GetPriceComDigito(price){
	var ArrayPrice;	
	if (price.indexOf('.')<0)
		price += '.00';
	else {
		ArrayPrice = price.split('.');
		if (ArrayPrice[1].length!==2)
			price += '0';
	}	
	return price;
}

/*
*Método que retorna o IP do cliente.
*@Param = null.
*@Result = variavel preenchida com o IP.;
*Ivan Nascimento - 03.07.09
*/
function GetIpClienteLomadee(){
	try{				
		bpads_acao_ip = $.cookie("IPClienteLomadee");
		return bpads_acao_ip;
	}catch(e){return IPCliente;}		
}

/*
*Método que retorna o ID do programa.
*@Param = null.
*@Result = variavel preenchida com o IDprograma;
*Ivan Nascimento - 09.07.09
*/
function GetIDPrograma(){
	try{
		bpads_acao_idPrograma = $.cookie("IDProgramaLomadee");	
	}catch(e){}
	return bpads_acao_idPrograma;	
}

/*
*Método que adiciona um ID de Programa Lomadee.
*@Param = id (identificador do programa).
*@Result = null;
*Ivan Nascimento - 09.07.09
*/
function AddIDPrograma(id){
	//bpads_acao_idPrograma
	var options = { path: '/', expires: 1 };
	$.cookie("IDProgramaLomadee", escape(id), options);
}


/*
*Método que adiciona um ID de Evento.
*@Param = id (identificador do evento).
*@Result = null;
*Ivan Nascimento - 08.07.09
*Método queryString() do pacote Loja.js
*Método Obsoleto, esta informação está ligada a categoria.
*/
function AddIDEvento(id){			
/*
	var options = { path: '/', expires: 1 };
	if (parseInt(queryString('IDEvento')) > 0)
		id = queryString('IDEvento');

	$.cookie("IDEventoLomadee", id, options);
*/
}

/*
*Método que retorna o ID do Evento.
*@Param = null.
*@Result = variavel preenchida com o ID.;
*Ivan Nascimento - 08.07.09
*Método Obsoleto, esta informação está ligada a categoria.
*/
function GetIDEventoLomadee(){
/*	
  	IDEventoLomadee = $.cookie("IDEventoLomadee");	
	return IDEventoLomadee;	
*/
}

/*
*Método que adiciona um Token
*@Param = null.
*@Result = instancia da variavel;
*Ivan Nascimento - 03.07.09
*/
function AddToken() {
	                     
	requisicaoDeToken += GetIpClienteLomadee() + "," + GetIDPrograma() + "," + bpads_acao_codTransacao + "|";	
	
	for (var i=0;i<=eventos.length-1;i++){	
		requisicaoDeToken += eventos[i]["bpads_acao_idEvento"] + ",";
		requisicaoDeToken += eventos[i]["bpads_acao_receita"] + ",";
		requisicaoDeToken += eventos[i]["bpads_acao_produto"] + ",";
		requisicaoDeToken += eventos[i]["bpads_acao_categoria"] + ";";
	}		
	
	try{		
		$.ajax({
			type: "GET",
			url: "/Lomadee/AjaxLomadee.asp"+requisicaoDeToken,
			dataType: "string",
			success: function(txt) {
				var arrayTokenLn = txt.split(",");			
				AddLn(arrayTokenLn[0]); 
				token = arrayTokenLn[1];							
				GetExtralog();
				EnviaLomadee();				
			},
			error:function (xhr, ajaxOptions, thrownError){
				//function (XMLHttpRequest, textStatus, errorThrown) {
				//alert("XMLHttpRequest: " + xhr.status + "\ntextStatus: " + ajaxOptions + "\nthrownError: " + thrownError);
		   }
		});	
	}
	catch(e){alert(e);}
}

/*
*Método que retorna um token.
*@Param = null.
*@Result = variavel preenchida com token.;
*Ivan Nascimento - 03.07.09
*/
function GetToken() {	
	return token;
}

/*
*Método que adiciona ln.
*@Param = newln (número aleatório).
*@Result = null;
*Ivan Nascimento - 03.07.09
*/
function AddLn(newln) {
	ln=newln;	
}

/*
*Método que retorna o ln.
*@Param = null.
*@Result = variavel preenchida com ln.;
*Ivan Nascimento - 03.07.09
*/
function GetLn() {
	return ln;	
}

/*
*Método que retorna o bpads_acao_extralog.
*Trata-se a sequencia de caracteres para postagem.
*@Param = null.
*@Result = bpads_acao_extralog;
*Ivan Nascimento - 03.07.09
*/
function GetExtralog() {	
	for (t=0;t<=eventos.length-1;t++) { 
	  eventos_string += "&idev" + (t+1) + "=" + escape(eventos[t]["bpads_acao_idEvento"]) + "&"; 
	  eventos_string += "vrev" + (t+1) + "=" + escape(eventos[t]["bpads_acao_receita"]) + "&"; 
	  eventos_string += "dpev" + (t+1) + "=" + escape(eventos[t]["bpads_acao_produto"]) + "&"; 
	  eventos_string += "ncev" + (t+1) + "=" + escape(eventos[t]["bpads_acao_categoria"]);   
	} 
	 
	bpads_acao_extralog="id_programa="+GetIDPrograma()+"&codigo_transacao=" + bpads_acao_codTransacao + "&ip_transacao=" + GetIpClienteLomadee() + eventos_string + "&token=" + GetToken() + "&ln=" + GetLn(); 
}

/*
*Método que contabiliza Lomadee.
*postagem dos dados da compra.
*@Param = null.
*@Result = TAG <img>;
*Ivan Nascimento - 06.07.09
*/
function EnviaLomadee(){ 

	var Divlomadee = document.getElementById("Divlomadee");
	
	Divlomadee.innerHTML="<img border=\"2\" width=\"1\" height=\"1\" src=\"" + 
"https://lmdlog.buscape.com.br/writelog?prg=ev&rf="+escape(document.referrer)+"&el="+escape(bpads_acao_extralog)+"\">";
	
	Divlomadee.style.display="block";	
	/*	 
	
	$.ajax({
		type: "GET",
		url: "/Proxy.aspx?@URL=https://lmdlog.buscape.com.br/writelog?prg=ev&rf="+escape(document.referrer)+"&el="+escape(bpads_acao_extralog)+"",
		dataType: "string",
		success: function(txt){},
		complete: function(txt){}
	});	
	*/
}

/*
*Método que limpa uma string de acentos.
*@Param = texto como String.
*@Result = texto limpo em caixa alta;
*Ivan Nascimento - 09.07.09
*/
function TiraAcento(text) {
  text = text.toUpperCase();
  text = text.replace(new RegExp('[ÁÀÂÃÄ]','gi'), 'A');
  text = text.replace(new RegExp('[ÉÈÊË]','gi'), 'E');
  text = text.replace(new RegExp('[ÍÌÎÏ]','gi'), 'I');
  text = text.replace(new RegExp('[ÓÒÔÕÖ]','gi'), 'O');
  text = text.replace(new RegExp('[ÚÙÛÜ]','gi'), 'U');
  text = text.replace(new RegExp('[Ç]','gi'), 'C');
  return text;
} 

/*
:Fluxo de Chamada do cliente:
//Na página do produto.
AddIDPrograma("20");
AcompanhaClienteLomadee();

//Na página de finalização de compras.
LomadeeTracker();
*/
