/**
 * app\webroot\js\site.js
 */

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();
	//console.log('setFullHeight');
	if ($('rodape1')) {
		//Effect.Fade('rodape1');
		$('rodape1').hide();
	}
	if ($('rodape2')) {
		//Effect.Fade('rodape2');
		$('rodape2').hide();
	}
	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);
	}
	if ($('rodape1')) {
		//Effect.Appear('rodape1');
		$('rodape1').show();
	}
	if ($('rodape2')) {
		//Effect.Appear('rodape2');
		$('rodape2').show();
	}

}

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) {
	//console.log('updateHighlight');
	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: onLoadingCallback,
		onComplete: onCompleteCallback,
		evalScripts: true
	});
}

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

function goHome() {
	//console.log('goHome')
	new Ajax.Updater('center_content', strURL+'products/index', {
		onLoading: onLoadingCallback,
		onComplete: onCompleteCallback,
		evalScripts: true
	});
}

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

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

function goBrands() {
	new Ajax.Updater('center_content', strURL+'brands/index', {
		onLoading: onLoadingCallback,
		onComplete: onCompleteCallback,
		evalScripts: true
	});
}

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

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

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

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

function goRegister(type, subtype) {

	if (subtype == undefined) {
		subtype = 'cart';
	}
	if (type == undefined) {
		new Ajax.Updater('center_content', strURL+'clients/new_client', {
			onLoading: onLoadingCallback,
			onSuccess: onCompleteCallback,
			evalScripts: true
		});
	} else {
		new Ajax.Request(strURL+'clients/add/'+type, {
			method: 'post',
			postBody: 'subtype='+subtype,
			onLoading: onLoadingCallback,
			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
					});
					onCompleteCallback();
					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
							});
							onCompleteCallback();
							//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: onLoadingCallback,
		onComplete: onCompleteCallback,
		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: onLoadingCallback,
			onComplete: function(t) {
				onCompleteCallback();
				$('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'
					});
					calculateCart();
				}
			}
		});
	}
}

function changeQuantity(id) {
	//console.log('changeQuantity');
	//console.log($('qtde_'+id).value);
	//console.log($('qtde_'+id).value > 0);
	var val = $('qtde_'+id).value;
	val = val.replace('.', ',');
	$('qtde_'+id).value = String(val);

	val = parseFloat(val.replace(',', '.'));


	//console.log(val);
	if (val > 0) {
		new Ajax.Request(strURL+'cart/update_quantity/'+id, {
			method: 'post',
			postBody: 'quantity='+String(val),
			onSuccess: function(t) {
				$('qtde_itens').innerHTML = t.responseText+' itens';
				$('total_embaixo').innerHTML = '<strong>Totais: '+t.responseText+' itens</strong>';

				calculateCart();

				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 calculateCart() {
	try {
		//var rows = $('tblCartItems').select('tr[id^="tr_"]');
		var rows = $$('table[id^="tblCartItems_"] tr[id^="tr_"]');
		//console.log(rows);
		var cartTotal = 0;
		rows.each(function (item) {
			//console.log(item);
			var fooId = parseInt(item.id.replace('tr_', ''));

			var quant = $('qtde_' + fooId).value.replace('.', '');
			quant = parseFloat(quant.replace(',', '.'));

			if ($('unit_price_' + fooId)) {
				var unit = $('unit_price_' + fooId).value.replace('.', '');
				unit = parseFloat(unit.replace(',', '.'));

				var itemTotal = quant * unit;
				$('item_total_price_' + fooId).value = String(itemTotal.toFixed(2)).replace('.', ',');
				cartTotal += itemTotal;

				$('cartTotal').innerHTML = '&nbsp;&nbsp;&nbsp; <strong>R$ ' + String(cartTotal.toFixed(2)).replace('.', ',') + '</strong>';
			}
		});


	}catch (e){
		alert(e.message);
	}
}


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: onLoadingCallback,
		onComplete: onCompleteCallback,
		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: onLoadingCallback,
		onComplete: onCompleteCallback,
		evalScripts: true
	});
}

function advsearch() {
	new Ajax.Updater('center_content', '/products/advanced_search/', {
		onLoading: onLoadingCallback,
		onComplete: onCompleteCallback,
		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: onLoadingCallback,
			onComplete: function(t) {
				if (t.responseText != 0 && t.responseText != -1 && t.responseText != -2) {
					loginPerformed();
					$('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();
				}
				onCompleteCallback();
			}
		});
	} else {
		url = strURL+'clients/login';
		new Ajax.Request(url, {
			parameters: params,
			onLoading: onLoadingCallback,
			onComplete: function(t) {
				if (t.responseText == 'budget') {
					loginPerformed();
					goClientArea('budget');
				} else if (t.responseText > 0) {
					loginPerformed();
					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();
				}
				onCompleteCallback();
			}
		});
	/*
    new Ajax.Updater('content', strURL+'clients/login', {
      parameters: params,
      onLoading: showMainOverlay,
      onComplete: hideMainOverlay,
      evalScripts: true
    });
  */
	}
}

function logoutPerformed () {
	try {
		$('lnkSalesmanArea').style.visibility="visible";
		$('menu_separator_1').style.visibility="visible";

	} catch (e) {
		catchException(e);
	}
}

function loginPerformed () {
	try {
		$('lnkSalesmanArea').style.visibility="hidden";
		$('menu_separator_1').style.visibility="hidden";

	} catch (e) {
		catchException(e);
	}
}

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: onLoadingCallback,
			onComplete: function(t) {
				new Ajax.Updater('login', strURL+'clients/subloginarea', {
					onComplete: function() {
						logoutPerformed();
						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');

		//console.log(params);
		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: onLoadingCallback,
			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: onCompleteCallback,
		evalScripts: true
	});
}

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

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

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

function goConfirmation() {
	new Ajax.Updater('center_content', strURL+'cart/confirmation', {
		method: 'post',
		postBody: 'obs='+$F('OrderObs'),
		onLoading: onLoadingCallback,
		onComplete: onCompleteCallback,
		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: onLoadingCallback,
		onComplete: function (t) {
			mascara = new Mask('formCadastro');
			valid = new Validation('formCadastro', {
				stopOnFirst: true,
				onSubmit: false
			});
			onCompleteCallback();
		},
		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: onLoadingCallback,
		onComplete: function (t) {
			valid = new Validation('formCadastro', {
				stopOnFirst: true,
				onSubmit: false
			});
			onCompleteCallback();
		},
		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: onLoadingCallback,
			onSuccess: function(t) {
				alert('Senha Alterada.');
				onCompleteCallback();
				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: onLoadingCallback,
					onSuccess: function(t) {
						$('center_content').innerHTML = t.responseText;
						$('qtde_itens').innerHTML = '0 itens';
						$('subbudgetcount').innerHTML = Number($('subbudgetcount').innerHTML)+1
						onCompleteCallback();
					},
					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: onLoadingCallback,
		onComplete: onCompleteCallback,
		evalScripts: true
	});
}

function filterFiles() {
	new Ajax.Updater('center_content_full', strURL+'files/index', {
		postBody: Form.serialize('frmPesquisa'),
		onLoading: onLoadingCallback,
		onComplete: onCompleteCallback,
		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: onLoadingCallback,
			onSuccess: function(t) {
				onCompleteCallback();
				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: onLoadingCallback,
		method: 'post',
		postBody: params,
		onSuccess: function(t) {
			onCompleteCallback();
			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: onLoadingCallback,
		method: 'post',
		postBody: params,
		onSuccess: function(t) {
			onCompleteCallback();
			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);
	}
}

function addObserverRows(onlyElm) {
	onlyElm = onlyElm || null;
	var rows = null;
	if (onlyElm) {
		rows = $$('#'+ onlyElm.id +' tr');
	} else {
		rows = $$('#lists table tr');
	}

	rows.each(function (elem) {
		$(elem).observe('click', function(event) {
			//var firedBy = event.element();
			//console.log('firedBy');
			//console.log(firedBy);
			if (elem.className == 'odd' || elem.className == 'even') {
				elem.setAttribute('oldClass', elem.className);
				elem.className = 'rowSelected';
			} else {
				elem.className = elem.getAttribute('oldClass');
				elem.removeAttribute('oldClass');
			}
		});
	});
}

function onCompleteCallback () {
	try {
		//console.log('onCompleteCallback');
		hideMainOverlay();
		buildsubmenus();
		if ($('rodape1'))
			Effect.Appear('rodape1');
		if ($('rodape2'))
			Effect.Appear('rodape2');
	} catch (e) {
		catchException(e);
	}

}

function onLoadingCallback () {
	try {
		//console.log('onLoadingCallback');
		if ($('rodape1'))
			Effect.Fade('rodape1');
		if ($('rodape2'))
			Effect.Fade('rodape2');

		showMainOverlay();


	} catch (e) {
		catchException(e);
	}

}
