const PASS_KEY = "cp-admin-pass";
const SESSION_KEY = "cp-admin-session";
const DEFAULT_PASS = "kedr48";

function simpleHash(str: string): string {
  let hash = 0;
  const salt = "pulse-capital-rj-2026";
  const input = str + salt;
  for (let i = 0; i < input.length; i++) {
    const char = input.charCodeAt(i);
    hash = ((hash << 5) - hash + char) | 0;
  }
  // Second pass for more entropy
  let hash2 = 5381;
  for (let i = 0; i < input.length; i++) {
    hash2 = ((hash2 << 5) + hash2 + input.charCodeAt(i)) | 0;
  }
  const hex1 = (hash >>> 0).toString(16).padStart(8, "0");
  const hex2 = (hash2 >>> 0).toString(16).padStart(8, "0");
  return hex1 + hex2;
}

export function initPassword(): void {
  if (typeof window === "undefined") return;
  const existing = localStorage.getItem(PASS_KEY);
  if (!existing) {
    localStorage.setItem(PASS_KEY, simpleHash(DEFAULT_PASS));
  }
}

export function login(password: string): boolean {
  const hashed = simpleHash(password);
  const stored = localStorage.getItem(PASS_KEY);
  if (hashed === stored) {
    sessionStorage.setItem(SESSION_KEY, "1");
    return true;
  }
  return false;
}

export function logout(): void {
  sessionStorage.removeItem(SESSION_KEY);
}

export function isLoggedIn(): boolean {
  if (typeof window === "undefined") return false;
  return sessionStorage.getItem(SESSION_KEY) === "1";
}

export function changePassword(current: string, newPass: string): boolean {
  const currentHash = simpleHash(current);
  const stored = localStorage.getItem(PASS_KEY);
  if (currentHash !== stored) return false;
  localStorage.setItem(PASS_KEY, simpleHash(newPass));
  return true;
}
