var alert_overlay, yesno_overlay, yesno_buttons;
var Site = {
	_init: function(){
		try{
			this._util();
			//this._startAlerts();
		}catch(e){
			alert(
				'Arquivo   : ' + e.fileName + ' \n ' +
				'Linha     : ' + e.lineNumber + ' \n ' +
				'Nome      : ' + e.name + ' \n ' +
				'Descrição : ' + e.message + ' \n '
			);
		};
	},

	_util: function(){
		$.ajaxSetup({ cache:false });
		
		//Cufon
		Cufon.set('fontFamily', 'Frutiger Bold');
		Cufon.replace('ul.secundario a, footer.main a, ul.breadcrumb, article header .buttons a, article.cardapio ul.lista li span:not(.over-image), aside .produto-destaque span, article.imprensa fieldset label, article.imprensa span.data, article.imprensa aside .green p.name, article.imprensa aside .green p.tel, article.na-midia div.lista ul li p span.data span.diames, article.na-midia div.lista ul li p span.data span.ano, article.fale-conosco aside .yellow a, #mensagem_enviada p, article.combos h4',{hover:'true', 'letterSpacing': '-0.4px'});
		Cufon.replace('.link, h4',{'letterSpacing': '-0.7px'});
		Cufon.replace('h2, h3, article.fale-conosco aside .box a, article.imprensa.arquivo .title h1',{hover:'true', 'letterSpacing': '-1.2px'});
		Cufon.replace('#mensagem_enviada h1',{'letterSpacing': '-1.2px'});
		
		Cufon.set('fontFamily', 'Frutiger Roman');
		Cufon.replace('article.restaurantes ul.lista li a, .button, .informacoes span, article.sobre-america ul.lista li, .consulta-cadastro label', {'letterSpacing': '-0.7px'});
		Cufon.replace('.consulta-cadastro label', {'letterSpacing': '-0.7px'});
		Cufon.replace('.quero-cadastrar h2, .acessar-conta h2, .pergunta h2', {'letterSpacing':'-2.8px'});
		Cufon.replace('article h1:not(article.imprensa.arquivo .title h1)',{hover: 'true', 'letterSpacing': '-4.8px'});
		
		$.tools.validator.localize('pt', {
			'*'  			: 'Preencha corretamente o campo.',
			':email'  		: 'O endereço de e-mail deve ser válido.',
			':number' 		: 'O valor deve ser numérico.',
			':url'	 		: 'O link deve ser válido.',
			'[max]'	 		: 'Número deve ser menor que $1.',
			'[min]'	 		: 'Número deve ser maior que $1.',
			'[required]' 	: 'Campo obrigatório.'
		});
		$.tools.validator.conf.message='<div><span/></div>';
		$.tools.validator.conf.lang='pt';
		$.tools.validator.conf.errorInputEvent='blur';
		//Validacao de confirmacao de valores
		$.tools.validator.fn("[data-equals]", { pt: 'Valores devem ser iguais.' }, function(input) {
			var name = input.attr("data-equals"),
			field = this.getInputs().filter("[name=" + name + "]"); 
			return input.val() == field.val() ? true : [name]; 
		});
		//Validacao de quantidade minima de characteres
		$.tools.validator.fn("[minlength]", function(input, value) {
			var min = input.attr("minlength");
			return (value.length>=min || value.length==0) ? true : {     
				pt: "Insira pelo menos " +min+ " caracter" + (min > 1 ? "es." : ".")
			};
		});
		jQuery.tools.validator.fn("[type=cnpj]", { pt: 'CNPJ deve ser válido.' }, function(element, cnpj) {
			return isValidCNPJ(element, cnpj);
		});
		jQuery.tools.validator.fn("[type=cpf]", { pt: 'CPF deve ser válido.' }, function(element, value) {
			return isValidCPF(element, value);
		});
		//Validacao de cpf ou cnpj
		$.tools.validator.fn("[type=cpf_cnpj]", { pt: 'CPF ou CNPJ devem ser válidos.' }, function(element, value) {
			return ( isValidCNPJ(element, value) || isValidCPF(element, value) ); 
		});
		$.tools.validator.fn("[type=date_form]", { pt: 'Data deve ser válida.' }, function(input, value) {
			if (value) 
				return isValidDate(value);
			else return true;
		});
		// adds an effect called "wall" to the validator
		$.tools.validator.addEffect("wall", function(errors, event) {
			// get the message wall
			var wall = $(this.getConf().container).fadeIn();
			// remove all existing messages
			wall.find("p").remove();
			// add new ones
			$.each(errors, function(index, error) {
				wall.append(
					"<p><strong>" +error.messages[0]+ "</strong></p>"
				);		
			});
		// the effect does nothing when all inputs are valid	
		}, function(inputs){});
		
		$.tools.expose.conf.onLoad = function() {
			if (this.getConf().maskId != 'exposeMaskDelivery') {
				var expose = this.getMask();
				this.getMask().remove();
				$('section.container-main').append(expose);
			}
		};
		
		alert_overlay = $('.alert-overlay').overlay({
			//fixed: true,
			mask: {
				color: '#000',
				opacity: 0.4,
				loadSpeed: 0,
				closeSpeed: 0
			},
			top: 'center',
			left: 'center',
			closeSpeed: 0,
			onLoad: function() {
				Cufon.replace('.alert-overlay h3',{'fontFamily':'Frutiger Bold', 'letterSpacing': '-1.2px'});
				Cufon.replace('.alert-overlay h4',{'fontFamily':'Frutiger Bold', 'letterSpacing': '-0.7px'});
			}
		});
		yesno_overlay = $('.yesno-overlay').overlay({
			//fixed: true,
			mask: {
				color: '#000',
				opacity: 0.4,
				loadSpeed: 0,
				closeSpeed: 0
			},
			top: 'center',
			left: 'center',
			close: '.yesno-overlay .button-overlay',
			closeOnClick: false,
			closeOnEsc: false,
			closeSpeed: 0,
			onLoad: function() {
				Cufon.replace('.yesno-overlay h3',{'fontFamily':'Frutiger Bold', 'letterSpacing': '-1.2px'});
			}
		});
		//yesno_buttons = $(".yesno-overlay .button").click(function(e) {
			// get user input
			//var yes = buttons.index(this) === 0;
			// do something with the answer
			//triggers.eq(0).html("You clicked " + (yes ? "yes" : "no"));
		//});
		
		//Selects Personalizados Verdes
		$('select.select-green').each(function(){
			var orig = $(this);
			var span = $('<span name="'+orig.attr('name')+'" style="width:'+orig.css('width')+'" class="select-green"></span>');
			orig.css({height:30, display:'inline-block', width:0, padding:0, border:'none', 'vertical-align':'top', 'visibility':'hidden'});
			var txt = $('<span class="txt">'+orig.find('option:selected').text()+'</span>');
			var list = $('<span class="list"></span>');
			
			//Monta os options
			orig.find('option').each(function(){
				var oriopt = $(this);
				//var newopt = $('<span class="option" value="'+oriopt.val()+'">'+oriopt.text()+'</span>');
				var newopt = $('<span class="option">'+oriopt.text()+'</span>');
				//cria todos os atributos necessarios, criados no option
				$.each(oriopt[0].attributes, function(i, v) {
					newopt.attr(v.nodeName, v.nodeValue);
				});
				if (oriopt.is(':selected')){
					newopt.addClass('selected');
					txt.text(oriopt.text());
					orig.val(oriopt.val());
				}
				list.append(newopt);
			});
			
			var button = $('<button></button>');
			span.append(txt).append(button).append(list);
			orig.before(span);
			list.css('width',(span.width()+5));
			
			//Clicar no botão
			button.add(txt).click(function(e){
				e.preventDefault();
				if(list.is(':visible')){
					closesel();
				} else {
					opensel();
				}
			});
			
			//Ao selecionar uma opção
			list.find('span').click(function(){
				$(this).parent().find('span').removeClass('selected');
				$(this).addClass('selected');
				txt.text($(this).text());
				orig.val($(this).attr('value')).trigger('focus').trigger('blur');
				closesel();
			});
			
			//Ao mudar o select original através de Javascript
			orig.change(function(){
				list.find('span[value="'+orig.val()+'"]').click();
			});
			
			//Fecha o Select
			function closesel(){
				span.removeClass('open');
				list.hide();				
			}
			//Abre o Select
			function opensel(){
				span.addClass('open');
				list.show();
			}
			
			//Fechar ao clicar em outro lugar
			$(document).mousedown(function(e){
				if ($(e.target).parents('span.select-green').length == 0){
					closesel();
				} else {
					var param1 = $(e.target).parents('.select-green').offset().left +''+ $(e.target).parents('.select-green').offset().top;
					var param2 = span.offset().left +''+ span.offset().top;
					if (param1 != param2) closesel();
				}
			});
			
		});
		
	},
	
	_startAlerts: function(){
		alertTime = 30000;
		
		$.getJSON('/?acao=l_alertas&formato=json', function(data){
			if(data.alertas > 0) {
				$('ul.alertas li.alerta > a span').html(data.alertas).show();
				$('ul.alertas li.alerta > a').attr('title','Veja as novas publicações dos administradores');
			} else {
				$('ul.alertas li.alerta > a span').html('').hide();
				$('ul.alertas li.alerta > a').attr('title','Não há novas publicações dos administradores');
			}

			if(data.mensagens > 0) {
				$('ul.alertas li.mensagem > a span').html(data.mensagens).show();
				$('ul.alertas li.mensagem > a').attr('title','Veja as novas mensagens');
			} else {
				$('ul.alertas li.mensagem > a span').html('').hide();
				$('ul.alertas li.mensagem > a').attr('title','Não há novas notificações para mensagens');
			}

			if(data.mural > 0) {
				$('ul.alertas li.notificacao > a span').html(data.mural).show();
				$('ul.alertas li.notificacao > a').attr('title','Veja as novas publicações em seu mural');
			} else {
				$('ul.alertas li.notificacao > a span').html('').hide();
				$('ul.alertas li.notificacao > a').attr('title','Não há novas publicações em seu mural');
			}
		});
		
		setTimeout('Site._startAlerts();',alertTime);
	}
};

/***********************************************************************************************************************************************/

function isValidCNPJ(element, cnpj) {
	cnpj = jQuery.trim(cnpj);// retira espaços em branco
	// DEIXA APENAS OS NÚMEROS
	cnpj = cnpj.replace('/','');
	cnpj = cnpj.replace('.','');
	cnpj = cnpj.replace('.','');
	cnpj = cnpj.replace('-','');
	
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais;
	digitos_iguais = 1;
	
	if (cnpj.length < 14 && cnpj.length < 15) return false;
	for (i = 0; i < cnpj.length - 1; i++){
		if (cnpj.charAt(i) != cnpj.charAt(i + 1)){ digitos_iguais = 0; break; }
	}
	
	if (!digitos_iguais){
		tamanho = cnpj.length - 2
		numeros = cnpj.substring(0,tamanho);
		digitos = cnpj.substring(tamanho);
		soma = 0;
		pos = tamanho - 7;
		
		for (i = tamanho; i >= 1; i--){
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2) pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(0)) return false;

		tamanho = tamanho + 1;
		numeros = cnpj.substring(0,tamanho);
		soma = 0;
		pos = tamanho - 7;
		for (i = tamanho; i >= 1; i--){
			soma += numeros.charAt(tamanho - i) * pos--;
			if (pos < 2) pos = 9;
		}
		resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
		if (resultado != digitos.charAt(1)) return false;
		
		return true;
	} else return false;
}

/***********************************************************************************************************************************************/

function isValidCPF(element, value) {
	value = jQuery.trim(value);
	if (value) {
		value = value.replace('.','');
		value = value.replace('.','');
		cpf = value.replace('-','');
		while(cpf.length < 11) cpf = "0"+ cpf;
		var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
		var a = [];
		var b = new Number;
		var c = 11;
		for (i=0; i<11; i++){
			a[i] = cpf.charAt(i);
			if (i < 9) b += (a[i] * --c);
		}
		if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
		b = 0;
		c = 11;
		for (y=0; y<10; y++) b += (a[y] * c--);
		if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
		if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
	}
	return true;
}

/***********************************************************************************************************************************************/

function isValidDate(strDate){
	var dteDate;
	var day, month, year;
	var datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/;
	var matchArray = strDate.match(datePat);
	
	if (matchArray == null)
		return false;
	
	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];
	month--;
	
	dteDate=new Date(year,month,day);
	return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}

/***********************************************************************************************************************************************/

function isNumeric(value) {
	if (value == '' || value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) return false;
	return true;
}

/***********************************************************************************************************************************************/

function strip(html) {
	var tmp = document.createElement("DIV");
	tmp.innerHTML = html;
	return tmp.textContent||tmp.innerText;
}

/***********************************************************************************************************************************************/

function white_space(field){
	return field.replace(/^\s*|\s*$/g,'');
}

/***********************************************************************************************************************************************/

function loadImage(srcImage, objPai, vAlg) {
	var img = new Image();
	$(img).load( function() {
		$(objPai).prepend($(this));
		if(vAlg) $(this).vAlign();
	}).error(function () {
		//alert('erro');
	}).attr('src',srcImage).attr('alt','');
}

/***********************************************************************************************************************************************/

// Recupera variável querystring
function QueryString(parametro, url) {
    if(!url)
		var variaveis = location.search.replace(/\x3F/,'').replace(/\x2B/g,' ').split('&');
	else
		var variaveis = url.replace(/\x3F/,'').replace(/\x2B/g,' ').split('&');
    var nvar;
    if(variaveis != '') {
        var qs=[];
        for(var i = 0; i < variaveis.length; i++) {
            nvar = variaveis[i].split('=');
            qs[nvar[0]] = unescape(nvar[1]);
        }
        return qs[parametro];
    }
    return '';
}

/***********************************************************************************************************************************************/

jQuery.fn.slideFadeToggle = function(speed, easing, callback) {
	return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);  
};

/***********************************************************************************************************************************************/

/*Alinha elementos na vertical - ie: $('#example p').vAlign();*/
jQuery.fn.vAlign = function() {
	return this.each(function(i){
		var ah = $(this).height();
		var ph = $(this).parent().height();
		var mh = Math.ceil((ph-ah) / 2);
		$(this).css('margin-top', mh);
	});
};

/***********************************************************************************************************************************************/

/*COOKIE - novo*/
function createCookie(name,value,days) {
	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=/";
}

/*COOKIE - ler*/
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var 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;
}

/*COOKIE - excluir*/
function eraseCookie(name) {
	createCookie(name,"",-1);
}

/***********************************************************************************************************************************************/
	
function resizeWindow() {
	var bH = $('body').height();
	var wH = $(window).height();
	
	if((wH > bH)){
		var mh = Math.ceil((wH-bH) / 2);
		document.body.style.marginTop = mh + 'px';
	} else {
		document.body.style.marginTop = '0px';
	}
}

/***********************************************************************************************************************************************/

function initializeMap(places) {
	var myOptions = {
		minZoom: 1, 
		maxZoom: 16, 
		center: new google.maps.LatLng(0,0), 
		navigationControl: true, 
		streetViewControl: false, 
		mapTypeControl: true, 
		scaleControl: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
	
	map = new google.maps.Map(document.getElementById('mapa'), myOptions);
	
	var labelText = document.createElement("div");
	var myOptions = {
		content: labelText,
		//boxStyle: { width: "auto" },
		pixelOffset: new google.maps.Size(0, -232),//-111
		closeBoxURL: "/templates/img/ico/fechar-2-overlay.png",
		closeBoxMargin: "-20px -20px 0 0",
		isHidden: false,
		pane: "floatPane"/*,
		alignBottom: true,
		isRollover: false,
		enableEventPropagation: false*/
	};
	infBox = new InfoBox(myOptions);

	setMarkers(map, places, infBox);
}

function setMarkers(map, locations, box) {
    var bounds = new google.maps.LatLngBounds();
	markersArray = [];
	for (var i = 0; i < locations.length; i++) {
		var place = locations[i];
		var myLatLng = new google.maps.LatLng(place[2], place[3]);
		var marker = new google.maps.Marker({
			position: myLatLng,
			map: map,
			icon: '/templates/img/ico/mapa-pin.png',
			title: place[1]/*,
			zIndex: place[5]*/
		});
		markersArray.push(marker);
		$('a[rest_id='+place[0]+']').attr('markerId',(markersArray.length-1))
		bounds.extend(myLatLng);
		map.fitBounds(bounds);
		openPageMarker(marker, locations[i], box, map);
	}
}

function openPageMarker(marker, place, box, map) {
	google.maps.event.addListener(marker, 'click', function() {
		//REPOSICIONA MAPA
		map.setCenter(marker.getPosition());
		map.setZoom(16);
		map.panBy(0, -118);
		
		var linkPrint = 'http://maps.google.com.br/maps?f=q&source=s_q&hl=pt-BR&geocode=&q='+place[4]+'&aq=&sll='+place[2]+','+place[3]+'&sspn=&vpsrc=0&ie=UTF8&hq=&hnear='+place[4]+'+-+'+place[5]+'&t=m&z=17&ei=&pw=2';
		var linkRoute = 'http://maps.google.com.br/maps?f=d&hl=pt-BR&geocode=&daddr='+place[4]+'+-+'+place[5];
		
		//CRIA O INFOBOX
		var bt_link = '<a href="'+linkPrint+'" class="print-mapa" target="_blank" onClick="_gaq.push([\'_trackEvent\', \'Restaurantes\', \'Botão Imprimir\', \''+place[1]+'\'])"></a>';
		var bt_route = '<a href="'+linkRoute+'" class="route-mapa" target="_blank" onClick="_gaq.push([\'_trackEvent\', \'Restaurantes\', \'Botão Rota\', \''+place[1]+'\'])"></a>';
		var bt_mail = '<a href="javascript:;" class="mail-mapa" rel="#button_envia_mapa" onClick="_gaq.push([\'_trackEvent\', \'Restaurantes\', \'Botão Envia Email\', \''+place[1]+'\'])"></a>';
		var content = '<div class="c_top"><span>'+place[1]+'</span></div><div class="c_det"><span><p class="end">'+place[4]+'</p><p class="bai">'+place[5]+'</p><p class="tel">'+place[6]+(place[8]!=0 ? '<br>(11) 5644-2222 - Delivery' : '')+'</p></span></div>';
		content += bt_link + bt_route + bt_mail;
		box.setContent(content);
		box.setPosition(this.getPosition());
		box.setZIndex(-1);
		box.open(map);
		google.maps.event.addDomListener(box,'domready',function(){ 
			$('.infoBox span').vAlign(); 
			$('a.mail-mapa').click(function() { sendMapMail(this,place); });
		});
		//PAGINA DE DETALHE DO RESTAURANTE
		$('.pontos .page').hide();
		if ($('#restaurantes_detalhes ul li#rest_'+place[0]).length == 0) {
			//$.ajax({type: "GET", url:"restaurantes-detalhe.php", data: 'id='+place[0], dataType: "html"})
			$.ajax({type: "GET", url:"/templates/template_restaurantes_detalhe.php", data: 'id='+place[0], dataType: "html"})
			.success( function(data) {
				$('#restaurantes_detalhes > ul').append(data);
				$('#restaurantes_detalhes > ul > li').hide();
				$('#restaurantes_detalhes, #restaurantes_detalhes > ul li#rest_'+place[0]).show();
			})
			.error( function() { alert('Falha ao carregar o detalhe do Restaurante!'); })
			.complete( function() { bindDetalheRestaurante('#rest_'+place[0]); });
		} else {
			$('#restaurantes_detalhes > ul > li').hide();
			$('#restaurantes_detalhes, #restaurantes_detalhes > ul li#rest_'+place[0]).show();
		}
	});
}

/***********************************************************************************************************************************************/

var moeda = function (nStr){
	nStr = nStr.toFixed(2);
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? ',' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) x1 = x1.replace(rgx, '$1' + '.' + '$2');
	return x1 + x2;
}

function calcValorMultiplica(valor, multi) {
	valor = parseFloat(white_space(valor).replace(',','.'));
	return moeda(valor*multi);
}

function calcValorSoma(val_1, val_2) {
	val_1 = parseFloat(white_space(val_1).replace(',','.'));
	val_2 = parseFloat(white_space(val_2).replace(',','.'));
	return moeda(val_1+val_2);
}

/***********************************************************************************************************************************************/

//Criador de elementos  HTML
jQuery.create = function() {
    if (arguments.length == 0) return [];
    var args = arguments[0] || {}, elem = null, elements = null;
    var siblings = null;

    // In case someone passes in a null object,
    // assume that they want an empty string.
    if (args == null) args = "";
    if (args.constructor == String) {
        if (arguments.length > 1) {
            var attributes = arguments[1];
                if (attributes.constructor == String) {
                            elem = document.createTextNode(args);
                            elements = [];
                            elements.push(elem);
                            siblings = jQuery.create.apply(null, Array.prototype.slice.call(arguments, 1));
                            elements = elements.concat(siblings);
                            return elements;

                    } else {
                            elem = document.createElement(args);

                            // Set element attributes.
                            var attributes = arguments[1];
                            for (var attr in attributes)
                                jQuery(elem).attr(attr, attributes[attr]);

                            // Add children of this element.
                            var children = arguments[2];
							children = jQuery.create.apply(null, children);
							jQuery(elem).append(children);

                            // If there are more siblings, render those too.
                            if (arguments.length > 3) {
                                    siblings = jQuery.create.apply(null, Array.prototype.slice.call(arguments, 3));
                                    return [elem].concat(siblings);
                            }
                            return elem;
                    }
            } else return args; //document.createTextNode(args);
      } else {
              elements = [];
              elements.push(args);
              siblings = jQuery.create.apply(null, (Array.prototype.slice.call(arguments, 1)));
              elements = elements.concat(siblings);
              return elements;
      }
};

/***********************************************************************************************************************************************/

// 'id do pedido', 'quantidade', 'nome do produto', 'valor do opcional - nome do opcional'
function createListaPedidos(id, CarrinhoProdutosID, qtd, nome, detalhes, val_unico, val_total){
			//<p><span>R$10,00</span>Molho: Paulista</p>
	var li_root = $.create('li', {'id':id, 'CarrinhoProdutosID':CarrinhoProdutosID, 'unico-item':val_unico, 'total-item':val_total}, []);
	//infos
	var div_infos = $.create('div', {'class':'infos'}, []);
		//qtd
		var strong_qtd = $.create('strong', {'class':'qtd'}, []);
			/*//up
			var button_up = $.create('button', {'class':'f_rt up'}, []);
			$(strong_qtd).append($(button_up));*/
			//val
			var span_val = $.create('span', {'class':'f_rt'}, [qtd]);
			$(strong_qtd).append($(span_val));
			/*//down
			var button_down = $.create('button', {'class':'f_rt down'}, []);
			$(strong_qtd).append($(button_down));*/
		$(div_infos).append($(strong_qtd));
		//nome
		var strong_nm = $.create('strong', {}, [nome]);
		$(div_infos).append($(strong_nm));
		
		//detalhe
		if (detalhes){
			var div_detalhe = $.create('div', {'class':'detalhe'}, []);
				//link detalhe
				var a_details = $.create('a', {'class':'details', 'href':'javascript:;'}, ['+ Detalhes']);
				$(div_detalhe).append($(a_details));
				//link detalhe
				$(div_detalhe).append($(detalhes));
			$(div_infos).append($(div_detalhe));
		}
	
	$(li_root).append($(div_infos));
	
	//link excluir
	var a_excluir = $.create('a', {'class':'excluir', 'href':'javascript:;', 'onClick':'_gaq.push([\'_trackEvent\', \'Delivery\', \'Excluir Produto\', \'Home Delivery\'])'}, []);
	$(li_root).append($(a_excluir));
	
	return li_root;
}

/***********************************************************************************************************************************************/

function createListaCombo(id, nome, descricao, itens, valor) {
	var li_root = $.create('li', {'id':'combo_'+id}, ['<div class="bd-tp"></div><div class="bd-lf"></div><div class="bd-bt"></div><div class="bd-rt"></div>']);
	//div tab
	var div_tab = $.create('div', {'class':'tab'}, []);
		//nome
		var div_combo_nome = $.create('div', {'class':'combo-nome'}, ['<strong>'+nome+'</strong>']);
		$(div_tab).append($(div_combo_nome));
		
		//descricao
		descricao = (descricao!='' ? descricao : ' ');
		var div_combo_descricao = $.create('div', {'class':'combo-descricao'}, [descricao]);
		$(div_tab).append($(div_combo_descricao));
		
		//itens
		var div_combo_itens = $.create('div', {'class':'combo-itens'}, [itens]);
		$(div_tab).append($(div_combo_itens));
		
		//valor
		var div_combo_valor = $.create('div', {'class':'combo-valor'}, [valor]);
		$(div_tab).append($(div_combo_valor));
		
		//pedir
		//var div_combo_pedir = $.create('div', {'class':'combo-pedir'}, ['<a href="delivery.php?combo_id='+id+'" class="button plus-overlay" style="display:nome;">Pedir</a>']);
		var div_combo_pedir = $.create('div', {'class':'combo-pedir'}, []);
		$(div_tab).append($(div_combo_pedir));
		
		//excluir
		var div_combo_excluir = $.create('div', {'class':'combo-excluir'}, ['<a href="javascript:;" class="excluir" id="ComboID-6"></a>']);
		$(div_tab).append($(div_combo_excluir));
	$(li_root).append($(div_tab));

	//pane
	var div_pane = $.create('div', {'class':'pane'}, []);
		//ul
		var ul = $.create('ul', {}, []);
		$(div_pane).append($(ul));
	$(li_root).append($(div_pane));
	
	return li_root;
}

/***********************************************************************************************************************************************/

function createListaAddCombo(id, template, nome) {
	/*<li id="combo-4">
		<a rel="#combo_overlay" href="">Combo Y</a>
	</li>*/
	var li_root = $.create('li', {'id':'combo-'+id}, []);

	//a combo
	var a = $.create('a', {'rel':'#combo_overlay', 'href':template}, [nome]);
	$(li_root).append($(a));
	
	return li_root;
}

/***********************************************************************************************************************************************/

function createListaEnderecos(id, name, indice, tipo, endereco, bairro, hasActions, isPadrao) {
	var li_root = '';
	if (isPadrao) 
		li_root = $.create('li', {'id':'end-'+id, 'class':'padrao'}, []);
	else
		li_root = $.create('li', {'id':'end-'+id}, []);
	//option
	var div_option = $.create('div', {'class':'option'}, []);		
		//radio
		var input = '';
		if (isPadrao) 
			input = $.create('input', {'type':'radio', 'name':name, 'id':'endereco_'+id, 'value':id, 'checked':'checked'}, []);
		else
			input = $.create('input', {'type':'radio', 'name':name, 'id':'endereco_'+id, 'value':id}, []);
		$(div_option).append($(input));
	$(li_root).append($(div_option));

	//label
	var label = $.create('label', {'class':'f_lf', 'for':'endereco_'+id}, []);
		//num
		var div_num = $.create('div', {'class':'num'}, [indice]);
		$(label).append($(div_num));

		//det
		var div_det = $.create('div', {'class':'det'}, ['<strong>'+tipo+'</strong><span> - Padrão</span>']);
			//endereco
			var p_endereco = $.create('p', {}, [endereco+' - '+bairro]);
			$(div_det).append($(p_endereco));
			
		$(label).append($(div_det));
	//var inputs = '<input type="hidden" name="cep" value="05587-456"><input type="hidden" name="endereco" value="Rua Teodoro Sampaio"><input type="hidden" name="numero" value="744"><input type="hidden" name="complemento" value="Apto 157"><input type="hidden" name="bairro" value="Pinheiros"><input type="hidden" name="cidade" value="São Paulo"><input type="hidden" name="estado" value="SP"><input type="hidden" name="tipo_endereco" value="Residencial">';
	$(li_root).append($(label));
	
	if (hasActions) {
		//editar e excluir
		var p = $.create('p', {}, ['<a href="javascript:;" class="edit">Editar</a><!--&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href="javascript:;" class="delete">Excluir</a>-->']);
		$(li_root).append($(p));
	}

	return li_root;
}

/***********************************************************************************************************************************************/

$.isJson = function(str) {
	if ($.trim(str) == '') return false;
	str = str.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
	return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
}

/***********************************************************************************************************************************************/

function atualizaCampos(isPJ) {
	if (isPJ) {
		$('form .isPF').hide(0);
		$('form .isPF input').val('').attr('disabled','disabled');
		$('form .isPF .option:first').click();
	} else {
		$('form .isPF').show(0);
		$('form .isPF input').removeAttr('disabled');
		//$('form .isPF input').val('');
	}
}

/***********************************************************************************************************************************************/

$(document).ready(function() {
	//var modal_alert = null;
	//var modal_confirm = null;
	Site._init();
});

var JSON = JSON || {}; 
JSON.stringify = JSON.stringify || function (obj) {
	var t = typeof (obj);
	if (t != "object" || obj === null) {
		// simple data type
		if (t == "string") obj = '"'+obj+'"';
		return String(obj);
	}
	else {
		// recurse array or object
		var n, v, json = [], arr = (obj && obj.constructor == Array);
		for (n in obj) {
			v = obj[n]; t = typeof(v);
			if (t == "string") v = '"'+v+'"';
			else if (t == "object" && v !== null) v = JSON.stringify(v);
			json.push((arr ? "" : '"' + n + '":') + String(v));
		}
		return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
	}
};

