package com.softgraf.model;

import javafx.scene.control.TextField;

public class Telefone {

	final public static int MAX = 14;
	
	// fones válidos: "12345678", "912345678", "0012345678", "00912345678"
	// fomatos: 0123-4567, 90123-4678, (xx) 0123-4567, (xx) 90123-4567
	// número de caracteres válidos: 8, 9, 10, 11 -> 8 a 11
	private static boolean validar(String fone) {
		return fone.length() >= 8 && fone.length() <= 11;
	}

	public static void formatar(TextField campo) {
			StringBuilder sb = new StringBuilder();
		// remove caracteres não numéricos
		campo.getText().trim().chars().forEach(c -> {
			if (c >= '0' && c <= '9') {
				sb.append((char) c);
			}
		});

		if (validar(sb.toString())) {
			switch (sb.length()) {

			case 8:  // 0123-4567 -> acrescenta '-'
				sb.insert(4, '-');
				break;

			case 9:   // 90123-4567 -> acrescenta '-'
				sb.insert(5, '-');
				break;

			case 10:   // (xx)0123-4567 -> acrescenta (  ) e '-'
				sb.insert(0, '(');
				sb.insert(3, ')');
				sb.insert(4, ' ');
				sb.insert(9, '-');
				break;

			case 11:   // (xx)90123-4567 -> acrescenta (  ) e '-'
				sb.insert(0, '(');
				sb.insert(3, ')');
				sb.insert(9, '-');
				break;
			}
			
			campo.setText(sb.toString());
			
		} else 
			campo.setText("");
	}
}
