var lastURL = null;
var mascara = null;
var valid = null;

// Validations
Validation.add('validate-password', 'Sua senha deve ser de no mínimo 6 caracteres', {
  minLength : 5,
  notOneOf : ['senha','SENHA','12345','01234']
});

Validation.add('validate-password2', 'Senhas estão diferentes', {
  equalToField : 'ClientPassword1'
});

Validation.add('validate-password3', 'Senhas estão diferentes', {
  equalToField : 'ContactPassword1'
});



function goToURL(callback) {
  if ($('center_content')) eval('go'+callback+'();');
  else {
    new Ajax.Updater('content', strURL+'pages/blank', {
      onComplete: function(t) {
        eval('go'+callback+'();');
      },
      evalScripts: true
    });
  }
}

function subSetFullHeight() {
  
  setTimeout('setFullHeight();', 1250);
}

function setFullHeight() {
  BrowserDetect.init();
  
  var somador = 0;
  if ((BrowserDetect.browser == 'Firefox' && BrowserDetect.version < 3) || (BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7)) {
    somador = -1;
    somador2 = 0;
  } else if (BrowserDetect.browser == 'Explorer' && BrowserDetect.version >= 7) {
    somador = -1;
    somador2 = 0;
  } else {
    somador = 1;
    somador2 = -8;
  }
  if ($('menuLateral_1') && $('menuLateral_2')) {
    hCenter = $('content').getHeight();
    hCenterB = $('center_content').getHeight();
		hMenu1 = $('menuLateral_1').getHeight();
		if (hCenter >= hMenu1 || (hMenu1 - hCenter) < 20) {
		  if (hCenterB > hCenter) {
		    hCenter = hCenterB+5;
		    Element.setHeight('content', hCenter);
		  }
      Element.setHeight('menuLateral_1', hCenter+(somador));
		  Element.setHeight('menuLateral_2', hCenter+(somador));
    } else {
      //Element.setHeight('menuLateral_1', hCenter);
      //hMenu1 = $('menuLateral_1').getHeight();
      Element.setHeight('content', hMenu1+(somador2));
      Element.setHeight('menuLateral_2', hMenu1);
    }
  } else if ($('menuLateral_1')) {
    hCenter = $('content').getHeight();
    Element.setHeight('menuLateral_1', hCenter+1);
  }
}

function nextHighlight(url) {
  new Ajax.Request(url, {
    onLoading: loadHighlight,
    onComplete: updateHighlight,
    onException: function(t, err) {
      alert(t.responseText);
      alert(err);
    }
  });
}

function loadHighlight() {
  try {
    var overlay = '<div id="overlay2">';
  	overlay += '<br /><br /><br /><img src="'+strURL+'img/site/loader.gif" /><br /><br />Buscando...';
  	overlay += '</div>';
  	new Insertion.Top('update_highlight', overlay);
    new Effect.Appear('overlay2', { duration: 0.2, from: 0.0, to: 0.8 });
  } catch (err) {
    alert(err);
  }
}

function updateHighlight(hist) {
  try {
    dados = eval('(' + hist.responseText + ')');
  } catch (err) {
    alert('Objeto JSON inválido');
  }
  $('hTitle').innerHTML = '<h5>'+dados.PRODUCT[0].name+'</h5>';
  if (dados.PRODUCT[0].reference)
    $('hTitle').innerHTML += '<small>Referência: '+dados.PRODUCT[0].reference+'</small>';
    
  $('hImage').src = dados.PRODUCT[0].image.unescapeHTML();
  $('spn_descr_product').innerHTML = dados.PRODUCT[0].description;
  $('lnkCateg').innerHTML = dados.PRODUCT[0].category;
  if (dados.PRODUCT[0].brand != undefined) {
    $('lnkBrand').innerHTML = dados.PRODUCT[0].brand;
    $('dvBrand').show();
  } else {
    $('dvBrand').hide();
  }
  if (dados.PRODUCT[0].promotion) $('img_promo').show();
  else $('img_promo').hide();

  if (dados.PRODUCT[0].news) $('img_news').show();
  else $('img_news').hide();

  try {
    $('lnkMore', 'lnkDetails', 'lnkDetails2', 'lnkCateg', 'lnkBrand', 'lnkOrca').each(function(elem) {
      elem.onclick = '';
    });
  } catch (err) {
    alert(err);
  }
  Event.observe('lnkMore', 'click', function() {getProduct(dados.PRODUCT[0].id);});
  Event.observe('lnkDetails', 'click', function() {getProduct(dados.PRODUCT[0].id);});
  Event.observe('lnkDetails2', 'click', function() {getProduct(dados.PRODUCT[0].id);});
  Event.observe('lnkCateg', 'click', function() {goCategory(dados.PRODUCT[0].category_id);});
  if (dados.PRODUCT[0].brand != undefined) {
    Event.observe('lnkBrand', 'click', function() {goBrand(dados.PRODUCT[0].brand_id);});
  }
  //Event.observe('lnkOrca', 'click', function() {addCartDirect(dados.PRODUCT[0].id, '/ev/cart/add');});
  $('lnkOrca').onclick = function() {
      addCartDirect(dados.PRODUCT[0].id, strURL+'cart/add');
  }
  new Effect.Fade('overlay2', { duration: 0.2, afterFinish: function(){ $('overlay2').remove(); } });
}

function getProduct(prod, hist) {
  if (hist != undefined)
    lastURL = hist;
  else
    lastURL = strURL+'products/index';

  new Ajax.Updater('center_content', strURL+'products/view/'+prod, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goBack() {
  new Ajax.Updater('center_content', lastURL, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goHome() {
  new Ajax.Updater('center_content', strURL+'products/index', {
    onLoading: showMainOverlay,
    onComplete: function() {
	  	hideMainOverlay();
	  	buildsubmenus();
  	},
    evalScripts: true
  });
}

function goHistory() {
  new Ajax.Updater('center_content', strURL+'entities/history', {
    onLoading: showMainOverlay,
    onComplete: function() {
	  	hideMainOverlay();
	  	buildsubmenus();
  	},
    evalScripts: true
  });
}

function goBrand(brand) {
  new Ajax.Updater('center_content', strURL+'brands/view/'+brand, {
    onLoading: showMainOverlay,
    onComplete: function() {
	  	hideMainOverlay();
	  	buildsubmenus();
  	},
    evalScripts: true
  });
}

function goCategory(categ) {
  new Ajax.Updater('center_content', strURL+'categories/view/'+categ, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goClientArea(page) {
  if (page == undefined) page = 'index';
  url = strURL+'clients/index?page='+page;
  new Ajax.Updater('content', url, {
    onLoading: showMainOverlay,
    onComplete: function(t) {
      hideMainOverlay();
      if (page == 'budget') goBudget();
    },
    evalScripts: true
  });
}

function goToPage(url) {
  if ($('center_content')) {
    new Ajax.Updater('center_content', url, {
      onLoading: showMainOverlay,
      onComplete: hideMainOverlay,
      evalScripts: true
    });
  } else {
    new Ajax.Updater('content', strURL+'pages/blank', {
      onLoading: showMainOverlay,
      onComplete: function(t) {
        new Ajax.Updater('center_content', url, {
	        onComplete: function() {
		  		hideMainOverlay();
		  		buildsubmenus();
	      	},
	      	evalScripts: true
        });
      },
      evalScripts: true
    });
  }
}

function goHelp(type) {
  new Ajax.Updater('center_content_full', strURL+'pages/'+type, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goRegister(type, subtype) {
  
  if (subtype == undefined) {
    subtype = 'cart';
  }
  if (type == undefined) {
    new Ajax.Updater('center_content', strURL+'clients/new_client', {
      onLoading: showMainOverlay,
      onSuccess: hideMainOverlay,
      evalScripts: true
    });
  } else {
    new Ajax.Request(strURL+'clients/add/'+type, {
      method: 'post',
      postBody: 'subtype='+subtype,
      onLoading: showMainOverlay,
      onSuccess: function(t) {
        
        if ($('center_content')) {
          $('center_content').innerHTML = t.responseText;
          mascara = new Mask('formCadastro');
          changePersonType(type);
          valid = new Validation('formCadastro', {stopOnFirst: true, onSubmit: false});
          hideMainOverlay();
          setTimeout('setFullHeight()', 1000);
        } else {
          new Ajax.Updater('content', strURL+'pages/blank', {
            onComplete: function(tu) {
            
              $('center_content').innerHTML = t.responseText;
              mascara = new Mask('formCadastro');
              changePersonType(type);
              valid = new Validation('formCadastro', {stopOnFirst: true, onSubmit: false});
              hideMainOverlay();
              buildsubmenus();
              setTimeout('setFullHeight()', 1000);
            },
            evalScripts: true
          });
        }
      },
      onException: function(err, t) {
        alert(err);
      },
      evalScripts: true
    });
  }
}

function goContact() {
  window.open(strURL+'pages/contact', 'contact', 'width=500,height=420');
}

function goRecommend() {
  window.open(strURL+'pages/recommend', 'recommend', 'width=500,height=400');
}

function recommendProduct(product) {
  window.open(strURL+'products/recommend/'+product, 'recommend_p', 'width=500,height=400');
}

function goForgotPass() {
  window.open(strURL+'clients/forgot_pass', 'forgot', 'width=500,height=250');
}

function goCart() {
  new Ajax.Updater('center_content', strURL+'cart/index', {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function addCart(id) {
  new Effect.BlindDown('subdetails', {duration: 0.3, afterFinish: subSetFullHeight});
}

function addCartDirect(id) {
  if (confirm('Deseja adicionar uma unidade do produto no carrinho?')) {
    var attr = new Array();
    prod = '{"product": [{' +
            '"id": "'+id+'",' +
            '"quantity": "1"' +
           '}]}';
    product = eval('('+prod+')');
    new Ajax.Request(strURL+'cart/add', {
      method: 'post',
      postBody: 'prod='+prod,
      onSuccess: function(t) {
        $('qtde_itens').innerHTML = t.responseText+' itens';
        new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#ffff99', restorecolor: '#ffff99'});
      },
      onException: function(t, err) {
        alert(err);
      }
    });
  }
  return;
}

function addToCart(id) {
  var attr = new Array();
  // Busca pelos atributos do produto
  $$('#subdetails select', '#subdetails input').each(function (elem) {
    if (elem.value && elem.id != 'qtde') {
      tmp = elem.id.split('_');
      attr.push('{"id": "'+tmp[1]+'", "value": "'+elem.value+'"}');
    }
  });
  prod = '{"product": [{' +
          '"id": "'+id+'",' +
          '"quantity": "'+$F('qtde')+'",' +
          '"attrs": [' +
            attr.join(',') +
          ']' +
         '}]}';
  product = eval('('+prod+')');
  new Ajax.Request(strURL+'cart/add', {
    method: 'post',
    postBody: 'prod='+prod,
    onSuccess: function(t) {
      $('qtde_itens').innerHTML = t.responseText+' itens';
      new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#ffff99', restorecolor: '#ffff99'});
      //new Effect.Fade('subdetails', {duration: 0.4});
    }
  });
}

function cleanCart() {
  if (confirm('Deseja limpar o orçamento?')) {
    new Ajax.Updater('center_content', strURL+'cart/clean', {
      onLoading: showMainOverlay,
      onComplete: function(t) {
        hideMainOverlay();
        $('qtde_itens').innerHTML = '0 itens';
        new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#FFFFFF', restorecolor: '#FFFFFF'});
      },
      evalScripts: true
    });
  }
}

function deleteItem(id) {
  if (confirm('Deseja excluir este item?')) {
    new Ajax.Request(strURL+'cart/delete/'+id, {
      method: 'post',
      onSuccess: function(t) {
        $('qtde_itens').innerHTML = t.responseText+' itens';
        $('total_embaixo').innerHTML = '<strong>Total: '+t.responseText+' itens</strong>';
        if (t.responseText == 0) {
          goCart();
          new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#ffffff', restorecolor: '#ffffff'});
        } else {
          $('tr_'+id).remove();
          new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#ffff99', restorecolor: '#ffff99'});
        }
      }
    });
  }
}

function changeQuantity(id) {
  if ($('qtde_'+id).value > 0) {
    new Ajax.Request(strURL+'cart/update_quantity/'+id, {
      method: 'post',
      postBody: 'quantity='+$('qtde_'+id).value,
      onSuccess: function(t) {
        $('qtde_itens').innerHTML = t.responseText+' itens';
        $('total_embaixo').innerHTML = '<strong>Total: '+t.responseText+' itens</strong>';
        if (t.responseText == 0) {
          new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#fffff', restorecolor: '#ffffff'});
        } else {
          new Effect.Highlight('qtde_itens', {startcolor: '#FF0000', endcolor: '#ffff99', restorecolor: '#ffff99'});
        }
      }
    });
  } else {
    deleteItem(id)
  }
}

function changeAttributes(id) {
  attributes = new Array();

  $('div_attrs_'+id).getElementsBySelector('input', 'select').each(function(elem) {
    attrid = elem.id.split('_').last();
    if (attrid) attributes.push('{"id": "'+attrid+'", "value": "'+elem.value+'"}');
  });
  jsonStr = '{"attrs":[';
  jsonStr += attributes.join(',');
  jsonStr += ']}';

  new Ajax.Request(strURL+'cart/update_attributes/'+id, {
    method: 'post',
    postBody: 'attributes='+jsonStr,
    onSuccess: function(t) {
      goCart();
    }
  });
}

function changeSpec(id) {
  new Ajax.Request(strURL+'cart/save_spec/'+id, {
    method: 'post',
    postBody: 'value='+$F('spec'+id),
    onSuccess: function(t) {
      goCart();
    }
  });
}

function listProducts(type, url, updateDiv) {
  if (updateDiv == undefined)
    updateDiv = 'list_products';

  new Ajax.Updater(updateDiv, url, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    parameters: 'type='+type,
    evalScripts: true
  });
}

function showMainOverlay() {
  $('content').style.height = 'auto';
	var arrayPageSize = getPageSize();
	Element.setWidth('mainoverlay', arrayPageSize[0]);
	Element.setHeight('mainoverlay', arrayPageSize[1]);
  $('mainoverlay').show();
}

function hideMainOverlay() {
  new Effect.Fade('mainoverlay', { duration: 0.2, afterFinish: function() {
																																				subSetFullHeight();
																																				if (document.all) $('mainoverlay').style.filter = "alpha(opacity=40)";
																															 }});
  myLightbox.updateImageList();
}

function changeTab(tab) {
  $('descricao', 'especificacoes').each(function(elem){
    if (elem.id != tab) {
      $('li_'+elem.id).className = ''
      elem.hide();
    }
  });
  $('li_'+tab).className = 'selected'
  new Effect.Appear(tab, {duration: 0.2, afterFinish: subSetFullHeight});
}

function search(form_id, url, type) {
  fields = Form.getElements(form_id)
  if (type == undefined) {
    if (fields[0].value.length < 3) {
      alert('Informe pelo menos 3 caracteres para pesquisa');
      return;
    }
  } else {
    
    if ((fields[0].value && fields[0].value.length < 3 )|| (fields[1].value && fields[1].value.length < 3)) {
      alert('Informe pelo menos 3 caracteres para pesquisa');
      return;
    }

    if (!fields[0].value && !fields[1].value && !fields[5].value && !fields[6].value) {
      alert('Informe pelo menos um parâmetro de pesquisa');
      return;
    }
    
  }
  if ($('center_content')) executeSearch(form_id, url);
  else {
    new Ajax.Updater('content', strURL+'pages/blank', {
      onComplete: function(t) {
        executeSearch(form_id, url);
      },
      evalScripts: true
    });
  }
}

function executeSearch(form_id, url) {
  params = Form.serialize(form_id);
  new Ajax.Updater('center_content', url, {
    parameters: params,
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function advsearch() {
  new Ajax.Updater('center_content', '/products/advanced_search/', {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function showAttributes(id) {
  new Effect.BlindDown('div_attrs_'+id, {duration: 0.4});
}

function hideAttributes(id) {
  new Effect.Fade('div_attrs_'+id, {duration: 0.4});
}

function showSpec(id) {
  new Effect.BlindDown('div_spec_'+id, {duration: 0.4});
}

function hideSpec(id) {
  new Effect.Fade('div_spec_'+id, {duration: 0.4});
}

function doLogin(form) {
  if (form == undefined) form = 'frmLogin';
  params = Form.serialize(form);
  $$('#'+form+' input').each(function(elem) {
    if (elem.id == 'ClientEmail' || elem.id == 'ClientEmail2') elemMail = elem;
    if (elem.id == 'ClientPassword') elemPass = elem;
  });
  if (!elemMail.value) {
    alert('Informe seu e-mail.');
    elemMail.activate();
    return;
  } else if (!elemPass.value) {
    alert('Informe sua senha.');
    elemPass.activate();
    return;
  }
  
  if (form == 'frmLoginMenu' || form == 'frmLogin2') {
    url = strURL+'clients/login/sub';
    new Ajax.Request(url, {
      parameters: params,
      onLoading: showMainOverlay,
      onComplete: function(t) {
        if (t.responseText != 0 && t.responseText != -1 && t.responseText != -2) {
          $('login').innerHTML = t.responseText;
          if (form == 'frmLogin2') goAddresses();
          else goHome();
        } else if (t.responseText == 0) {
          alert('Os dados informados não estão corretos. Por favor, verifique.');
          elemMail.activate();
        } else if (t.responseText == -1) {
          alert('Seu cadastro está inativo, por favor, entre em contato conosco.');
          elemMail.activate();
        } else {
          alert('Seu acesso ao painel do cliente está desativado. \nPor favor, entre em contato conosco para realizar a liberação.');
          elemMail.activate();
        }
        hideMainOverlay();
      }
    });
  } else {
    url = strURL+'clients/login';
    new Ajax.Request(url, {
      parameters: params,
      onLoading: showMainOverlay,
      onComplete: function(t) {
        if (t.responseText == 'budget') {
          goClientArea('budget');
        } else if (t.responseText > 0) {
          goClientArea();
        } else if (t.responseText == 0) {
          alert('Os dados informados não estão corretos. Por favor, verifique.');
          elemMail.activate();
        } else if (t.responseText == -1) {
          alert('Seu cadastro está inativo, por favor, entre em contato conosco.');
          elemMail.activate();
        } else {
          alert('Seu acesso ao painel do cliente está desativado. \nPor favor, entre em contato conosco para realizar a liberação.');
          elemMail.activate();
        }
        hideMainOverlay();
      }
    });
  /*
    new Ajax.Updater('content', strURL+'clients/login', {
      parameters: params,
      onLoading: showMainOverlay,
      onComplete: hideMainOverlay,
      evalScripts: true
    });
  */
  }
}

function doLoginCart() {
  doLogin('frmLogin2');
  /*
  params = Form.serialize('frmLogin2');
  new Ajax.Request(strURL+'clients/login', {
    parameters: params+'&type=cart',
    onLoading: showMainOverlay,
    onComplete: function(t) {
      if (t.responseText != 0) {

      } else
        goAddresses();
    },
    evalScripts: true
  });
  */
}

function doLogout() {
  if ($('center_content')) {
    new Ajax.Request(strURL+'clients/logout', {
      onLoading: showMainOverlay,
      onComplete: function(t) {
        new Ajax.Updater('login', strURL+'clients/subloginarea', {
          onComplete: function() {
        	goToURL('Home');
        	//hideMainOverlay();
          },
          evalScripts: true
        });
      }
    });
  } else {
    new Ajax.Request(strURL+'clients/logout', {
      onComplete: function(t) { goToURL('Home'); }
    });
  }
}

function busca_cep(url, prefix, loading) {
  if (loading == undefined)
    loading = 'loading';

  url += $(prefix+'Cep').value;
  Element.show(loading);
  new Ajax.Request(url, {
    method: 'get',
    onSuccess: function (t) {
      Element.hide(loading);
      if (t.responseText == '') {
        alert('Endereço não encontrado.');
        $(prefix+'Address').value = '';
        $(prefix+'Area').value = '';
        $(prefix+'City').value = '';
        $(prefix+'State').value = '';
        $(prefix+'Address').readOnly = false;
        $(prefix+'Area').readOnly = false;
        $(prefix+'City').readOnly = false;
        $(prefix+'State').readOnly = false;
      } else {
        address = eval('(' + t.responseText + ')');
        if (address.CEP[0].logradouro) {
          $(prefix+'Address').value = address.CEP[0].logradouro;
          $(prefix+'Address').readOnly = true;
        } else {
          $(prefix+'Address').value = '';
          $(prefix+'Address').readOnly = false;
        }
        if (address.CEP[0].bairro) {
          $(prefix+'Area').value = address.CEP[0].bairro;
          $(prefix+'Area').readOnly = true;
        } else {
          $(prefix+'Area').value = '';
          $(prefix+'Area').readOnly = false;
        }

        $(prefix+'City').value = address.CEP[0].cidade;
        $(prefix+'State').value = address.CEP[0].uf;
        $(prefix+'City').readOnly = true;
        $(prefix+'State').readOnly = true;
        $(prefix+'Number').focus();
      }
    },
    onException: function(t, err) {
      alert(t.responseText);
      alert(err);
    }
  });
}

function copyAddress(obj, prefix1, prefix2) {
  if (obj.checked) {
    $(prefix2+'Cep').value = $(prefix1+'Cep').value;
    $(prefix2+'Address').value = $(prefix1+'Address').value;
    $(prefix2+'Number').value = $(prefix1+'Number').value;
    $(prefix2+'Complement').value = $(prefix1+'Complement').value;
    $(prefix2+'Area').value = $(prefix1+'Area').value;
    $(prefix2+'City').value = $(prefix1+'City').value;
    $(prefix2+'State').value = $(prefix1+'State').value;
    $(prefix2+'Cep').readOnly = true;
    $(prefix2+'Address').readOnly = true;
    $(prefix2+'Number').readOnly = true;
    $(prefix2+'Complement').readOnly = true;
    $(prefix2+'Area').readOnly = true;
    $(prefix2+'City').readOnly = true;
    $(prefix2+'State').readOnly = true;
  } else {
    $(prefix2+'Cep').value = '';
    $(prefix2+'Address').value = '';
    $(prefix2+'Number').value = '';
    $(prefix2+'Complement').value = '';
    $(prefix2+'Area').value = '';
    $(prefix2+'City').value = '';
    $(prefix2+'State').value = '';
    $(prefix2+'Cep').readOnly = false;
    $(prefix2+'Address').readOnly = false;
    $(prefix2+'Number').readOnly = false;
    $(prefix2+'Complement').readOnly = false;
    $(prefix2+'Area').readOnly = false;
    $(prefix2+'City').readOnly = false;
    $(prefix2+'State').readOnly = false;
  }
}

function changePersonType(type) {
  $('fisica1').innerHTML = '';
	$('fisica2').innerHTML = '';
  $('juridica1').innerHTML = '';
  $('juridica2').innerHTML = '';
  $('contact').hide();

  $('fisica1').hide();
  $('fisica2').hide();
  $('juridica1').hide();
  $('juridica2').hide();
  $('submit_form').hide();

  $('lbl_nome_J').show();
  $('lbl_nome_F').show();
	$('lbl_nickname_J').show();
	$('lbl_nickname_F').show();
	$('lbl_cnpj').show();
	$('lbl_cpf').show();
	$('lbl_ie').show();
	$('lbl_rg').show();
	$('tel1_J').show();
	$('tel1_F').show();
	$('tel2_J').show();
	$('tel2_F').show();
	$('tel3_J').show();
	$('tel3_F').show();
  $('ClientType').value = type;
	if (type == 'F') {
	  $('strTipo').innerHTML = 'Pessoa Física';
	  $('btnTroca').value = 'Trocar para Pessoa Jurídica';
	  $('btnTroca').onclick = function() {
	    changePersonType('J');
	    setTimeout('setFullHeight()', 1250);
	  }
	  try {
	  $('ContactName', 'ClientNickname', 'ContactNickname', 'ContactCivilState', 'ContactPhone', 'ContactCellphone', 'ContactEmail',
      'ContactSector').each(function (elem) { if (elem) elem.disabled = true;});
	  } catch (err) {
	    alert(err);
	  }
	  // Meu cadastro
		$('fisica1').innerHTML = '<legend><img src="'+strURL+'img/lbl_clientes_1.png" align="absmiddle"> Dados principais</legend>';
	  $('fisica1').innerHTML += $('iname').innerHTML;
	  $('fisica1').innerHTML += $('cpf_cnpj').innerHTML;
	  $('fisica1').innerHTML += $('date_birth').innerHTML;
	  $('fisica1').innerHTML += $('sex').innerHTML;
	  //$('fisica1').innerHTML += $('nickname').innerHTML;

		// Informações Pessoais
    $('fisica2').innerHTML = '<legend><img src="'+strURL+'img/lbl_clientes_2.png" align="absmiddle"> Identificação</legend>';
    $('fisica2').innerHTML += $('email2').innerHTML;
	  $('fisica2').innerHTML += $('password').innerHTML;
	  $('fisica2').innerHTML += $('password2').innerHTML;

    Element.hide('lbl_nome_J');
		Element.hide('lbl_nickname_J');
		Element.hide('lbl_cnpj');
		Element.hide('lbl_ie');
		Element.hide('tel1_J');
		Element.hide('tel2_J');
		Element.hide('tel3_J');

		Effect.Appear('fisica1');
		Effect.Appear('phones');
		Effect.Appear('fisica2');
		Effect.Appear('address');
		Effect.Appear('observation');
		Effect.Appear('submit_form');

    // Máscara de CPF
    $('ClientCpfCnpj').removeClassName('mask-cnpj');
    $('ClientCpfCnpj').addClassName('mask-cpf');
    mascara = new Mask('formCadastro');
	} else if (type == 'J') {
	  $('strTipo').innerHTML = 'Pessoa Jurídica';
	  $('btnTroca').value = 'Trocar para Pessoa Física';
	  $('btnTroca').onclick = function() {
	    changePersonType('F');
	    setTimeout('setFullHeight()', 1250);
	  }
	  $('ContactName', 'ContactNickname', 'ContactCivilState', 'ContactPhone', 'ContactCellphone', 'ContactEmail',
      'ContactSector').each(function (elem) { if (elem) elem.disabled = false;});

	  // Informações sobre a empresa
	  $('juridica1').innerHTML = '<legend><img src="'+strURL+'img/lbl_clientes_1_1.png" align="absmiddle"> Informações sobre a empresa</legend>';
	  $('juridica1').innerHTML += $('iname').innerHTML;
	  $('juridica1').innerHTML += $('cpf_cnpj').innerHTML;
		$('juridica1').innerHTML += $('rg_ie').innerHTML;
		//$('juridica1').innerHTML += $('activity').innerHTML;
		
		$('juridica2').innerHTML = '<legend><img src="'+strURL+'img/lbl_clientes_2.png" align="absmiddle"> Identificação</legend>';
	  $('juridica2').innerHTML += $('email2').innerHTML;
		$('juridica2').innerHTML += $('password').innerHTML;
		$('juridica2').innerHTML += $('password2').innerHTML;
		
		//$('juridica1').innerHTML += $('nickname').innerHTML;
		
		//$('juridica1').innerHTML += $('im').innerHTML;
		
		//$('juridica1').innerHTML += $('employees').innerHTML;
		//$('contact').innerHTML = $('contact_fields').innerHTML;

		Element.hide('lbl_nome_F');
		Element.hide('lbl_nickname_F');
		Element.hide('lbl_cpf');
		Element.hide('lbl_rg');
		Element.hide('tel1_F');
		Element.hide('tel2_F');
		Element.hide('tel3_F');

		Effect.Appear('juridica1');
		Effect.Appear('phones');
		Effect.Appear('juridica2');
		Effect.Appear('address');
		Effect.Appear('contact');
		Effect.Appear('observation');
		Effect.Appear('submit_form');

    // Máscara de CPF
    $('ClientCpfCnpj').removeClassName('mask-cpf');
    $('ClientCpfCnpj').addClassName('mask-cnpj');
    mascara = new Mask('formCadastro');
	}
	return;
}

function saveRegister(type, contact) {
  if (valid.validate()) {
    if (type == undefined)
      type = 'cart';
    params = Form.serialize('formCadastro');
    if (contact == undefined) {
      if ($('ClientId'))
        url = strURL+'clients/edit/'+$F('ClientId');
      else
        url = strURL+'clients/add';
    } else {
      url = strURL+'contacts/edit/'+$F('ContactId');
    }
    new Ajax.Request(url, {
      method: 'post',
      postBody: params,
      onLoading: showMainOverlay,
      onSuccess: function(t) {
        alert('As informações foram salvas com sucesso.')
        updateLoginArea();
        if (type == 'cart')
          goAddresses();
        else if (type == 'new')
          goHome();
        else if (type == 'edit')
          goClientArea();
      },
      onException: function (t, err) {
        alert(err);
      }
    });
  }
}

function goAddresses() {
  new Ajax.Updater('center_content', strURL+'cart/addresses', {
    method: 'get',
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goBudget() {
  new Ajax.Updater('center_content_full', strURL+'orders/index', {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goLists() {
	new Ajax.Updater('center_content_full', strURL+'files/index', {
		onLoading: showMainOverlay,
		onComplete: hideMainOverlay,
		evalScripts: true
	});
}

function goSingleBudget(id) {
  new Ajax.Updater('center_content_full', strURL+'orders/view/'+id, {
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goConfirmation() {
  new Ajax.Updater('center_content', strURL+'cart/confirmation', {
    method: 'post',
    postBody: 'obs='+$F('OrderObs'),
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function goAccount(contact) {
  if (contact == undefined) {
    url = strURL+'clients/edit';
  } else {
    url = strURL+'contacts/edit';
  }
  new Ajax.Updater('center_content_full', url, {
    onLoading: showMainOverlay,
    onComplete: function (t) {
      mascara = new Mask('formCadastro');
      valid = new Validation('formCadastro', {stopOnFirst: true, onSubmit: false});
      hideMainOverlay();
    },
    evalScripts: true
  });
}

function goPassword(contact) {
  if (contact == undefined) url = strURL+'clients/change_password';
  else url = strURL+'contacts/change_password';
  
  new Ajax.Updater('center_content_full', url, {
    onLoading: showMainOverlay,
    onComplete: function (t) {
      valid = new Validation('formCadastro', {stopOnFirst: true, onSubmit: false});
      hideMainOverlay();
    },
    evalScripts: true
  });
}

function changePassword(contact) {
  var prefix = '';
  if (contact == undefined) {
    url = strURL+'clients/change_password';
    prefix = 'Client';
  } else { 
    url = strURL+'contacts/change_password';
    prefix = 'Contact';
  }
  if ($(prefix+'Password1').value == $(prefix+'Password2').value) {
    params = Form.serialize('formCadastro');
    new Ajax.Request(url, {
      method: 'post',
      postBody: params,
      onLoading: showMainOverlay,
      onSuccess: function(t) {
        alert('Senha Alterada.');
        hideMainOverlay();
        goClientArea();
      }
    });
  } else {
    alert('As novas senhas não são iguais.');
    $(prefix+'Password').activate();
  }
}

function savePassword(contact) {
  if (contact == undefined) {
    url = strURL+'clients/check_password';
    prefix = 'Client';
  } else { 
    url = strURL+'contacts/check_password';
    prefix = 'Contact';
  }
  if (valid.validate()) {
    new Ajax.Request(url, {
      method: 'post',
      postBody: 'password='+$(prefix+'PasswordNow').value,
      onComplete: function (t) {
        if (t.responseText == 1) {
          changePassword(contact);
        } else {
          alert('Senha atual incorreta.');
          $(prefix+'PasswordNow').activate();
        }
      },
      onException: function (t, err) {
        alert(err);
      }
    });
  }
}

function closeBudget() {
  new Ajax.Request(strURL+'clients/checklogin', {
    onSuccess: function(t) {
      if (t.responseText == 0) {
        doLoginCart();
      } else {
        params = Form.serialize('formCadastro');
        new Ajax.Request(strURL+'orders/add', {
          method: 'post',
          postBody: params,
          onLoading: showMainOverlay,
          onSuccess: function(t) {
            $('center_content').innerHTML = t.responseText;
            $('qtde_itens').innerHTML = '0 itens';
            $('subbudgetcount').innerHTML = Number($('subbudgetcount').innerHTML)+1
            hideMainOverlay();
          },
          onException: function (t, err) {
            alert(err);
          }
        });
      }
    }
  });
}

function updateLoginArea() {
  new Ajax.Updater('login', strURL+'clients/subloginarea', {evalScripts: true});
}

function teDevo() {
  alert('Te devo uma ação.\nAss. Programador')
}

function saveMessage(id) {
  new Ajax.Request(strURL+'order_histories/add', {
    method: 'post',
    postBody: Form.Element.serialize('OrderHistoryContents')+'&'+Form.Element.serialize('OrderHistoryDateTime')+'&'+Form.Element.serialize('OrderHistoryOrderId'),
    onComplete: function (t) {
      goSingleBudget(id);
    }
  });
}

function filterOrders() {
  new Ajax.Updater('center_content_full', strURL+'orders/index', {
    postBody: Form.serialize('frmPesquisa'),
    onLoading: showMainOverlay,
    onComplete: hideMainOverlay,
    evalScripts: true
  });
}

function filterFiles() {
	new Ajax.Updater('center_content_full', strURL+'files/index', {
		postBody: Form.serialize('frmPesquisa'),
		onLoading: showMainOverlay,
		onComplete: hideMainOverlay,
		evalScripts: true
	});
}

function openPrint(url) {
  if (url.indexOf('?') < 0)
    url += '?print=1';
  else
    url += '&print=1';
  window.open(url, 'print', 'width=640,height=480,scrollbars=1');
}

function cadastrese() {
  if (!$('EmailName').value) {
    alert('Informe seu nome.');
    $('EmailName').activate();
    return;
  }
  if (!$('EmailEmail').value) {
    alert('Informe seu e-mail.');
    $('EmailEmail').activate();
    return;
  }
  new Ajax.Request(strURL+'emails/add', {
    method: 'post',
    postBody: Form.serialize('frmCadastro'),
    onSuccess: function(t) {
      $('EmailName').value = '';
      $('EmailEmail').value = '';
      alert('Obrigado, seu cadastro foi enviado com sucesso.');
    }
  });
}

function aprovarOrcamento(orcamento) {
  if (confirm('Confirma a aprovação do orçamento '+orcamento+'?')) {
    new Ajax.Request(strURL+'orders/confirm/'+orcamento, {
      method: 'post',
      onLoading: showMainOverlay,
      onSuccess: function(t) {
        hideMainOverlay();
        alert('Orçamento confirmado');
        goSingleBudget(orcamento);
      },
      onException: function(t, err) {
        alert(err);
      }
    });
  }
}

function changeAddress(type) {
  if (!$('address_'+type).visible())
    new Effect.BlindDown('address_'+type, {duration: 0.3});
}

function cancelChangeAddress(type, clean) {
  new Effect.Fade('address_'+type, {duration: 0.3,
  afterFinish: function() {
      if (clean == undefined) {
        $('frmAddress_'+type).reset();
        frmFields = Form.getElements('frmAddress_'+type);
        frmFields.each(function(elem) {
          elem.readOnly = false;
        });
      } else {
        var prefix = '';
        if (type == 'C') prefix = 'Billing';
        else prefix = 'Delivery';
        $('Order'+prefix+'Cep', 'Order'+prefix+'Address',
          'Order'+prefix+'Number','Order'+prefix+'Complement','Order'+prefix+'Area','Order'+prefix+'City','Order'+prefix+'State').each(function(elem) {
            elem.readOnly = false;
            elem.value = elem.defaultValue;
        });
      }
    }
  });
}

function saveAddress(type, order) {
  params = Form.serialize('frmAddress_'+type);
  new Ajax.Request(strURL+'orders/edit/'+order, {
    onLoading: showMainOverlay,
    method: 'post',
    postBody: params,
    onSuccess: function(t) {
      hideMainOverlay();
      goSingleBudget(order);
    }
  });
}

function updateAddress(type) {
  var prefix = '';
  var params = '';

  if (type == 'C') prefix = 'Billing';
  else prefix = 'Delivery';

  $('Order'+prefix+'Cep','Order'+prefix+'Address',
    'Order'+prefix+'Number','Order'+prefix+'Complement','Order'+prefix+'Area','Order'+prefix+'City','Order'+prefix+'State').each(function(elem) {
      params += '&'+elem.name+'='+elem.value;
  });

  new Ajax.Request(strURL+'cart/addresses_edit/'+type, {
    onLoading: showMainOverlay,
    method: 'post',
    postBody: params,
    onSuccess: function(t) {
      hideMainOverlay();
      goAddresses();
    }
  });
}

function getAjax() {
  try{
    xmlhttp = new XMLHttpRequest();
  } catch(ee) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(E) {
          xmlhttp = false;
      }
    }
  }
  return xmlhttp;
}

function validate_cpf_cnpj(obj, prefix) {
  if (prefix == undefined) prefix = 'Client';
  if ($(prefix+'Type'))
    type = $(prefix+'Type').value;
  else
    type = 'J';

  var msg = '';
  var invalid = false;
  if (obj.value.length > 0) {
    if (type == 'F') {
      if (!isCpf(obj.value)) {
        msg = 'CPF Inválido';
        invalid = true;
      }
    } else {
      if (!isCnpj(obj.value)) {
        msg = 'CNPJ Inválido';
        invalid = true;
      }
    }
  }
  if (invalid) {
    $('advice-cpf_cnpj').innerHTML = msg;
    new Effect.Appear('advice-cpf_cnpj', {duration: 1});
    obj.focus();
    $('btnEnviar').disabled = true;
  } else {
    xmlhttp = getAjax();
    xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState == 4) {
        t = xmlhttp;
        if (t.responseText != 'OK') {
          $('advice-cpf_cnpj').innerHTML = xmlhttp.responseText;
          new Effect.Appear('advice-cpf_cnpj', {duration: 1});
          obj.focus();
          $('btnEnviar').disabled = true;
	      } else {
	        if ($('advice-cpf_cnpj').visible) new Effect.Fade('advice-cpf_cnpj', {duration : 1 });
          $('btnEnviar').disabled = false;
	      }
      }
    }
    var parameters = '';
    xmlhttp.open("POST", '/clients/check_unique/'+unformatNumber(obj.value), true);
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlhttp.setRequestHeader("Content-length", parameters.length);
    xmlhttp.setRequestHeader("Connection", "close");
    xmlhttp.send(parameters);
  }
}