//
// Can Chi, Ngũ Hành (tương sinh, khắc, đồng ...)
// Author: Harry Tran (a.k.a Thiên Y) in USA (email: thien.y@operamail.com)
//

var CanHanh = new Array( "Mộc", "Mộc", "Hỏa", "Hỏa", "Thổ", "Thổ", "Kim", "Kim", "Thủy", "Thủy" );
var ChiHanh = new Array( "Thủy", "Thổ", "Mộc", "Mộc", "Thổ", "Hỏa", "Hỏa", "Thổ", "Kim", "Kim", "Thổ", "Thủy" );
var HANH = new Array( "Mộc", "Hỏa", "Thổ", "Kim", "Thủy" );
var TUONG = new Array("Đồng", "Sinh", "Khắc");

// Return 0: err, 1: đồng, 2: sinh, 3: khắc
function so5Hanh(h1, h2)
{
  var ss = 0;
  switch(h1)
  {
  case 0: // Mộc
    switch(h2)
    {
    case 0: ss = 1; break; // Tương Đồng
    case 1: case 4: ss = 2; break; // Tương Sinh
    default: ss = 3; break; // Tương Khắc
    } break;
  case 1:  // Hỏa
    switch(h2)
    {
    case 1: ss = 1; break; // Tương Đồng
    case 0: case 2: ss = 2; break; // Tương Sinh
    default: ss = 3; break; // Tương Khắc
    } break;
  case 2: // Thổ
    switch(h2)
    {
    case 2:  ss = 1; break; // Tương Đồng
    case 1: case 3: ss = 2; break; // Tương Sinh
    default: ss = 3; break; // Tương Khắc
    } break;
  case 3: // Kim
    switch(h2)
    {
    case 3: ss = 1; break; // Tương Đồng
    case 2: case 4: ss = 2; break; // Tương Sinh
    default: ss = 3; break; // Tương Khắc
    } break;
  case 4: // Thủy
    switch(h2)
    {
    case 4:  ss = 1; break; // Tương Đồng
    case 0: case 3: ss = 2; break; // Tương Sinh
    default: ss = 3; break; // Tương Khắc
    } break;
  }
  return ss;
}

function hanhKhi(hanh)
{
  var i;
  for (i=0; i < HANH.length; i++)
    if (hanh == HANH[i]) break;
  return i;
}

function layHanh(cc)
{
  var c = canVi(cc);
  if (c == CAN.length)
  {
    c = chiVi(cc);
    if (c == CHI.length)
      return "";
    return ChiHanh[c];
  }
  else
    return CanHanh[c];
}

// So sánh 2 Thiên Can
function soCan(can1, can2)
{
  var c1 = canVi(can1);
  var c2 = canVi(can2);
  if (c1 == CAN.length || c2 == CAN.length)
    return 0;

  var k1 = hanhKhi(CanHanh[c1]);
  var k2 = hanhKhi(CanHanh[c2]);

  return so5Hanh(k1, k2);
}

// Nhập CAN, phản hồi 2 can tương khắc
function canKhac(can)
{
  var c = canVi(can);
  var k = [0,0];
  //   0      1      2      3      4      5      6      7       8       9
  // "Mộc", "Mộc", "Hỏa", "Hỏa", "Thổ", "Thổ", "Kim", "Kim", "Thủy", "Thủy"
  switch(c) {
  case 0: case 1: k = [6,4]; break;
  case 2: case 3: k = [8,6]; break;
  case 4: case 5: k = [0,8]; break;
  case 6: case 7: k = [2,0]; break;
  case 8: case 9: k = [4,2]; break;
  }
  if ((c%2)==1)
  {
    k[0] += 1; k[1] += 1;
  }
  return k;
}

// So sánh 2 Địa Chi
function soChi(chi1, chi2)
{
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var k1 = hanhKhi(ChiHanh[c1]);
  var k2 = hanhKhi(ChiHanh[c2]);

  return so5Hanh(k1, k2);
}

// Nhập CHI, phục hồi 2 hành tương khắc
/*
function chiHanhKhac(chi)
{
  var c = chiVi(chi);
  var k = [0,0];
  //   0      1      2      3      4      5      6      7       8       9
  // "Mộc", "Mộc", "Hỏa", "Hỏa", "Thổ", "Thổ", "Kim", "Kim", "Thủy", "Thủy"
  switch(c) {
  case 0: case 11: k = [6,4]; break;
  }
  if ((c%2)==1)
  {
    k[0] += 1; k[1] += 1;
  }
  return k;
}
*/

// So sánh giữa Can và Chi
// Return 0: err, 1: đồng, 2: sinh, 3: khắc
function soCanChi(can, chi)
{
  var c1 = canVi(can);
  var c2 = chiVi(chi);
  if (c1 == CAN.length || c2 == CHI.length)
    return 0;

  var k1 = hanhKhi(CanHanh[c1]);
  var k2 = hanhKhi(ChiHanh[c2]);

  return so5Hanh(k1, k2);
}

// Khí Vị
var KHIVI = new Array("Vượng", "Tướng", "Hưu", "Tù", "Tử");

// Xét Khí (giữ 2 Khí: Chủ và Khách), return KHÍ VỊ (KHIKHI)
function xetKhi(k1, k2)
{
  var k = 0; // Khí: Vượng, Tướng, Hưu, Tù, Tử
  switch(k1)
  {
  case 0: // Mộc
    switch(k2)
    {
    case 0: // Mộc
      k = 0; break; // Chủ khách Tỷ Hòa: Vượng khí
    case 1: // Hỏa
      k = 1; break; // Mộc sinh Hỏa, chủ sinh khách: Tướng khí
    case 2: // Thổ
      k = 4; break; // Mộc khắc Thổ, chủ khắc khách: Tử khí
    case 3: // Kim
      k = 3; break; // Kim khắc Mộc, khách khắc chủ: Tù khí
    case 4: // Thủy
      k = 2; break; // Thủy sinh Mộc, khách sinh chủ: Hưu khí
    } break;
  case 1: // Hỏa
    switch(k2)
    {
    case 0: // Mộc
      k = 2; break; // Mộc sinh Hỏa, khách sinh chủ: Hưu khí
    case 1: // Hỏa
      k = 0; break; // Chủ khách Tỷ Hòa: Vượng khí
    case 2: // Thổ
      k = 1; break; // Hỏa sinh Thổ, chủ sinh khách: Tướng khí
    case 3: // Kim
      k = 4; break; // Hỏa khắc Kim, chủ khắc khách: Tử khí
    case 4: // Thủy
      k = 3; break; // Thủy khắc Hỏa, khách khắc chủ: Tù khí
    } break;
  case 2: // Thổ
    switch(k2)
    {
    case 0: // Mộc
      k = 3; break; // Mộc khắc Thổ, khách khắc chủ: Tù khí
    case 1: // Hỏa
      k = 2; break; // Hỏa sinh Thổ, khách sinh chủ: Hưu khí
    case 2: // Thổ
      k = 0; break; // Chủ khách Tỷ Hòa: Vượng khí
    case 3: // Kim
      k = 1; break; // Thổ sinh Kim, chủ sinh khách: Tướng khí
    case 4: // Thủy
      k = 4; break; // Thổ khắc Thủy, chủ khắc khách: Tử khí
    } break;
  case 3: // Kim
    switch(k2)
    {
    case 0: // Mộc
      k = 4; break; // Kim khắc Mộc, chủ khắc khách: Tử khí
    case 1: // Hỏa
      k = 3; break; // Hỏa khắc Kim, khách khắc chủ: Tù khí
    case 2: // Thổ
      k = 2; break; // Thổ sinh Kim, khách sinh chủ: Hưu khí
    case 3: // Kim
      k = 0; break; // Chủ khách Tỷ Hòa: Vượng khí
    case 4: // Thủy
      k = 1; break; // Kim sinh Thủy, chủ sinh khách: Tướng khí
    } break;
  case 4: // Thủy
    switch(k2)
    {
    case 0: // Mộc
      k = 1; break; // Thủy sinh Mộc, chủ sinh khách: Tướng khí
    case 1: // Hỏa
      k = 4; break; // Thủy khắc Hỏa, chủ khắc khách: Tử khí
    case 2: // Thổ
      k = 3; break; // Thổ khắc Thủy, khách khắc chủ: Tù khí
    case 3: // Kim
      k = 2; break; // Kim sinh Thủy, khách sinh chủ: Hưu khí
    case 4: // Thủy
      k = 0; break; // Chủ khách Tỷ Hòa: Vượng khí
    } break;
  }
  return k;
}

// Áp Dụng lấy biệt số; nếu âm đổi lại dương
function bietSo(s1,s2)
{
  var t = s1 - s2;
  if (t<0) t = -t;
  return t;
}

// Thiên Can Ngũ hợp
function canHop(can1, can2)
{
  var c1 = canVi(can1);
  var c2 = canVi(can2);
  if (c1 == CAN.length || c2 == CAN.length)
    return 0;

  var h = 0;
  var t = bietSo(c1,c2);
  if (t == 5) h = 1;
  return h;
}

// Thiên Can Ngũ hợp hóa khí, return (HanhVi+1), 0: không hóa
function canHoa(can1, can2)
{
  var c1 = canVi(can1);
  var c2 = canVi(can2);
  if (c1 == CAN.length || c2 == CAN.length)
    return 0;

  var h = 0;
  /*
  switch(c1)
  {
  case 0: if (c2 == 5) h = 3; break; // Giáp + Kỷ = Thổ
  case 1: if (c2 == 6) h = 4; break; // Ất + Canh = Kim
  case 2: if (c2 == 7) h = 5; break; // Bính + Tân = Thủy
  case 3: if (c2 == 8) h = 1; break; // Đinh + Nhâm = Mộc
  case 4: if (c2 == 9) h = 2; break; // Mậu + Quý = Hỏa
  case 5: if (c2 == 0) h = 3; break; // Giáp + Kỷ = Thổ
  case 6: if (c2 == 1) h = 4; break; // Ất + Canh = Kim
  case 7: if (c2 == 2) h = 5; break; // Bính + Tân = Thủy
  case 8: if (c2 == 3) h = 1; break; // Đinh + Nhâm = Mộc
  case 9: if (c2 == 4) h = 2; break; // Mậu + Quý = Hỏa
  }
  */
  var t = bietSo(c1,c2);
  if (t == 5) h = 1;
  if (h) // Hợp hóa Khí
  {
    switch(c1)
    {
    case 0: case 5: h = 3; break;
    case 1: case 6: h = 4; break;
    case 2: case 7: h = 5; break;
    case 3: case 8: h = 1; break;
    case 4: case 9: h = 2; break;
    }
  }
  return h;
}

// Thiên Can Tương Phá
function canPha(can1, can2)
{
  var c1 = canVi(can1);
  var c2 = canVi(can2);
  if (c1 == CAN.length || c2 == CAN.length)
    return 0;

  var p = 0;
  /*
  switch(c1)
  {
  case 0: if (c2 == 4) p = 1; break; // Giáp phá Mậu
  case 1: if (c2 == 5) p = 1; break; // Ất phá Kỷ
  case 2: if (c2 == 6) p = 1; break; // Bính phá Canh
  case 3: if (c2 == 7) p = 1; break; // Đinh phá Tân
  case 4: if (c2 == 8) p = 1; break; // Mậu phá Nhâm
  case 5: if (c2 == 9) p = 1; break; // Kỷ phá Quý
  case 6: if (c2 == 0) p = 1; break; // Canh phá Giáp
  case 7: if (c2 == 1) p = 1; break; // Tân phá Ất
  case 8: if (c2 == 2) p = 1; break; // Nhâm phá Bính
  case 9: if (c2 == 3) p = 1; break; // Quý phá Đinh
  }
  */
  var t = bietSo(c1,c2);
  if (t == 4 || t==6) p = 1;
  return p;
}

// Thiên Can Tương Phá
function canPhaCan(can)
{
  var c = canVi(can);
  var p = 0;
  if (c<6) p=c+4;
  else p=c-6;
  return p;
}

// Địa Chi Lục Hợp Hóa Khí; Return 0: không hóa; 1:"Mộc", 2:"Hỏa", 3:"Thổ", 4:"Kim", 5:"Thủy"
function chiHoa(chi1, chi2)
{
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var h=0;
  switch(c1)
  {
  case  0: if (c2 == 1 ) h = 3; break; // Tý + Sửu = Thổ
  case  1: if (c2 == 0 ) h = 3; break; // Tý + Sửu = Thổ
  case  2: if (c2 == 11) h = 1; break; // Dần + Hợi = Mộc
  case  3: if (c2 == 10) h = 2; break; // Mão + Tuất = Hỏa
  case  4: if (c2 == 9 ) h = 4; break; // Thìn + Dậu = Kim
  case  5: if (c2 == 8 ) h = 5; break; // Tỵ + Thân = Thủy
  case  6: if (c2 == 7 ) h = 3; break; // Ngọ + Mùi = Thổ (Nhật Nguyệt)
  case  7: if (c2 == 6 ) h = 3; break; // Ngọ + Mùi = Thổ (Nhật Nguyệt)
  case  8: if (c2 == 5 ) h = 5; break; // Tỵ + Thân = Thủy
  case  9: if (c2 == 4 ) h = 4; break; // Thìn + Dậu = Kim
  case 10: if (c2 == 3 ) h = 2; break; // Mão + Tuất = Hỏa
  case 11: if (c2 == 2 ) h = 1; break; // Dần + Hợi = Mộc
  }
  return h;
}

// Địa Chi Tương Xung (Tứ Hành Xung & Lục Xung)
function tuongXung(chi1, chi2)
{
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var x=0;
  // Tý Ngọ xung, 0-6
  // Sửu Mùi xung, 1-7
  // Dần Thân xung, 2-8
  // Mão Dậu xung, 3-9
  // Thìn Tuất xung, 4-10
  // Tỵ Hợi xung, 5-11
  var t = bietSo(c1,c2);
  if (t == 6) x = 1;
  return x;
}

// Nhập chi, hồi hoàn chi tương xung
function chiXung(chi)
{
  var x = 0;
  var c = chiVi(chi);
  /*
  switch(c) {
  case  0: x =  6; break; // Tý Ngọ xung
  case  1: x =  7; break; // Sửu Mùi xung
  case  2: x =  8; break; // Dần Thân xung
  case  3: x =  9; break; // Mão Dậu xung
  case  4: x = 10; break; // Thìn Tuất xung
  case  5: x = 11; break; // Tỵ Hợi xung
  case  6: x =  0; break; // Tý Ngọ xung
  case  7: x =  1; break; // Sửu Mùi xung
  case  8: x =  2; break; // Dần Thân xung
  case  9: x =  3; break; // Mão Dậu xung
  case 10: x =  4; break; // Thìn Tuất xung
  case 11: x =  5; break; // Tỵ Hợi xung
  }
  */
  x = c + 6;
  if (x >= 12) x -= 12;
  return CHI[x];
}

// Địa Chi Lục Hình
function chi6Hinh(chi1, chi2)
{
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var h=0;
  /*
  var LUC_HINH = [3, 10, 5, 0, 7, 2, 9, 4, 11, 6, 1, 8];
  case  0: if (c2 == 3 ) h = 1; break; // Tý hình Mão
  case  1: if (c2 == 10) h = 1; break; // Sửu hình Tuất
  case  2: if (c2 == 5 ) h = 1; break; // Dần hình Tỵ
  case  4: if (c2 == 7 ) h = 1; break; // Thìn hình Mùi
  case  6: if (c2 == 9 ) h = 1; break; // Ngọ hình Dậu
  case  8: if (c2 == 11) h = 1; break; // Thân hình Hợi
  */
  var t = bietSo(c1,c2);
  if (t == 3 || t == 9) h = 1;
  return h;
}

function chiLucHinh(chi)
{
  var LUC_HINH = [3, 10, 5, -1, 7, -1, 9, -1, 11, -1, -1, -1]; 
  // Tý hình Mão
  // Sửu hình Tuất
  // Dần hình Tỵ
  // Thìn hình Mùi
  // Ngọ hình Dậu
  // Thân hình Hợi
  var c = chiVi(chi);
  if (c == CHI.length) return -1;
  return LUC_HINH[c];
}

// Địa Chi Tam Hình, 1 chiều
function chi3Hinh(chi1, chi2)
{
  var TAM_HINH = [3, 10, 5, -1, 4, 8, 6, -1, -1, 9, 7, -1];
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var h=0;
  /*
  case  0: if (c2 == 3 ) h = 1; break; // Tý hình Mão
  case  1: if (c2 == 10) h = 1; break; // Sửu hình Tuất
  case  2: if (c2 == 5 ) h = 1; break; // Dần hình Tỵ
  case 10: if (c2 == 7 ) h = 1; break; // Tuất hình Mùi
  case  5: if (c2 == 8 ) h = 1; break; // Tỵ hình Thân
  case  4: if (c2 == 4 ) h = 1; break; // Thìn hình Thìn
  case  6: if (c2 == 6 ) h = 1; break; // Ngọ hình Ngọ
  case  9: if (c2 == 9 ) h = 1; break; // Dậu hình Dậu
  */
  if (TAM_HINH[c1] == c2) h=1;
  return h;
}

function chiTamHinh(chi)
{
  var TAM_HINH = [3, 10, 5, -1, 4, 8, 6, -1, -1, 9, 7, -1];
  // Tý hình Mão
  // Sửu hình Tuất
  // Dần hình Tỵ
  // Tuất hình Mùi
  // Tỵ hình Thân
  // Thìn hình Thìn
  // Ngọ hình Ngọ
  // Dậu hình Dậu
  var c = chiVi(chi);
  if (c == CHI.length) return -1;
  return TAM_HINH[c];
}

// Địa Chi Lục Hại
function chi6Hai(chi1, chi2)
{
  var LUC_HAI = [7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8];
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var h=0;
  // Tý hại Mùi
  // Sửu hại Ngọ
  // Dần hại Tỵ
  // Mão hại Thìn
  // Thân hại Hợi
  // Dậu hại Tuất
  if (LUC_HAI[c1] == c2 && LUC_HAI[c2] == c1) h = 1;
  return h;
}

function chiHai(chi)
{
  var LUC_HAI = [7, 6, 5, 4, 3, 2, 1, 0, 11, 10, 9, 8];
  var c = chiVi(chi);
  if (c == CHI.length) return -1;
  return LUC_HAI[c];
}

// Địa Chi Tứ Tuyệt
function chi4Tuyet(chi1, chi2)
{
  var TU_TUYET = [5, 7, 9, 8, 10, 0, 11, 1, 3, 2, 4, 6];
  var c1 = chiVi(chi1);
  var c2 = chiVi(chi2);
  if (c1 == CHI.length || c2 == CHI.length)
    return 0;

  var t=0;
  // Tý Tỵ
  // Sửu Mùi
  // Dần Dậu
  // Mão Thân
  // Thìn Tuất
  // Ngọ Hợi
  if (TU_TUYET[c1] == c2 && TU_TUYET[c2] == c1) t=1;
  return t;
}

function chiTuyet(chi)
{
  var TU_TUYET = [5, 7, 9, 8, 10, 0, 11, 1, 3, 2, 4, 6];
  var c = chiVi(chi);
  if (c == CHI.length) return -1;
  return TU_TUYET[c];
}

// Chi Tam Hợp. Nhập Chi (Tý...Hợi)
// Ví dụ: chủ tuổi mùi, ngày hợi, giờ mão; thành Hợi Mão Mùi tam hợp cục để nhập trạch
function chiTamHop(chi1,chi2,chi3)
{
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var c3=chiVi(chi3);
  var h=0,t1,t2;
  t1=bietSo(c1,c2);
  t2=bietSo(c1,c3);
  // Thân Tý Thìn, Dần Ngọ Tuất, Tỵ Dậu Sửu, Hợi Mão Mùi
  if ((t1==4 && t2==8) || (t1==8 && t2==4)) h=1;
  return h;
}

function chi3Hop(chi)
{
  var c = chiVi(chi);
  var h = [0,0,0];
  switch(c) {
  case 0: case 4: case  8: h = [4, 0,  8]; break; // Thân Tý Thìn
  case 1: case 5: case  9: h = [9, 5,  1]; break; // Tỵ Dậu Sửu
  case 2: case 6: case 10: h = [2, 6, 10]; break; // Dần Ngọ Tuất
  case 3: case 7: case 11: h = [11, 3, 7]; break; // Hợi Mão Mùi
  }
  return h;
}

var LUC_HOP = [1, 0, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2];

// Chi Lục Hợp. Nhập Chi (Tý...Hợi)
function chiLucHop(chi1,chi2)
{
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var h=0;
  // Tý Sửu
  // Dần Hợi
  // Mão Tuất
  // Thìn Dậu
  // Tỵ Thân
  // Ngọ Mùi
  if (LUC_HOP[c1] == c2 && LUC_HOP[c2] == c1) h=1;
  return h;
}

// Lục Hợp. Nhập Chi Vị (0...11)
function chi6Hop(c1,c2)
{
  var h=0;
  // Tý Sửu
  // Dần Hợi
  // Mão Tuất
  // Thìn Dậu
  // Tỵ Thân
  // Ngọ Mùi
  if (LUC_HOP[c1] == c2 && LUC_HOP[c2] == c1) h=1;
  return h;
}

// Phản hồi chi hợp
function chiHop(chi)
{
  var c = chiVi(chi);
  return LUC_HOP[c];
}

// Chi Đức Hợp (Cát: Tốt). Nhập Chi (Tý...Hợi)
function chiDucHop(chi1,chi2)
{
  var DUC_HOP = [5, 8, 7, 10, 9, 0, 11, 2, 1, 4, 3, 6];
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var h=0;
  // Tý Tỵ
  // Sửu Thân
  // Dần Mùi
  // Ngọ Hợi
  // Mão Tuất
  // Thìn Dậu
  if (DUC_HOP[c1] == c2 && DUC_HOP[c2] == c1) h=1
  return h;
}

// Tứ Kiểm Hợp (Cát: Tốt). Nhập Chi (Tý...Hợi)
function tuKiemHop(chi1,chi2)
{
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var h=0;
  if ((c1==1 && c2==11) || (c1==11 && c2==1)) h=1; // Sửu Hợi
  else if ((c1==2 && c2==4 ) || (c1==4  && c2==2)) h=1; // Dần Thìn
  else if ((c1==5 && c2==7 ) || (c1==7  && c2==5)) h=1; // Tỵ Mùi
  else if ((c1==8 && c2==10) || (c1==10 && c2==8)) h=1; // Thân Tuất
  return h;
}

// Luận Tam Hợp
function chi3HopLuan(c1,c2,c3)
{
  var r1=bietSo(c2,c1);
  var r2=bietSo(c3,c1);
  var h=0;
  if ((r1==4 && r2==8) || (r1==8 && r2==4)) h=1;
  return h;
}

// Năm, Tháng, Ngày, Giờ đại cát
function chi3HopCat(c1,c2,c3)
{
  var cat = [-1,-1]; // 2 Chi Cát
  if (chiTamHop(c1,c2,c3)==0)
    return cat;
  switch(c1)
  {
  case 0: case 4: case 8:
  case 2: case 6: case 10: cat = [2,8]; break; // Dần & Thân
  case 1: case 5: case 9:
  case 3: case 7: case 11: cat = [5,11]; break; // Tỵ & Hợi
  default: break;
  }
  return cat;
}

// Hướng
var HUONG = new Array("Nhâm","Tý","Quý","Sửu","Cấn","Dần","Giáp","Mão","Ất","Thìn","Tốn","Tỵ",
	"Bính","Ngọ","Đinh","Mùi","Khôn","Thân","Canh","Dậu","Tân","Tuất","Kiền","Hợi" );

// Nhập 3 can vị; return: Năm, Tháng, Ngày, Giờ đại Hung & Hướng (24 Sơn)
function chiTamHopKy(c1,c2,c3)
{
  var hung = [-1,-1,-1,-1,-1]; // Giờ, h1, h2, h3, h4 (all used the real index)
  if (chiTamHop(c1,c2,c3)==0)
    return hung; // i+1
  delete hung;
  switch(c1)
  {
  case 0: case 4: case  8: hung = [7,6,8,18,20]; break; // Giờ Mùi, hướng Giáp, Ất, Canh, Tân
  case 1: case 5: case  9: hung = [4,12,0,14,2]; break; // Giờ Thìn, hướng Bính, Nhâm, Đinh, Quý
  case 2: case 6: case 10: hung = [1,6,8,18,20]; break; // Giờ Sửu, hướng Giáp, Ất, Canh, Tân
  case 3: case 7: case 11: hung = [10,12,0,14,2]; break; // Giờ Tuất, hướng Bính, Nhâm, Đinh, Quý
  }
  return hung;
}

// Địa Đới (Hung: Xấu). Nhập Chi (Tý...Hợi)
function diaDoi(chi1,chi2)
{
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var h=0;
  if ((c1==0 && c2==2) || (c1==2 && c2==0)) h=1; // Tý Dần
  else if ((c1==1 && c2==3 ) || (c1==3  && c2==1) ) h=1; // Sửu Mão
  else if ((c1==4 && c2==11) || (c1==11 && c2==4) ) h=1; // Thìn Hợi
  else if ((c1==6 && c2==8 ) || (c1==8  && c2==6) ) h=1; // Ngọ Thân
  else if ((c1==7 && c2==9 ) || (c1==9  && c2==7) ) h=1; // Mùi Dậu
  else if ((c1==10 && c2==5) || (c1==5  && c2==10)) h=1; // Tuất Tỵ
  return h;
}

// Tuế Tinh (Hung: Xấu). Nhập Chi (Tý...Hợi)
function tueTinh(chi1,chi2)
{
  var c1=chiVi(chi1);
  var c2=chiVi(chi2);
  var h=0;
  if ((c1==0 && c2==3) || (c1==3 && c2==0)) h=1; // Tý Mão
  else if ((c1==1 && c2==2) || (c1==2 && c2==1)) h=1; // Dần Sửu 
  else if ((c1==4 && c2==5) || (c1==5 && c2==4)) h=1; // Thìn Tỵ
  else if ((c1==7 && c2==8) || (c1==8 && c2==7)) h=1; // Mùi Thân
  else if ((c1==6 && c2==9) || (c1==9 && c2==6)) h=1; // Ngọ Dậu
  else if ((c1==10 && c2==11) || (c1==11 && c2==10)) h=1; // Tuất Hợi
  return h;
}

// Tìm Không Vong; nhập Can & Chi Năm; return chi đầu trong mỗi cặp
function khongVong(can, chi)
{
  // Trong vòng ------------ Giáp Tý,  G.  Tuất, G. Thân, G.  Ngọ, G. Thìn, G. Dần
  // Không Vong luôn có đôi: Tuất Hợi, Thân Dậu, Ngọ Mùi, Thìn Tỵ, Dần Mão, Tý Sửu
  var KV1 = [10,8,6,4,2,0];
  //var KV2 = [11,9,7,5,3,1];
  var canvi = canVi(can);
  var chivi = chiVi(chi);
  var biet  = chivi - canvi;
  if (biet < 0) biet += 12;
  switch(biet)
  {
  case  0: kv=KV1[0]; break;
  case  2: kv=KV1[5]; break;
  case  4: kv=KV1[4]; break;
  case  6: kv=KV1[3]; break;
  case  8: kv=KV1[2]; break;
  case 10: kv=KV1[1]; break;
  }
  return kv;
}

// Tìm Không Vong Thời; Nhập Can ngày, return chi GIỜ đầu trong mỗi cặp
function gioKhongVong(can)
{
  // Không Vong luôn có đôi: Tuất Hợi, Thân Dậu, Ngọ Mùi, Thìn Tỵ, Dần Mão, Tý Sửu
  var KV1 = [10,8,6,4,2,0];
  //var KV2 = [11,9,7,5,3,1];
  var can = canVi(can);
  var kv=0;
  switch(can)
  {
  case 0: case 5: kv=KV1[1]; break; // Ngày Giáp Kỷ  : giờ Thân Dậu
  case 1: case 6: kv=KV1[2]; break; // Ngày Ất Canh  : giờ Ngọ Mùi
  case 2: case 7: kv=KV1[3]; break; // Ngày Bính Tân : giờ Thìn Tỵ
  case 3: case 8: kv=KV1[4]; break; // Ngày Đinh Nhâm: giờ Dần Mão
  case 4: case 9: kv=KV1[0]; break; // Ngày Mậu Quí  : giờ Tý Sửu
  }
  return kv;
}

