/* ---------------------------------------------------- */
/* 🚀 공통 스타일: 네 위젯 박스 높이 "고정" 및 디자인 최적화 */
/* ---------------------------------------------------- */
/* 모든 위젯에 공통으로 적용될 최상위 컨테이너 */
.unified-widget-container {
background-color: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 12px;
padding: 15px;
box-shadow: 0 6px 12px rgba(0,0,0,0.08);
font-family: 'Noto Sans KR', sans-serif;
/* 높이 통일의 핵심: height 속성으로 고정 높이 강제 적용 */
height: 220px;
display: flex;
flex-direction: column;
align-items: stretch;
box-sizing: border-box;
overflow: hidden;
}
/* 위젯 제목 스타일 */
.unified-widget-title {
font-size: 15px;
font-weight: 700;
color: #2c3e50;
margin-bottom: 15px;
padding-bottom: 8px;
text-align: center;
background-color: inherit;
}
/* 각 위젯별 제목 하단 강조선 색상 */
.currency-widget-container .unified-widget-title { border-bottom: 3px solid #FFD700; }
.weather-widget-container .unified-widget-title { border-bottom: 3px solid #5DADE2; }
.thai-phrase-widget-container .unified-widget-title { border-bottom: 3px solid #28a745; }
.cctv-widget-container .unified-widget-container .unified-widget-title { border-bottom: 3px solid #9B59B6; }
/* 위젯 내용 영역 (ID) 스타일 */
#currency_widget, #weather_widget, #thai_phrase_widget, #cctv_widget_map {
flex-grow: 1;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 0;
overflow: hidden;
}
/* ---------------------------------------------------- */
/* 태국어 위젯 내부 스타일 */
/* ---------------------------------------------------- */
#thai_phrase_widget .phrase-category {
font-size: 10px;
font-weight: 700;
padding: 3px 8px;
border-radius: 15px;
display: inline-block;
margin-bottom: 10px;
text-transform: uppercase;
line-height: 1;
}
#thai_phrase_widget .thai-text {
color: #E67E22;
font-weight: 900;
font-size: 18px;
line-height: 1.4;
margin-bottom: 5px;
display: block;
}
#thai_phrase_widget .eng-pronunciation {
font-size: 13px;
color: #8B4513;
font-weight: 500;
margin-bottom: 3px;
font-style: italic;
display: block;
}
#thai_phrase_widget .korean-meaning {
font-size: 14px;
color: #2C5530;
font-weight: 700;
line-height: 1.2;
margin-top: 5px;
display: block;
/* 최대 2줄만 표시되도록 강제 */
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
(function() {
'use strict';
// =========================================================
// 3. 태국어 문구 로테이션 데이터
// =========================================================
const thaiPhrases = [
{thai: "싸왓디 캅/카 (สวัสดีครับ/ค่ะ)", eng: "Sawad-dee Krap/Ka", kr: "안녕하세요 / 안녕히 가세요 (남/여)"},
{thai: "커쿤 캅/카 (ขอบคุณครับ/ค่ะ)", eng: "Kòp Kun Krap/Ka", kr: "감사합니다 (남/여)"},
{thai: "커톳 크랍/카 (ขอโทษครับ/ค่ะ)", eng: "Kǒo Tôt Krap/Ka", kr: "미안합니다 / 실례합니다"},
{thai: "타오라이 캅/카? (เท่าไหร่ครับ/ค่ะ)", eng: "Tâo Rài Krap/Ka?", kr: "이거 얼마예요?"},
{thai: "아러이 막막 (อร่อยมากมาก)", eng: "A-ròi Mâk Mâk", kr: "정말 맛있어요"},
{thai: "마이 아오 펫 (ไม่เอาเผ็ด)", eng: "Mâi Ao Pèt", kr: "맵지 않게 해주세요"},
{thai: "홍남 유 티나이? (ห้องน้ำอยู่ทีไหน)", eng: "Hông Nám Yùu Tîi Nãi?", kr: "화장실이 어디예요?"},
{thai: "빠이 ... 다이 마이? (ไป...ได้ไหม)", eng: "Bpāi ... Dâi Máhï?", kr: "...에 갈 수 있나요?"},
{thai: "롯 너이 다이 마이? (ลดหน่อยได้ไหม)", eng: "Lót Nòi Dâi Máhï?", kr: "좀 깎아주세요?"},
{thai: "아오 อัน니 (เอาอันนี้)", eng: "Ao An Née", kr: "이것 주세요"},
{thai: "폼/디찬 츠으... (ผม/ดิฉันชื่อ...)", eng: "Pǒm/Dì Chăn Chʉ̂ʉ...", kr: "제 이름은 ...입니다 (남/여)"},
{thai: "뺀 양라이 방 캅/คา? (เป็นอย่างไรบ้าง)", eng: "Bpen Yàng Rai Bâng Krap/Ka?", kr: "어떻게 지내세요?"},
{thai: "싸바이 디 마이? (สบายดีไหม)", eng: "Sà Bāi Dee Máhï?", kr: "잘 지내세요?"},
{thai: "싸바이 디 (สบายดี)", eng: "Sà Bāi Dee", kr: "잘 지냅니다"},
{thai: "느아이 (เหนื่อย)", eng: "Nèuay", kr: "피곤해요"},
{thai: "폼/디찬 락 쿤 (ผม/ดิฉันรักคุณ)", eng: "Pǒm/Dì Chăn Rák Kun", kr: "사랑해요 (남/여)"},
{thai: "낀 카우 르 양? (กินข้าวหรือยัง)", eng: "Gin Kâo Rĕu Yâng?", kr: "밥 먹었니?"},
{thai: "낀 래우 (กินแล้ว)", eng: "Gin Láew", kr: "먹었어요"},
{thai: "마이 낀 (ไม่กิน)", eng: "Mâi Gin", kr: "안 먹었어요"},
{thai: "남 쁠라 (น้ำปลา)", eng: "Nám Plā", kr: "피쉬 소스 (액젓)"},
{thai: "카우 팟 (ข้าวผัด)", eng: "Kâo Pàt", kr: "볶음밥"},
{thai: "팟타이 (ผัดไทย)", eng: "Pàt Thai", kr: "태국식 볶음 쌀국수"},
{thai: "쏨땀 (ส้มตำ)", eng: "Sôm Tam", kr: "파파야 샐러드"},
{thai: "똠얌꿍 (ต้มยำกุ้ง)", eng: "Dtôm Yam Gûng", kr: "새우 넣은 매콤 시큼한 수프"},
{thai: "펫 막 (เผ็ดมาก)", eng: "Pèt Mâk", kr: "매우 매워요"},
{thai: "카우 니여우 마무앙 (ข้าวเหนียวมะม่วง)", eng: "Kâo Nǐaw Ma Mûang", kr: "망고 밥"},
{thai: "아오 남 마이? (เอาน้ำไหม)", eng: "Ao Nám Máhï?", kr: "물 드릴까요?"},
{thai: "아오 (เอา)", eng: "Ao", kr: "주세요 (가질게요)"},
{thai: "마이 아오 (ไม่เอา)", eng: "Mâi Ao", kr: "필요 없어요"},
{thai: "롯 (รถ)", eng: "Rót", kr: "차, 차량"},
{thai: "롯메 (รถเมล์)", eng: "Rót May", kr: "버스"},
{thai: "뚝뚝 (ตุ๊กตุ๊ก)", eng: "Dtúk Dtúk", kr: "삼륜차"},
{thai: "택시 (แท็กซี่)", eng: "Ták Sêe", kr: "택시"},
{thai: "므어 라이? (เมื่อไหร่)", eng: "Mʉ̂a Rài?", kr: "언제요?"},
{thai: "유 티 나이? (อยู่ทีไหน)", eng: "Yùu Tîi Nãi?", kr: "어디에 있나요?"},
{thai: "빠이 니 (ไปนี่)", eng: "Bpāi Nêe", kr: "이쪽으로 가주세요"},
{thai: "쿤모 (หมอ)", eng: "Mǒr", kr: "의사"},
{thai: "롱 파야반 (โรงพยาบาล)", eng: "Rong Pa Yaa Baan", kr: "병원"},
{thai: "추어이 두어이 (ช่วยด้วย)", eng: "Chûay Dûay!", kr: "도와주세요!"},
{thai: "뺀 아라이? (เป็นอะไร)", eng: "Bpen À Rai?", kr: "무슨 일 있어요?"},
{thai: "하이 짜이 마이 아웃 (หายใจไม่ออก)", eng: "Hăi Jai Mâi Àwk", kr: "숨을 못 쉬겠어요"},
{thai: "파이 마이 (ไฟไหม้)", eng: "Fai Mâi!", kr: "불이야!"},
{thai: "탐 하이 찬 너이 (ทำให้ฉันหน่อย)", eng: "Tam Hâi Chăn Nòi", kr: "저를 위해 해주세요"},
{thai: "디 막 (ดีมาก)", eng: "Dee Mâk", kr: "아주 좋아요"},
{thai: "마이 디 (ไม่ดี)", eng: "Mâi Dee", kr: "좋지 않아요"},
{thai: "크럽/카 (ครับ/ค่ะ)", eng: "Krap/Ka", kr: "네 / 알겠습니다"},
{thai: "마이 크랍/카 (ไม่ครับ/ค่ะ)", eng: "Mâi Krap/Ka", kr: "아닙니다 / 몰라요"},
{thai: "쁘아 (ป่วย)", eng: "Bpuay", kr: "아파요"},
{thai: "탐응안 (ทำงาน)", eng: "Tam Ngaan", kr: "일하다"},
{thai: "풋 파싸 앙끄릿 다이 마이? (พูดภาษาอังกฤษได้ไหม)", eng: "Pûut Păsăa Ang-grìt Dâi Máhï?", kr: "영어 할 줄 아세요?"},
{thai: "폼/디찬 풋 파싸 타이 다이 닛너이 (พูดภาษาไทยได้นิดหน่อย)", eng: "Pûut Păsăa Thai Dâi Nít Nòi", kr: "저는 태국어를 조금 할 수 있어요"},
{thai: "뺀 야이 (ใหญ่)", eng: "Bpen Yài", kr: "크다"},
{thai: "뺀 렉 (เล็ก)", eng: "Bpen Lék", kr: "작다"},
{thai: "뺀 쑤응 (สูง)", eng: "Bpen Sǔung", kr: "높다"},
{thai: "뺀 따 (ต่ำ)", eng: "Bpen Dtàam", kr: "낮다"},
{thai: "뺀 수어이 (สวย)", eng: "Bpen Sǔay", kr: "예쁘다"},
{thai: "뺀 러 (หล่อ)", eng: "Bpen Lɔ̀r", kr: "멋있다 (남자에게)"},
{thai: "마이 루 (ไม่รู้)", eng: "Mâi Rúu", kr: "몰라요"},
{thai: "카오 짜이 (เข้าใจ)", eng: "Kâo Jai", kr: "이해해요"},
{thai: "마이 ค้า (ไม่เข้าใจ)", eng: "Mâi Kâo Jai", kr: "이해 못 해요"},
{thai: "락 너이 (ลักหน่อย)", eng: "Rák Nòi", kr: "잠시만요 (기다려)"},
{thai: "마 มา มา (มา มา มา)", eng: "Mā Mā Mā", kr: "이리와"},
{thai: "짜이 옌옌 (ใจเย็นๆ)", eng: "Jai Yen Yen", kr: "진정해, 침착해"},
{thai: "디 짜이 (ดีใจ)", eng: "Dee Jai", kr: "기뻐요"},
{thai: "쓰어 짜이 (เสียใจ)", eng: "Sǐa Jai", kr: "슬퍼요"},
{thai: "커 남 (ขอน้ำ)", eng: "Kǒr Nám", kr: "물 주세요"},
{thai: "커 벤또 (ขอเบียร์)", eng: "Kǒr Bia", kr: "맥주 주세요"},
{thai: "싸이 남 캥 (ใสน้ำแข็ง)", eng: "Sài Nám Kĕng", kr: "얼음 넣어 주세요"},
{thai: "마이 싸이 남 캥 (ไม่ใสน้ำแข็ง)", eng: "Mâi Sài Nám Kĕng", kr: "얼음 넣지 마세요"},
{thai: "커 차 (ขอชา)", eng: "Kǒr Chāa", kr: "차 주세요"},
{thai: "커 커피 (ขอคาเฟ)", eng: "Kǒr Kaa Fae", kr: "커피 주세요"},
{thai: "짜이 (จ่าย)", eng: "Jàai", kr: "계산하다"},
{thai: "낀 (กิน)", eng: "Gin", kr: "먹다"},
{thai: "넌 (นอน)", eng: "Nɔn", kr: "자다"},
{thai: "능 (หนึ่ง)", eng: "Nèung", kr: "하나"},
{thai: "썽 (สอง)", eng: "Sɔ̌ng", kr: "둘"},
{thai: "쌈 (สาม)", eng: "Sǎam", kr: "셋"},
{thai: "씨 (สี่)", eng: "Sèe", kr: "넷"},
{thai: "하 (ห้า)", eng: "Hâa", kr: "다섯"},
{thai: "혹 (หก)", eng: "Hòk", kr: "여섯"},
{thai: "쩻 (เจ็ด)", eng: "Jèt", kr: "일곱"},
{thai: "뺏 (แปด)", eng: "Bpàet", kr: "여덟"},
{thai: "까오 (เก้า)", eng: "Gâo", kr: "아홉"},
{thai: "씹 (สิบ)", eng: "Sìp", kr: "열"},
{thai: "끼 반 (กี่บาท)", eng: "Gèe Bàat?", kr: "몇 바트예요?"},
{thai: "티 니 (ที่นี่)", eng: "Tîi Nêe", kr: "여기"},
{thai: "티 난 (ที่นั้น)", eng: "Tîi Nán", kr: "저기"},
{thai: "티 노은 (ที่โน้น)", eng: "Tîi Nóhn", kr: "저 멀리"},
{thai: "싸이 (ซ้าย)", eng: "Sáai", kr: "왼쪽"},
{thai: "콰 (ขวา)", eng: "Kwăa", kr: "오른쪽"},
{thai: "뜨롱 빠이 (ตรงไป)", eng: "Dtrong Bpāi", kr: "직진"},
{thai: "끼 몽? (กี่โมง)", eng: "Gèe Mohng?", kr: "몇 시예요?"},
{thai: "짜 빠이 (จะไป)", eng: "Jà Bpāi", kr: "갈 거예요"},
{thai: "탐 마이? (ทำไม)", eng: "Tam Máhï?", kr: "왜요?"},
{thai: "때오 니 (เดี๋ยวนี้)", eng: "Dtiow Née", kr: "지금 당장"},
{thai: "완 니 (วันนี้)", eng: "Wan Née", kr: "오늘"},
{thai: "프룽 니 (พรุ่งนี้)", eng: "Prûng Née", kr: "내일"},
{thai: "므어 완 นิ (เมื่อวานนี้)", eng: "Mʉ̂a Wan Née", kr: "어제"},
{thai: "쁘라만 (ประมาณ)", eng: "Bprà Māan", kr: "대략"},
{thai: "커 쁘라만 라카 (ขอประมาณราคา)", eng: "Kǒr Bprà Māan Rāakāa", kr: "대략적인 가격을 알려주세요"},
{thai: "추업 (ช่วย)", eng: "Chûay", kr: "도움"},
{thai: "쑤아이 추업 (สวยช่วย)", eng: "Sǔay Chûay", kr: "도움을 요청합니다 (미녀가 도와줘요)"},
{thai: "쁘랏따 (ประตู)", eng: "Bprà Dtūu", kr: "문"},
{thai: "빼드 (เปิด)", eng: "Bpèrt", kr: "열다"},
{thai: "삣 (ปิด)", eng: "Bpìt", kr: "닫다"},
{thai: "카이 (ไข)", eng: "Kăi", kr: "팔다"},
{thai: "쓰 (ซื้อ)", eng: "Sʉ́ʉ", kr: "사다"},
{thai: "폼/디찬 흐이유 (ผม/ดิฉันหิว)", eng: "Pǒm/Dì Chăn Hǐu", kr: "저는 배고파요 (남/여)"},
{thai: "커 아한 (ขออาหาร)", eng: "Kǒr Āhăan", kr: "음식 주세요"}
];
let currentPhraseIndex = 0;
let rotationInterval;
// =========================================================
// 태국어 위젯 로직
// =========================================================
/**
* @description 다음 태국어 문구로 회전하며 렌더링합니다.
*/
function rotateThaiPhrase() {
const thaiWidget = document.getElementById('thai_phrase_widget');
if (!thaiWidget) return;
const phrase = thaiPhrases[currentPhraseIndex];
// 카테고리 스타일 계산
const categoryStyle = getCategoryStyle(phrase);
const html = `
${categoryStyle.icon} ${categoryStyle.name}
${phrase.thai}
🔊 ${phrase.eng}
${phrase.kr}
`;
thaiWidget.innerHTML = html;
// 다음 인덱스로 이동
currentPhraseIndex = (currentPhraseIndex + 1) % thaiPhrases.length;
}
/**
* @description 문구 내용에 따라 카테고리 스타일을 반환합니다.
*/
function getCategoryStyle(phrase) {
const krText = phrase.kr.toLowerCase();
if (krText.includes('안녕') || krText.includes('감사') || krText.includes('지내세요')) {
return { name: '인사', color: '#007bff', bgColor: '#E3F2FD', icon: '👋' };
} else if (krText.includes('얼마') || krText.includes('가격') || krText.includes('깎아') || krText.includes('사다') || krText.includes('주세요')) {
return { name: '쇼핑/결제', color: '#28a745', bgColor: '#E8F5E8', icon: '🛍️' };
} else if (krText.includes('맛있') || krText.includes('음식') || krText.includes('배고파요') || krText.includes('맥주') || krText.includes('먹다') || krText.includes('소스')) {
return { name: '음식/식사', color: '#dc3545', bgColor: '#FFEBEE', icon: '🍜' };
} else if (krText.includes('화장실') || krText.includes('병원') || krText.includes('가다') || krText.includes('택시') || krText.includes('어디') || krText.includes('이리와')) {
return { name: '위치/교통', color: '#6f42c1', bgColor: '#F3E5F5', icon: '🚗' };
} else if (krText.includes('도와주세요') || krText.includes('무슨 일') || krText.includes('숨을 못') || krText.includes('아파요') || krText.includes('불이야') || krText.includes('진정해')) {
return { name: '응급/요청', color: '#ffc107', bgColor: '#FFF3CD', icon: '🚨' };
} else {
return { name: '일상 회화', color: '#6c757d', bgColor: '#F5F5F5', icon: '💬' };
}
}
/**
* @description 회전 인터벌을 초기화하고 시작합니다.
*/
function initThaiPhraseRotation() {
if (rotationInterval) {
clearInterval(rotationInterval);
}
rotateThaiPhrase();
rotationInterval = setInterval(rotateThaiPhrase, 5000); // 5초 간격
}
/**
* @description 마우스 호버 시 회전을 멈추는 기능을 추가합니다.
*/
function addHoverPause() {
const thaiWidget = document.getElementById('thai_phrase_widget');
if (thaiWidget) {
thaiWidget.addEventListener('mouseenter', () => {
if (rotationInterval) {
clearInterval(rotationInterval);
}
});
thaiWidget.addEventListener('mouseleave', () => {
initThaiPhraseRotation();
});
}
}
/**
* @description 최종 초기화 함수
*/
function initThaiWidget() {
initThaiPhraseRotation();
addHoverPause();
}
// DOM이 준비되면 실행
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initThaiWidget);
} else {
initThaiWidget();
}
})();