$().ready( function() {

	$(".lightbox").colorbox({maxWidth:"640px",maxHeight:"480px"});

	menu();

	flashDetection();
	confirmacao();
	
	historyFunction();
	printing();
	backToTop();

	target();
	zebra();
	ieFlickerFix();
	masks();
});

/* Confirmação *********************************************************************/

	function confirmacao() {
		$('a.confirmacao').bind('click', function() {
			var title = $(this).attr('title');
			
			if (!confirm(title)) {
				return false;
			}
			else return true;

			return false;
		});
	}


/* Actions ************************************************************************/

	function historyFunction(){
		$('a.back').bind('click', function() {
			parent.history.back();
			return false;
		});
	}

	function printing() {
		$('.printit').click( function() {
			window.print();
		});
	}

	function backToTop() {
		$('.backtotop').click( function() {
			$('html, body').animate({ scrollTop:0 }, 'slow');
			return false;
		});
	}


/* Target ************************************************************************/

	function target() {
		$("a[rel$='external'], .external").each( function(){
			$(this).attr('target','_blank');
			$(this).attr('title', $(this).attr('title')+' (este link abre em nova janela)');
		});
	}


function zebra() {
	$('table:not(.nozebra) tr:nth-child(odd)').addClass('par');
}


function ieFlickerFix() {
	try {
	  document.execCommand("BackgroundImageCache", false, true);
	} catch(err) {}
}


function masks() {

	$('.mask-date').mask('99/99/9999',{placeholder:' '});
	
	$('.mask-phone').mask('(99) 9999-9999',{placeholder:' '});
	
	$(".mask-cep").mask('99999-999',{placeholder:' '});

	//$('.mask-cpf').mask('999.999.999-99',{placeholder:" "});
	//$('.mask-cnpj').mask('99.999.999/9999-99',{placeholder:" "});
	$('.mask-rg').mask('999.999.9999',{placeholder:" "});

	$('.mask-inscr').mask('999/9999999',{placeholder:" "});
}


function affectedFields(form,el) {
	var classname = 'affected';
	$(form+' *').each( function() {
		if (el!='') {
			if ($(this).attr('id')==el) {
				$(this).focus().addClass(classname);
			} else {
				$(this).removeClass(classname);
			}
		} else {
			$(this).removeClass(classname);
			$(form).resetForm();
		}
	});
	return false;
}


function get(el) {
  return document.getElementById(el);
}


function limiter(el, max) {
	$(el).bind('keypress', function() {
		var valor = $(this).attr('value');
		valor = valor.substr(0,max);
		if (valor > max) {
			$(this).attr('value',valor);
		}
	});
}


/* Radio and Check buttons */

var checkboxHeight = "20";
var radioHeight = "20";
var selectWidth = "190";

/* No need to change anything after this */

document.write('<style type="text/css">input.radio { display: none; } select.radio { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; }</style>');

var Custom = {
	init: function() {
		var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
		for(a = 0; a < inputs.length; a++) {
			if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "radio") {
				span[a] = document.createElement("span");
				span[a].className = inputs[a].type;

				if(inputs[a].checked == true) {
					if(inputs[a].type == "checkbox") {
						position = "0 -" + (checkboxHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					} else {
						position = "0 -" + (radioHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					}
				}
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.clear;
				span[a].onmousedown = Custom.pushed;
				span[a].onmouseup = Custom.check;
				document.onmouseup = Custom.clear;
			}
		}
		inputs = document.getElementsByTagName("select");
		for(a = 0; a < inputs.length; a++) {
			if(inputs[a].className == "radio") {
				option = inputs[a].getElementsByTagName("option");
				active = option[0].childNodes[0].nodeValue;
				textnode = document.createTextNode(active);
				for(b = 0; b < option.length; b++) {
					if(option[b].selected == true) {
						textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
				}
				span[a] = document.createElement("span");
				span[a].className = "select";
				span[a].id = "select" + inputs[a].name;
				span[a].appendChild(textnode);
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.choose;
			}
		}
	},
	pushed: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
		} else if(element.checked == true && element.type == "radio") {
			this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
		} else if(element.checked != true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
		} else {
			this.style.backgroundPosition = "0 -" + radioHeight + "px";
		}
	},
	check: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 0";
			element.checked = false;
		} else {
			if(element.type == "checkbox") {
				this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else {
				this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
				group = this.nextSibling.name;
				inputs = document.getElementsByTagName("input");
				for(a = 0; a < inputs.length; a++) {
					if(inputs[a].name == group && inputs[a] != this.nextSibling) {
						inputs[a].previousSibling.style.backgroundPosition = "0 0";
					}
				}
			}
			element.checked = true;
		}
	},
	clear: function() {
		inputs = document.getElementsByTagName("input");
		for(var b = 0; b < inputs.length; b++) {
			if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "checkbox") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else if(inputs[b].type == "checkbox" && inputs[b].className == "checkbox") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			} else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "radio") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
			} else if(inputs[b].type == "radio" && inputs[b].className == "radio") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			}
		}
	},
	choose: function() {
		option = this.getElementsByTagName("option");
		for(d = 0; d < option.length; d++) {
			if(option[d].selected == true) {
				document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			}
		}
	}
}
window.onload = Custom.init;


/* Menu */

function menu() {
	
	$('#menu>ul>li').hover(
		
		function start() {

			// aplica o hover, aplicando a classe, e procura um submenu
			$(this).addClass('affected').find('ul.sub').each( function() {
				
				/*
				$(this).animate({
					opacity: 0
				}, 0 );
				*/
				
				// iniciando o hover...
				$(this).hover( 
					
					function() {

						/*
						$(this).animate({
							opacity: 1
						}, 250 );
						*/

						// primeiro exibe o submenu através da classe, e então busca os itens da lista
						$(this).addClass('affected').find('>li').each( function() {

							// se os sub itens estiverem em hover, então...
							$(this).hover(

								function() {

									/////////////////////////////////////////////////////////////////////////////////////////////////
									// aplica o hover, aplicando a classe, e procura um submenu
									$(this).addClass('affected').find('ul.sub2').each( function() {
										
										// iniciando o hover...
										$(this).hover( 
											
											function() {

												// primeiro exibe o submenu através da classe, e então busca as itens da lista
												$(this).addClass('affected').find('>li').each( function() {

													// se os sub itens estiverem em hover, então...
													$(this).hover(

														function() {

															// ... vê se ele item um submenu derivado e exibe
															$(this).find('ul').each( function() {
																$(this).css('display','block');
															});								
															
														},

														function() {

															$(this).find('ul').each( function() {
																$(this).css('display','none');
															});

														}

													);
												
												});
												
											}, 
											
											function() {
												
											}
										
										);
									
									});
									///////////////////////////////////////////////////////////////////////////////////////////////

									// ... vê se ele item um submenu derivado e exibe
									$(this).find('ul').each( function() {
										$(this).css('display','block');
									});
									
								},

								function() {

									$(this).find('ul').each( function() {
										$(this).css('display','none');
									});

								}

							);
						
						});
						
					}, 
					
					function() {
						
						/*
						$(this).animate({
							opacity: 0
						}, 250 );
						*/
					}
				
				);
			
			});
		
		},
		
		// faz alguma coisa quando o menu sair de hover
		function end() {
			$(this).removeClass('affected');
		}
	
	);
	return false;
}

///////////////////////////////////////////////////////////////////////////
