﻿/*
 *  script for map support
 *
 *
 *
 */

function pageLoad(sender, args) {

  var comboRegionSimple = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbRegion');
  var comboSubregionSimple = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbSubregion');

  var comboRegionAdvanced = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbRegion');
  var comboSubregionAdvanced = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbSubregion');

  var tabSearchControl = $find("ctl00_cphContent_tabControlSearch");
  iSelectedTabIndex = tabSearchControl.get_activeTabIndex();

  if (args._isPartialLoad) {
    // partial load

    if (!bEventFromMap) {
      if (iSelectedTabIndex == 0) {
        if (comboSubregionSimple.value != '') {
          updateMap(convertId2Tag(comboSubregionSimple.value));
          updateMap(convertId2Tag(comboSubregionSimple.value));
        }
        else if (comboRegionSimple.value != '') {
          updateMap(convertId2Tag(comboRegionSimple.value), true);
        }
        else {
          updateMap('ALL');
         }
      }
      else if (iSelectedTabIndex == 1)
      {
        if (comboSubregionAdvanced.value != '') {
          updateMap(convertId2Tag(comboSubregionAdvanced.value));
          updateMap(convertId2Tag(comboSubregionAdvanced.value));
        }
        else if (comboRegionAdvanced.value != '') {
          updateMap(convertId2Tag(comboRegionAdvanced.value), true);
        }
        else {
          updateMap('ALL');
        }
      }
    }
    bEventFromMap = false;
  }
  else {
    // full load
    if (comboRegionSimple.value != '') {
      updateMap(convertId2Tag(comboRegionSimple.value), true);
    }
    if (comboSubregionSimple.value != '') {
      updateMap(convertId2Tag(comboSubregionSimple.value));
    }
    if (comboRegionSimple.value == '' && comboSubregionSimple.value == '') {
      updateMap('ALL');
    }
    bEventFromMap = false;
  }
}

function ActiveTabChanged(sender, e) {
  iSelectedTabIndex = sender.get_activeTabIndex();
}

function updateComboRegion(regionID) {
  var comboRegionSimple = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbRegion');
  var comboRegionAdvanced = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbRegion');

  if (iSelectedTabIndex == 0)
  {
    if (comboRegionSimple.value != regionID)
    {
      comboRegionSimple.value = regionID;
      __doPostBack('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbRegion', '')
    }
  }
  else
  {
    if (comboRegionAdvanced.value != regionID)
    {
      comboRegionAdvanced.value = regionID;
      __doPostBack('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbRegion', '')
    }
  }
}

function updateComboSubregion(subregionID) {
  var comboSubregionSimple = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbSubregion');
  var comboSubregionAdvanced = document.getElementById('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbSubregion');

  if (iSelectedTabIndex == 0)
  {
    if (comboSubregionSimple.value != subregionID)
    {
      comboSubregionSimple.value = subregionID;
      __doPostBack('ctl00_cphContent_tabControlSearch_tabPageSimpleSearch_cSimpleSearch_cmbSubregion', '')
    }
  }
  else
  {
    if (comboSubregionAdvanced.value != subregionID)
    {
      comboSubregionAdvanced.value = subregionID;
      __doPostBack('ctl00_cphContent_tabControlSearch_tabPageAdvancedSearch_cAdvancedSearch_cmbSubregion', '')
    }
  }
}

function updateCombo(tag) {
  if (tag.length == 1) {
    updateComboRegion(convertTag2Id(tag));
  }
  else if (tag.length == 2) {
    updateComboSubregion(convertTag2Id(tag));
  }
}

function convertTag2Id(tag) {
  switch (tag) {
    case 'A': return '';
    case 'A1': return '';
    case 'A2': return '';
    case 'B': return '';
    case 'B1': return '';
    case 'B2': return '';
    case 'B3': return '';
    case 'B4': return '';
    case 'C': return '';
    case 'C1': return '';
    case 'C2': return '';
    case 'D': return '';
    case 'E': return '175';
    case 'E1': return '185';
    case 'E2': return '189';
    case 'E3': return '197';
    case 'E4': return '176';
    case 'F': return '';
    case 'F1': return '';
    case 'F2': return '';
    case 'F3': return '';
    case 'G': return '';
    case 'H': return '';
    case 'H1': return '';
    case 'H2': return '';
    case 'H3': return '';
    case 'H4': return '';
    case 'I': return '';
    case 'I1': return '';
    case 'I2': return '';     
  } // end switch
}

function convertId2Tag(id) {
  switch (id) {
    case '1': return 'ALL';
    case '2': return 'ALL';
    case '8': return 'ALL';
    case '15': return 'ALL';
    case '33': return 'ALL';
    case '16': return 'ALL';
    case '25': return 'ALL';
    case '20': return 'ALL';
    case '201': return 'ALL';
    case '207': return 'ALL';
    case '202': return 'ALL';
    case '95': return 'ALL';
    case '175': return 'E';
    case '185': return 'E1';
    case '189': return 'E2';
    case '197': return 'E3';
    case '176': return 'E4';
    case '114': return 'ALL';
    case '122': return 'ALL';
    case '139': return 'ALL';
    case '115': return 'ALL';
    case '217': return 'ALL';
    case '41': return 'ALL';
    case '59': return 'ALL';
    case '65': return 'ALL';
    case '78': return 'ALL';
    case '42': return 'ALL';
    case '146': return 'ALL';
    case '155': return 'ALL';
    case '147': return 'ALL';
  } // end switch
}



var iSelectedTabIndex = 0;
var bEventFromMap = false;
var m_Regions = ['E3', 'E2', 'E1', 'E4'];
var m_RegionsNotSelectable = ['I1', 'I2', 'H4', 'H3', 'H1', 'F2', 'F1', 'H2', 'F3', 'G', 'D', 'C1', 'C2', 'B3', 'B2', 'B4', 'B1', 'A1', 'A2'];

function updateMap(p_Region, bShowAllRegion) {
  var nI;
  // if ALL, then selects all overlays
  if (p_Region == 'ALL') {
    // iterates through all (sub)regions and selects them
  	for (nI = 0; nI < m_Regions.length; nI++) {
  		document.getElementById(m_Regions[nI]).style.visibility = 'hidden';
    }
    // hide regions that user cannot select
    for (nI = 0; nI < m_RegionsNotSelectable.length; nI++) {
    	document.getElementById(m_RegionsNotSelectable[nI]).style.visibility = 'visible';
    }

    return p_Region;
  }
  // if (sub)region is clicked
  else {
    var nCountUnselectedOther = 0;

    if (bShowAllRegion == undefined) {
      // determines whether any other (sub)region, which is not in this group, is selected
      // if so, then all respective region should be selected
      // if not, only the clicked (sub)region should be selected
      for (nI = 0; nI < m_Regions.length; nI++) {
        nCountUnselectedOther++;

        if (document.getElementById(m_Regions[nI]).style.visibility == 'hidden') {
          if (p_Region[0] != m_Regions[nI][0]) {
            bShowAllRegion = true;
            break;
          }
        }
        else {
          nCountUnselectedOther--;
        }
      }
      // if all other (sub)regions are visible, then selects all region
      if (nCountUnselectedOther == 0) {
        bShowAllRegion = true;
      }
    } // end if bShowAllReion == undefined

    // iterates through all (sub)regions and takes appropriate action
    for (nI = 0; nI < m_Regions.length; nI++) {
      if (p_Region[0] != m_Regions[nI][0]) {
        document.getElementById(m_Regions[nI]).style.visibility = 'visible';
      }
      else {
        if (bShowAllRegion || p_Region == m_Regions[nI]) {
          document.getElementById(m_Regions[nI]).style.visibility = 'hidden';
        }
        else {
          document.getElementById(m_Regions[nI]).style.visibility = 'visible';
        }
      }
    }

    if (bShowAllRegion) {
      bEventFromMap = true;
      updateCombo(p_Region[0]);
      return p_Region[0];
    }
    else {
      bEventFromMap = true;
      updateCombo(p_Region);
      return p_Region;
    }
  }
}
