var ep = ep || {vars:{}, fn:{}};

var COOKIE_PREFIX = "ep.";

var timeToExpireCookies = 10;
var stepElapsed = 0;

$.ajaxSetup({
    type: "POST"
});

$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
  while(x<c.length){var m=r.exec(c.substr(x));
    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
  while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
  t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});

function abrePopUpFreteRegressivo(){	
	var strPagina = 'http://www.paodeacucar.com.br/popup/popupFreteRegressivo.asp?Regiao=SP6&FreteER=' + document.formHidden.freteER.value + '&FreteHM=' + document.formHidden.freteHM.value;
	window.open(strPagina, null, 'height=240,width=370,status=no,toolbar=no,menubar=no,location=no,resizable=no');
}


function imprimePagina() {
	var pagina = window.location.pathname;
	pagina = pagina.replace("content", "printContent");
	var newWindow = window.open(pagina, 'Receita', 'width=1,height=1,scrollbars=no,toolbar=no,location=no,status=no,menubar=no,resizable=no,left=0,top=0');
	newWindow.print();
	
//	newWindow.close();
//	window.print();
	return false;
}

function abrejanelaprivacidade() {
	window.open(catalogUrl+"/politicaPrivacidade","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=485,height=450,top=0,left=0")
}

function abrejanelaAjudaCompra(e) {
	window.open("/arquivos/xtras/compras.swf","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=no,width=500,height=320,top=0,left=0")
}

function abrejanelaDeliverySite(e) {
	window.open("http://www4.directtalk.com.br/chat/?idd=0EDC00029296A00061E8","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=no,width=375,height=517,top=0,left=0");
}

function abrejanelaDeliveryLoja(e) {
	window.open("http://www4.directtalk.com.br/chat/?idd=0EDC00029296A00025E8","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=no,width=375,height=517,top=0,left=0");
}

function abrejanelacomprasegura(e) {
	window.open(catalogUrl+"/compraSegura","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=485,height=450,top=0,left=0");
}
 
function abrejanelaecad(e) {
	window.open(catalogUrl+"/ecad","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=485,height=450,top=0,left=0");
}

function abrirFichaCadastral() {
	window.open(basketUrlSecure+"/formasPagamento/fichaCadastral","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=485,height=450,top=0,left=0");
}

function abrirProcuracao() {
	window.open(basketUrlSecure+"/formasPagamento/boletoProcuracao","extra","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=485,height=450,top=0,left=0");
}

usuarioInfo  = function(e) {
	var storeId = ep.fn.readCookie('selected_store'),	
	storeName   = ep.fn.readCookie('store_name_'+storeId),
	userName    = ep.fn.readCookie('customer_name_'+storeId),
	logged      = ep.fn.readCookie('customer_logged');
    var ping = ep.fn.readCookie('ping');
	if ( logged != null && ping != null) {
		if (userName && userName !== "") {
			$('#liMinhaConta').css("display", "block").css("left", "809px");
			$('#meu-pedido').css("left", "762px");
			try {
				$('#LoginWrapper').html(
						"<em><span>Bem vindo, </span><strong>"
								+ decodeURIComponent(userName) + "</strong></em>");
			} catch (err) {
			}
			$('#LoginWrapper').css("background", "none");
			$('#LoginWrapper').css("display", "block");
		}
	}


    try{

        if (storeName && logged != null && ping != null) {
            //logado
            $('#rodRegraLocal').find('strong').html(decodeURIComponent(storeName));
        } else if(storeName && logged == null){
          //visitou, mas deslogado
            $('#LoginWrapper').html("<em><strong>Visita&ccedil;&atilde;o</strong>. Regi&atilde;o de Pre&ccedil;o <span>&quot;"+decodeURIComponent(storeName)+"&quot;</span></em>");
            $('#rodRegraLocal').find('strong').html(decodeURIComponent(storeName));
        } else {
            //deslogado e na loja default
            $('#LoginWrapper').html("<em><strong>Visita&ccedil;&atilde;o</strong>. Regi&atilde;o de Pre&ccedil;o <span>&quot;S&atilde;o Paulo&quot;</span></em>");
            $('#rodRegraLocal').find('strong').html("S&atilde;o Paulo");
        }
    }catch (err){
        $('#LoginWrapper').html("<em><strong>Visita&ccedil;&atilde;o</strong>. Regi&atilde;o de Pre&ccedil;o <span>&quot;S&atilde;o Paulo&quot;</span></em>");
        $('#rodRegraLocal').find('strong').html("S&atilde;o Paulo");
    }



		

}

login = function(e) {
	var storeId = ep.fn.readCookie('selected_store'),
	basket = ep.fn.readCookie('basket_total_price_'+storeId),
	address = ep.fn.readCookie('selected_address_'+storeId),
	logged = ep.fn.readCookie('customer_logged');
    var ping = ep.fn.readCookie('ping');
	if ( logged != null && ping != null) {
		$('#lnkMeuPedido').html("sair");
        $('#lnkMeuPedido').attr("title", "sair");
		$('#lnkMeuPedido').attr('href', basketUrlSecure+'/login/logout');

		$('#lnkCadastreSe').html("alterar endere&ccedil;o");
		$('#lnkCadastreSe').attr("title", "alterar endere&ccedil;o");
        $('#lnkCadastreSe').attr('href', basketUrlSecure+'/address/chooseAddress');

		if (address != null) {

            try{

                var addressValue = decodeURIComponent(address)

                if(addressValue.length > 19){
                    addressValue = addressValue.substring(0,18);
                }

			    $('#elemEnderecoEntrega').find('span').html(addressValue);

			} catch(err){

                $('#elemEnderecoEntrega').find('span').html('-||-');

            }
		}
		comprou();
		verificaProdutosComprados();
	} else {
		$('#LoginWrapper').css("display", "block");
	}
	usuarioInfo();
}


comprou = function(e, obj){
	var storeId = ep.fn.readCookie('selected_store'),
	qtd = ep.fn.readCookie('last_product_quantity_'+storeId),
	basketPrice = ep.fn.readCookie('basket_total_price_'+storeId),
	prodName = ep.fn.readCookie('last_product_name_'+storeId),
	logged = ep.fn.readCookie('customer_logged');

    try{
        if (logged && basketPrice != null && basketPrice != 'null' && parseFloat(basketPrice) > 0.0) {

            $('#carrinhoValorLiteral').html(basketPrice);

            if (prodName != null) {
                try {
                    $('#carrinhoUltimoProduto').children().html(decodeURIComponent(prodName));
                } catch(err){
                    $('#carrinhoUltimoProduto').children().html(prodName.replace(/\+/g, " ").replace(/%C/g).replace(/%20/g, ' '));
                }
            }
            $('#carrinhoQtProdutos').children().html(qtd);

        } else {
            undefinedfunction();
        }

    }catch(e){

        ep.fn.createCookie('last_product_quantity_'+storeId, '0', 7 );
        ep.fn.createCookie('basket_total_price_'+storeId, '0', 7 );
        ep.fn.createCookie('last_product_name_'+storeId, '', 7 );

        $('#carrinhoValorLiteral').html('0,00');
        $('#carrinhoQtProdutos').children().html('0');
        $('#carrinhoUltimoProduto').children().html('carrinho vazio');
    }

};

function addProduct(e) {
	var storeId = ep.fn.readCookie('selected_store'),
	type = $(this).attr("id").split("_")[0],
	productId = $(this).attr("id").split("_")[1],
    shelfName = $(this).attr("id").split("_")[2],
	currencyCode = ep.fn.readCookie('currency_code_'+storeId),
	languageCode = ep.fn.readCookie('language_code_'+storeId),
	quantity = $("#prdQtd_"+productId).val();
	
	var productPage = false;
	if (type == "contentId") {		
		quantity = $("#contentQuantities_"+productId).val();
        shelfName = $("#contentProductsShelf_"+productId).val();
        productId = $("#contentProducts_"+productId).val();
    } else if (type == "productPage") {
		productPage = true;
	}
	
	$.ajax({
		url: "/addProduct",
		data: {
			storeId: storeId,
			productId: productId,
			currencyCode: currencyCode,
			languageCode: languageCode,
			quantity: quantity,
            shelfName:shelfName
		},
		success: function(response, status, xhr) {
			//quando a quanltidade do produto excedeu o estoque
			//"status=limit&chave:valor"
			var respParams = xhr.responseText.split("&");
			var respMap = {};
			for (i = 0; i < respParams.length; i++) {
				respMap[respParams[i].split("=")[0]] = respParams[i].split("=")[1].replace("&","");
			}
			
			if (respMap['status'] == 'stockMiss' || respMap['status'] == 'limitExceeded') {
				//msg
				$("#messages").empty().append("<p class=\'msg\'>"+respMap['message']+"</p>");
			}

            quantity = respMap['qtd'];

            if(quantity == "0"){
                //$("#prdQtd_"+productId).val(1);
            }else{
                var tr = $(e.target).parents('tr').eq(0);
                var name = $.trim(tr.find('a.prdNome span').text());
                if (type == "contentId") {
                    name = $("h1").last().text();
                } else if (type == "productPage") {
                    name = $.trim(tr.find('a.prdNome span').text());
                    if (name === '') {
                        name = $("h1.productName").text();
                    }
                } else if (type == "seeMoreId") {
                    name = $('#seeMoreId_'+productId).parent().parent().find('h3 a').text();
                    $('#seeMoreId_'+productId+"_"+shelfName).parent().removeClass('comprar').addClass('comprado');
                } else {
                    if (name == '') {
                        name = $('#productId_'+productId).parent().parent().find('h3 a').text();
                        $('#productId_'+productId).parent().removeClass('comprar').addClass('comprado');
                    }
                }

                //$("#prdQtd_"+productId).val(quantity);
                //ep.fn.createCookie('last_product_name_'+storeId, name, 7 );
                $('#divCarrinhoResumo').trigger('comprar', [e.target]);
                $(e.target).parents('tr').eq(0).addClass('comprado');
                if (productPage) {
                    //ep.fn.createCookie('last_product_quantity_'+storeId, quantity, 7 );
                    $(e.target).css('background', 'url(/arquivos/xtras/btComprarCheio.jpg)');
                }
            }

		},
		error: function(xhr, textStatus, errorThrown){
			//           console.info( xhr.status);
		},
		complete: function(xhr, status){
			if(xhr.status == 403) {
				window.location.href = basketUrlSecure+'/login/login';
			}
			if (xhr.status == 500) {
				//                alert('Erro ao adicionar o produto');
			}
			//            console.warn( xhr, this, e);
		}
	});

    resetStepElapsed();
	e.preventDefault();

};


(function($, ep) {
	ep.fn.campoBlur = function (obj, defaultTxt) {
		if (obj.value == '' || obj.value == null) {
			obj.value = defaultTxt;
		}
	};
	ep.fn.campoFocus = function (obj, defaultTxt) {
		if (obj.value == defaultTxt) {
			obj.value = '';
		}
	};
	ep.fn.alternaTextoDefault = function (campos) {
		ep.vars.defaulttext = [];
		$(campos).each(function (count, obj) {
			ep.vars.defaulttext[count] = this.value;
			$(this).focus(function () {
				ep.fn.campoFocus(this, ep.vars.defaulttext[count]);
			}).blur(function () {
				ep.fn.campoBlur(this, ep.vars.defaulttext[count]);
			});
		});
	};

	botaoMudarQuantidade = function(e){
		var qfn = $(this).data('campos').campoQtd,
		btc = $(this).data('campos').btComprar,
		qf = $('#'+qfn),
		q = parseInt(qf.val(), 10),
		newQ = 1,
		somar = $(this).parent().hasClass('qtdUp');

		newQ = (somar) ? ((q<99) ? q + 1 : 99) : ((q>1) ? q - 1 : 1);
		qf.val(newQ);
		//     $('#'+btc).trigger('click');
		return false;
	};
	
	numberValidator = function(e){
		
		if ($(this).val().match(/[^0-9]/g) || $(this).val() === "0") {
			$(this).val(1);
		}
		return false;
	};

	manualmenteAlterarQuantidade = function(){
		//      console.info( $(this) );
	};


/**
* limpeza de cookies antigos - refresh for√ßado
* ep.vars.renewCookie = 'renewCookie';
* ep.vars.safeCookies = ['__utma', '__utmb', '__utmc', '__utmz',
ep.vars.renewCookie];
* chamar: ep.fn.eraseOldCookies();
*/
ep.fn.getCookieValue = function(name, cookieName){
	var cookie = ep.fn.readCookie(ep.vars.cookies[cookieName]),
	cookieArray = [],
	finalValue = null;
	if(cookie === null){
		return null;
	}
	cookieArray = cookie.split('&');
	jQuery.each(cookieArray , function(i, d){
		var t = d.split('=');
		if(t[0].toLowerCase() == name.toLowerCase()){
			finalValue = t[1];
			return;
		}
	});
	return finalValue;
};

ep.fn.eraseCookie = function(n){
	ep.fn.createCookie(n,"",-1, ep.vars.url.cookieHost);
};

ep.fn.eraseCookie = function(n){
	ep.fn.createCookie(n,"",-1,
	ep.vars.url.cookieHost.replace(/\:[0-9]{2,4}/, ''));
};

ep.fn.readCookie = function(name) {
	var nameEQ = COOKIE_PREFIX + name + "=",
	ca = document.cookie.split(';'),
	c;
	for(var i=0; i < ca.length; i++) {
		c = ca[i];
		while (c.charAt(0)==' '){
			c = c.substring(1,c.length);
		}
		if (c.indexOf(nameEQ) == 0){
			return c.substring(nameEQ.length,c.length);
		}
	}
	return null;
};

ep.fn.createCookie = function(name, value, days, domain, path) {
	var expires = "";
	if(!path){
		path = '/';
	}
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}

	var tdom = (domain) ? "; domain="+ domain : (domainCookie ? "; domain="+domainCookie : "");
	//	console.log($.trim(name) +"="+ $.trim(escape(value)) + expires + tdom +"; path="+path);
	document.cookie = $.trim(COOKIE_PREFIX+name) +"="+ $.trim(escape(value)) + expires + tdom +"; path="+path;
};

ep.fn.eraseAllCookies = function(){
	var c = document.cookie.split(";"), i, e, n;
	if(typeof ep.vars.safeCookies == 'undefined'){
		ep.vars.safeCookies = ['__utma', '__utmb', '__utmc', '__utmz',
		ep.vars.renewCookie];
	}
	for(var i=0;i<c.length;i++){
		e = c[i].indexOf("=");
		n = $.trim(e>-1?c[i].substr(0,e):c[i]);
		if($.inArray(n, ep.vars.safeCookies) == -1){
			ep.fn.createCookie(n,"",-1);
			ep.fn.createCookie(n,"",-1, window.location.host);
			ep.fn.createCookie(n,"",-1,
			(window.location.host).toString().replace('www.', '.').replace('chk.',
			'.'));
		}
	}
};

})(jQuery, ep);

verificaProdutosComprados = function(e) {
	var storeId = ep.fn.readCookie('selected_store'),
	basketList = ep.fn.readCookie('basket_products_'+storeId),
	prodId;
	if (basketList) {
		var productArray = decodeURIComponent(basketList).replace(/\"/g,'').split(',');
		$.each ($('tr').toArray(),
		function (index, value) {
			if (index != 0) {
                if($(value) && $(value).attr('id')){
                    prodId = $(value).attr('id').split('_')[1];
                    if ($.inArray(prodId, productArray) > -1) {
                        $(value).addClass('comprado');
                    }
                }
			}
		});
		$.each(productArray, function(index, value) {
			$('#seeMoreId_'+value).parent().removeClass('comprar').addClass('comprado');
			$('#productId_'+value).parent().removeClass('comprar').addClass('comprado');					
		});
	}
};


ep.fn.getStoreId = function(){
	return ep.fn.readCookie('selected_store');
};
ep.fn.showNotification = function(note){
	if($('#barra-notificacoes').length == 0){
		$('body').prepend('<div id="barra-notificacoes"></div>');
	}
	var notifyCounter = $('#barra-notificacoes').children().length +1;
	$('#barra-notificacoes').append('<div class="notificacao" id="notificacao-'+ notifyCounter +'"><span class="notificacao-msg">'+ note.txt +'</span></div>');
};

ep.fn.setupTelemarketing = function(){
	var sid = ep.fn.getStoreId(),
		tName = ep.fn.readCookie('telemarketing_name_'+sid),
		uName = ep.fn.readCookie('customer_name_'+sid),
		note = {txt: 'Operador '+decodeURIComponent(tName)+', logado como usuário <b>'+decodeURIComponent(uName)+'</b>'};
	if(tName != null && uName != null){
		ep.fn.showNotification(note);
	}
};
ep.fn.imprimirPagina = function(e){
	if(window.print){

        window.print();
	}
	return false;
};


/*
 * Nova Busca
**/

ep.fn.downcode = function(s) {
//	var map = {'à':'a','á':'a','â':'a','ã':'a','ä':'a','å':'a','æ':'ae','ç':'c','è':'e','é':'e','ê':'e','ë':'e','ì':'i','í':'i','î':'i','ï':'i','ð':'d','ñ':'n','ò':'o','ó':'o','ô':'o','õ':'o','ö':'o','o':'o','ø':'o','ù':'u','ú':'u','û':'u','ü':'u','u':'u','ý':'y','þ':'th','ß':'ss'};
	var map = {}
	var st = '',
		i = 0,
		l = s.length;
	s = s.toLowerCase();
	for(i; i<l; i++){
		st += (map[s.charAt(i)] != undefined) ? map[s.charAt(i)] : s.charAt(i);
	}
	return st;
};

ep.fn.toUrl = function(s){
	return encodeURIComponent(ep.fn.downcode(s).replace(/[\/\\\@\?\&\#]/g, ' ').replace(/[ ]{2,}/g, ' ')).replace(/%20/g, '+');
};

ep.fn.novaBusca = function(){
	var f = this.form,
		filterOnly = true,
		Filtro = jQuery(f).find('select[name=Filtro]').eq(0).val(),
		Query = jQuery.trim( jQuery(f).find('input[name=q]').val() ),
		componentes = [catalogUrl+'/busca'];

	if(Query != "" && Query != null && Query.toLowerCase() != 'digite aqui'){
		componentes.push(ep.fn.toUrl(Query));
		filterOnly = false;
                
	}
	if(Filtro != undefined && Filtro != "" && Filtro != null && Query.toLowerCase() != 'digite aqui' && Query != "" && Query != null){
		if (!filterOnly){
			Filtro = "F_" + Filtro.split('/')[0];
		}
		componentes.push(Filtro);
	}
	if(componentes.length > 1){
		if (filterOnly){
			componentes[0] = '/departamento';
		}
		window.location = componentes.join('/');
	}
	return false;
};

/**
 * ep.fn.setupNovaBusca()  atribui eventos a busca
 * @author Spark, Samuel
 */ 
ep.fn.setupNovaBusca = function(){
	$('fieldset.search input.bt').unbind().click(ep.fn.novaBusca);
	$('input[name=q]').unbind('keypress').bind('keypress', function(e){
		if(e.which == 13) {
			$(this).parent().parent().find('span.ok input').trigger('click');
			return false;
		}
	});
	//$('a.tab-nav-activ').click(ep.fn.showMenu);
	//$('a.tab-refine').click(ep.fn.showRefine);
	$('a.bt-refine').click(ep.fn.refineBusca);
//	ep.fn.showSearchedTerms();
	$('#lnkLimparHistorico').bind('click', function(){
		ep.fn.eraseCookie('ST');
		$('#ulUltimasBuscas ul').html('');
		return false;
	});
};

debug = function(){
		$('td.debug').parent().mouseover(function(e){
			$(this).find('td.debug').css('display', 'fixed');
			$(this).find('td.debug').show();
		}).mouseout(function(e){
			$(this).find('td.debug').hide();
			$(this).find('td.debug').css('display', 'none');
		}).parent().css('overflow', 'visible');
}

function verifyRequired () {

}

function synchronizeSessionsAndLoadPage(){
    var pingCookie = ep.fn.readCookie('ping');
    if(!pingCookie){
        ep.fn.createCookie('ping', '0', null);
        $.ajax({
            url: basketUrl+"/login/ping",
            data: {},
            success: function(response, status, xhr) {
            },
            error: function(xhr, textStatus, errorThrown){
            },
            complete: function(xhr, status){
                startPageLoad();
            }
        });
    }else{
        startPageLoad();
    }
}

function startPageLoad(){
    login();
    debug();
    $('a.productElement, input.btComprarLista').unbind().click(addProduct);
    $('#divCarrinhoResumo').unbind().bind('comprar', comprou);

    $('li.qtdMudar a').unbind().each(function() {
        var t = $(this).parents('div.prdQtd').eq(0).find('input.qtd').attr('id'),
        c = $(this).parents('table').eq(0).find('a.productElement').attr('id');
        $(this).data('campos', {campoQtd: t, btComprar: c});
    }).click(botaoMudarQuantidade);

    $('input.qtd').change(numberValidator);
    ep.fn.alternaTextoDefault('.fitext.buscaTexto');

    $('#ecad').unbind().click(abrejanelaecad);

    $('#compraSegura').unbind().click(abrejanelacomprasegura);
    $('#mnrSeguro').unbind().click(abrejanelacomprasegura);
    ep.fn.setupTelemarketing();
    $('div.searchWrapper').eq(1).find('a.elemEnderecoEntrega').remove();
    $('a.print, #btImprimir, #printBasket, a.printBasket').unbind().live('click',ep.fn.imprimirPagina);
    ep.fn.setupNovaBusca();

    if ($.browser.webkit) {
        $("body").addClass("webkit");
    }
}

function AbrirFichaCadastralNew()		{
    window.open(basketUrlSecure+"/showcase/boletoCadastral","FichaCadastral","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=530,height=480,top=0,left=0");
}

function AbrirProcuracaoNew()		{
    window.open(basketUrlSecure+"/showcase/boletoProcuracao","Procuração","status=no,menubar=no,location=no,toolbar=no,scrollbars=yes,width=482,height=480,top=0,left=0");
}

$(document).ready(function() {
    synchronizeSessionsAndLoadPage();
    setInterval("killSessionCookiesByTime();", 60 * 1000);
});


function killSessionCookiesByTime(){
    stepElapsed++;
    if(stepElapsed == timeToExpireCookies){
        //"Apagando cookie ping"
        ep.fn.createCookie('ping', '0', -1);
    }
}

function resetStepElapsed(){
    stepElapsed = 0;
}


//Trata o timeout da session com ajax
var handleAjaxStatus = function handleAjaxStatus(status){
    if (status == 403) {
        window.location.href = basketUrlSecure+"/login/login";
    }
}

$(document).bind("ajaxSend", function() {}).bind("ajaxComplete", function(event, xhr, settings) {
    handleAjaxStatus(xhr.status);
});

