// careers.js for Priority Management
// functionality for careers page
// code by CN

/**********************************************************************
   Office url data
 *********************************************************************/

var officeUrls = [
  { countryName: 'Australia',
    regions: [
      { name: 'Australia Capital Territory',
        subRegions: [
          { name: 'Canberra', 
            offices: [ 
              { name: 'Priority Management - Canbera',
                url: '/canterbury'
              }
            ]
          }
        ]
      },
      { name: 'New South Wales',
        subRegions: [
          { name: 'Sydney',
            offices: [ 
              { name: 'Priority Management - Sydney',
                url: '/nsw'
              }
            ]
          }
        ]
      },
      { 
        name: 'Queensland',
        subRegions: [
          { name: 'Brisbane',
            offices: [ 
              { name: 'Priority Management - Brisbane',
                url: '/brisbane'
              }
            ]
          }
        ]
      },
      { 
        name: 'South Australia',
        subRegions: [
          { name: 'Adelaide',
            offices: [ 
              { name: 'Priority Management - Adelaide',
                url: '/PriorityAdelaide'
              }
            ]
          }
        ]
      },
      { 
        name: 'Victoria',
        subRegions: [
          { name: 'Melbourne',
            offices: [ 
              { name: 'Priority Management - Melbourne',
                url: '/melbourne'
              }
            ]
          }
        ]
      },
      { 
        name: 'Western Australia',
        subRegions: [
          { name: 'Perth',
            offices: [ 
              { name: 'Priority Management - Perth',
                url: '/perth'
              }
            ]
          }
        ]
      }
    ]
  },
  { countryName: 'Belgium',
    regions: [
      { name: 'Antwerp',
        offices: [ 
          { name: 'Priority Makers',
            url: '/antwerp'
          }
        ]
      },
      { name: 'Brussels',
        offices: [ 
          { name: 'Vision Management s.p.r.l.',
            url: '/vision'
          }
        ]
      },
      { name: 'East Flanders ',
        offices: [ 
          { name: 'Heldihub b.v.b.a.',
            url: '/h.meert'
          }
        ]
      },
      { name: 'Wallonie',
        offices: [ 
          { name: 'Priority Wallonie Consulting s.p.r.l.',
            url: '/wallonie'
          }
        ]
      }
    ]
  },
  { countryName: 'Canada',
    regions: [
      { name: 'Alberta',
        subRegions: [
          { name: 'Calgary',
            offices: [ 
              { name: 'Priority Management - Calgary',
                url: '/calgary'
              }
            ]
          },
          { name: 'Edmonton',
            offices: [ 
              { name: 'Priority Management - Edmonton',
                url: '/edmonton'
              }
            ]
          },
          { name: 'Red Deer',
            offices: [ 
              { name: 'Performance Strategies Inc.',
                url: '/kostenuk'
              }
            ]
          }
        ]
      },
      { name: 'British Columbia',
        subRegions: [
          { name: 'Kelowna',
            offices: [ 
              { name: 'Priority Management - Kelowna',
                url: '/interiorbc'
              }
            ]
          },
          { name: 'Vancouver',
            offices: [ 
              { name: 'Pacific Learning Group',
                url: '/plg'
              },
              { name: 'Priority Consulting Group',
                url: '/pcg'
              }
            ]
          }
        ]
      },
      { name: 'Manitoba',
        subRegions: [
          { name: 'Winnipeg',
            offices: [ 
              { name: 'Performance Strategies Inc.',
                url: '/winnipeg'
              }
            ]
          }
        ]
      },
      { name: 'New Brunswick',
        subRegions: [
          { name: 'Moncton',
            offices: [ 
              { name: 'Priority Management - Moncton',
                url: '/Atlantica'
              }
            ]
          }
        ]
      },
      { name: 'Nova Scotia',
        subRegions: [
          { name: 'Halifax',
            offices: [ 
              { name: 'Priority Management - Halifax',
                url: '/Atlantica'
              }
            ]
          }
        ]
      },
      { name: 'Ontario',
        subRegions: [
          { name: 'Northern Ontario',
            offices: [ 
              { name: 'Chuck Jacobs and Associates',
                url: '/jacobs'
              }
            ]
          },
          { name: 'Ottawa',
            offices: [ 
              { name: 'Priority Management - Ottawa',
                url: '/ottawa'
              }
            ]
          },
          { name: 'St. Catharines',
            offices: [ 
              { name: 'C.D.Henderson and Associates, Inc.',
                url: '/cdh'
              }
            ]
          },
          { name: 'Toronto',
            offices: [ 
              { name: 'Andrew Sherwood and Associates Ltd.',
                url: '/sherwood'
              },
              { name: 'Priority Management - Ottawa',
                url: '/toronto2'
              }
            ]
          }
        ]
      },
      { name: 'Quebec',
        subRegions: [
          { name: 'Montreal',
            offices: [ 
              { name: 'Serre - De Looz, Inc.',
                url: '/maximanagement'
              },
              { name: 'Priority Management Montreal',
                url: '/maximanagement'
              }
            ]
          }
        ]
      },
      { name: 'Saskatchewan',
        subRegions: [
          { name: 'Regina',
            offices: [ 
              { name: 'Fontanie Associates Consulting Services, Inc.',
                url: '/fontanie'
              }
            ]
          },
          { name: 'Saskatoon',
            offices: [ 
              { name: 'B.A.Cook and Associates',
                url: '/bcook'
              }
            ]
          }
        ]
      }
    ]
  },
  { countryName: 'Ireland',
    regions: [
      { name: 'Ireland',
        offices: [ 
          { name: 'Priority Management - Ireland',
            url: '/ireland'
          }
        ]
      }
    ]
  },
  { countryName: 'Netherlands',
    regions: [
      { name: 'Netherlands',
        offices: [ 
          { name: 'Priority Management Randstad',
            url: '/Randstad'
          }
        ]
      }
    ]
  },
  { countryName: 'New Zealand',
    regions: [
      { name: 'Auckland',
        offices: [ 
          { name: 'Priority Management - Auckland',
            url: '/auckland'
          }
        ]
      },
      { name: 'Wellington',
        offices: [ 
          { name: 'Priority Management - Wellington',
            url: '/wellington'
          }
        ]
      }
    ]
  },
  { countryName: 'Philippines',
    regions: [
      { name: 'Philippines',
        offices: [ 
          { name: 'Priority Management Philippines, Inc.',
            url: '/philippines'
          }
        ]
      }
    ]
  },
  { countryName: 'Singapore',
    regions: [
      { name: 'Singapore',
        offices: [ 
          { name: 'Priority Management Associates (Singapore) Pte Ltd',
            url: '/singapore'
          }
        ]
      }
    ]
  },
  { countryName: 'Switzerland',
    regions: [
      { name: 'Zurich',
        offices: [ 
          { name: 'Priority Management Associates / Skills and Tools',
            url: '/switzerland'
          }
        ]
      }
    ]
  },
  { countryName: 'United Arab Emirates',
    regions: [
      { name: 'United Arab Emirates',
        offices: [ 
          { name: 'Priority Management Middle East',
            url: '/MiddleEast'
          }
        ]
      }
    ]
  },
  { countryName: 'United Kingdom',
    regions: [
      { name: 'England',
        subRegions: [
          { name: 'Central',
            offices: [ 
              { name: 'Priority Management Central Ltd',
                url: '/PMCentral'
              }
            ]
          },
          { name: 'Fleet',
            offices: [ 
              { name: 'Priority Management - Fleet',
                url: '/fleet'
              }
            ]
          },
          { name: 'London',
            offices: [ 
              { name: 'Priority Management - London',
                url: '/london'
              }
            ]
          },
          { name: 'Midlands',
            offices: [ 
              { name: 'Priority Management - Nottingham',
                url: '/nottingham'
              }
            ]
          },
          { name: 'North',
            offices: [ 
              { name: 'Priority Management North',
                url: '/thenorth'
              }
            ]
          },
          { name: 'South East',
            offices: [ 
              { name: 'Priority Management - South East',
                url: '/southeast'
              }
            ]
          },
          { name: 'Surrey',
            offices: [ 
              { name: 'Priority Management - Surrey',
                url: '/maybury'
              }
            ]
          }
        ]
      },
      { name: 'Scotland',
        subRegions: [
          { name: 'Edinburgh', 
            offices: [ 
              { name: 'Priority Management (Scotland)',
                url: '/scotland'
              }
            ]
          },          
          { name: 'Glasgow',
            offices: [ 
              { name: 'Priority Management (Glasgow) Ltd.',
                url: '/glasgow'
              }
            ]
          }
        ]
      }
    ]
  },
  { countryName: 'United States',
    regions: [
      { name: 'Alabama',
        subRegions: [
          { name: 'Alabama',
            offices: [ 
              { name: 'The Gulas Group',
                url: '/plus'
              }
            ]
          }
        ]
      },
      { name: 'California',
        subRegions: [
          { name: 'Bakersfield',
            offices: [ 
              { name: 'Productivity Development Group',
                url: '/pdg'
              }
            ]
          },
          { name: 'San Francisco',
            offices: [ 
              { name: 'Priority Management - San Francisco',
                url: '/schmick'
              }
            ]
          },
          { name: 'San Clemente',
            offices: [ 
              { name: 'Dan Songer Consulting',
                url: '/san_clemente'
              }
            ]
          },
          { name: 'Ventura',
            offices: [ 
              { name: 'Leslie Hammett and Associates',
                url: '/hammett'
              }
            ]
          }
        ]
      },
      { name: 'Colorado',
        subRegions: [
          { name: 'Denver',
            offices: [ 
              { name: 'Heavers & Associates',
                url: '/heavers'
              }
            ]
          }
        ]
      },
      { name: 'Florida',
        subRegions: [
          { name: 'Orlando',
            offices: [ 
              { name: 'Constructive Management, Inc.',
                url: '/jgroom'
              }
            ]
          },
          { name: 'Sarasota',
            offices: [ 
              { name: 'Priority Management - Sarasota',
                url: '/na'
              }
            ]
          },
          { name: 'Tampa',
            offices: [ 
              { name: 'LML and Associates',
                url: '/lml'
              }
            ]
          }
        ]
      },
      { name: 'Georgia',
        subRegions: [
          { name: 'Atlanta',
            offices: [ 
              { name: 'Christopher Management Consultants',
                url: '/cmc'
              }
            ]
          }
        ]
      },
      { name: 'Iowa',
        subRegions: [
          { name: 'Cedar Rapids',
            offices: [ 
              { name: 'Priority Management - Iowa',
                url: '/rsmith'
              }
            ]
          }
        ]
      },
      { name: 'Kansas',
        subRegions: [
          { name: 'Kansas City',
            offices: [ 
              { name: 'Priority Management - Krakow and Co.',
                url: '/kc'
              }
            ]
          }
        ]
      },
      { name: 'Kentucky',
        subRegions: [
          { name: 'Louisville',
            offices: [ 
              { name: 'Priority Management - Louisville',
                url: '/pmky'
              }
            ]
          }
        ]
      },
      { name: 'Massachusetts',
        subRegions: [
          { name: 'Boston',
            offices: [ 
              { name: 'Boston Training, Inc.',
                url: '/bti'
              }
            ]
          }
        ]
      },
      { name: 'Missori',
        subRegions: [
          { name: 'Springfield',
            offices: [ 
              { name: 'The Priority Alliance, LLC',
                url: '/tpa'
              }
            ]
          }
        ]
      },
      { name: 'New Jersey',
        subRegions: [
          { name: 'Newark',
            offices: [ 
              { name: 'Executive Perspectives, Inc.',
                url: '/epi'
              }
            ]
          }
        ]
      },
      { name: 'New York',
        subRegions: [
          { name: 'Albany',
            offices: [ 
              { name: 'The Priority Group',
                url: '/albany'
              }
            ]
          }
        ]
      },
      { name: 'North Carolina',
        subRegions: [
          { name: 'Charlotte',
            offices: [ 
              { name: 'Priority Management - North Carolina',
                url: '/nc'
              }
            ]
          }
        ]
      },
      { name: 'Ohio',
        subRegions: [
          { name: 'Columbus',
            offices: [ 
              { name: 'Creative Management Systems',
                url: '/Cms'
              },
              { name: 'Productivity Resources ',
                url: '/col'
              }
            ]
          }
        ]
      },
      { name: 'Oklahoma',
        subRegions: [
          { name: 'Oklahoma City',
            offices: [ 
              { name: 'The Priority Alliance, LLC',
                url: '/ok'
              }
            ]
          }
        ]
      },
      { name: 'Pennsylvania',
        subRegions: [
          { name: 'Altoona',
            offices: [ 
              { name: 'Priority Management - Altoona',
                url: '/seltzer'
              }
            ]
          },
          { name: 'Lancaster',
            offices: [ 
              { name: 'Eby and Associates',
                url: '/eba'
              }
            ]
          },
          { name: 'Philadelphia',
            offices: [ 
              { name: 'Priority Management - Philadelphia',
                url: '/Philadelphia'
              }
            ]
          }
        ]
      },
      { name: 'South Carolina',
        subRegions: [
          { name: 'Columbia',
            offices: [ 
              { name: 'Al Walker and Associates',
                url: '/ok'
              }
            ]
          }
        ]
      },
      { name: 'Tennessee',
        subRegions: [
          { name: 'Knoxville',
            offices: [ 
              { name: 'Priority Management of East Tennessee',
                url: '/knoxville'
              }
            ]
          }
        ]
      },
      { name: 'Texas',
        subRegions: [
          { name: 'Dallas',
            offices: [ 
              { name: 'John McMichael and Associates',
                url: '/mcmichael'
              }
            ]
          },
          { name: 'McAllen',
            offices: [ 
              { name: 'Priority Training Corporation',
                url: '/julian'
              }
            ]
          },
          { name: 'South West',
            offices: [ 
              { name: 'Priority Management South West',
                url: '/sa'
              }
            ]
          }
        ]
      },
      { name: 'Virginia',
        subRegions: [
          { name: 'Richmond',
            offices: [ 
              { name: 'Pritchard and Associates',
                url: '/pritchard'
              }
            ]
          }
        ]
      },
      { name: 'Washington DC',
        subRegions: [
          { name: 'Washington',
            offices: [ 
              { name: 'Barrile and Associates, Ltd.',
                url: '/dc'
              }
            ]
          }
        ]
      },
      { name: 'Wisconsin',
        subRegions: [
          { name: 'Milwaukee',
            offices: [ 
              { name: 'P.C.Lyons and Associates',
                url: '/Lyons'
              }
            ]
          }
        ]
      }
    ]
  }
];
  

/**********************************************************************
   Page initialization
 *********************************************************************/

function careersPageInit() {
  var countrySelect = document.getElementById('country-select');
  var regionSelect = document.getElementById('region-select');
  var subRegionSelect = document.getElementById('subregion-select');
  var submitButton = document.getElementById('office-search-submit');
  
  for (var countryIndex = officeUrls.length - 1; countryIndex >= 0; countryIndex--) {
    var countryName = officeUrls[countryIndex].countryName;
    countrySelect.options[countryIndex + 1] = new Option(countryName, countryName);
  }
  
  countrySelect.onchange = function() {
      var currentCountryName = this.options[this.selectedIndex].value;
      if (currentCountryName != '') {
        
        // allow form submission
        submitButton.disabled = false;
        
        // remove all current options from the region dropdown
        regionSelect.options.length = 1;
        regionSelect.disabled = false;
        
        // remove all current options from the sub-region dropdown
        subRegionSelect.options.length = 1;
        subRegionSelect.disabled = true;
        
        // populate region dropdown with options that correspond to current country
        var regions = getCountryByName(currentCountryName).regions;
        for (var regionIndex = regions.length - 1; regionIndex >= 0; regionIndex--) {
          var region = regions[regionIndex];
          if (region.officeUrl) {
            regionSelect.options[regionIndex + 1] = new Option(region.name, region.officeUrl);
          }
          else {
            regionSelect.options[regionIndex + 1] = new Option(region.name, region.name);
          }
        }
      }
      else {
        submitButton.disabled = true;
      }
    };	
    
  regionSelect.onchange = function() {
      var currentCountryName = countrySelect.options[countrySelect.selectedIndex].value;
      var currentRegionName = this.options[this.selectedIndex].value;
      if (currentRegionName != '') {
        
        // if currentRegion has subRegions, populate subRegion dropdown
        var currentRegion = getRegionByName(currentCountryName, currentRegionName);
        if (currentRegion.subRegions) {

          // remove all current options from the sub-region dropdown
          subRegionSelect.options.length = 1;
          subRegionSelect.disabled = false;
          
          // populate subregion dropdown with options that correspond to current country and region
          var subRegions = currentRegion.subRegions;
          for (var subRegionIndex = subRegions.length - 1; subRegionIndex >= 0; subRegionIndex--) {
            var subRegion = subRegions[subRegionIndex];
            subRegionSelect.options[subRegionIndex + 1] = new Option(subRegion.name, subRegion.name);
          }
        }
      }
    };	
    
  submitButton.onclick = function() {
      var currentCountryName = countrySelect.options[countrySelect.selectedIndex].value;
      var currentRegionName = regionSelect.options[regionSelect.selectedIndex].value;
      var currentSubRegionName = subRegionSelect.options[subRegionSelect.selectedIndex].value;
      
      var offices = [];
      
      if (currentCountryName && currentRegionName && currentSubRegionName) {
        offices = getSubRegionByName(currentCountryName, currentRegionName, currentSubRegionName).offices;
      }
      else if (currentCountryName && currentRegionName) {
        offices = getOfficesByRegion(getRegionByName(currentCountryName, currentRegionName));
      }
      else if (currentCountryName) {
        var regions = getCountryByName(currentCountryName).regions;
        for (var regionIndex = regions.length - 1; regionIndex >= 0; regionIndex--) {
          offices.merge(getOfficesByRegion(regions[regionIndex]));
        }
      }
      
      offices.sort(function(a, b) {return a.name - b.name});
      
      var officeHtml = '';
      for (var officeIndex = offices.length - 1; officeIndex >= 0; officeIndex--) {
        var office = offices[officeIndex];
        officeHtml += '<dl class="office-list">';
        officeHtml += '<dt>Associate Name:<dt><dd>' + office.name + '</dd>';
        /**
        officeHtml += '<dt>Associate Contact:<dt><dd>' + office.contact + '</dd>';
        officeHtml += '<dt>Phone:<dt><dd>' + office.phone1 + '</dd>';
        officeHtml += '<dt>Email:<dt>';
        officeHtml += '<dd><a href="mailto:' + office.email1 + '">' + office.email1 + '</a>';
        if (isDefined(office.email2)) {
          officeHtml += '<br /><a href="mailto:' + office.email2 + '">' + office.email2 + '</a>';
        }
        officeHtml += '</dd>';
        **/
        officeHtml += '<dt>Website:<dt><dd><a href="http://www.prioritymanagement.com' + office.url + '">http://www.prioritymanagement.com' + office.url + '</a>';
        officeHtml += '</dl>';
      }
      document.getElementById('office-search-results').innerHTML = officeHtml;
      
      return false;
    };
}

function getCountryByName(countryName) {
  for (var countryIndex = officeUrls.length - 1; countryIndex >= 0; countryIndex--) {
    if (officeUrls[countryIndex].countryName == countryName) {
      return officeUrls[countryIndex];
    }
  }
}

function getRegionByName(countryName, regionName) {
  var regions = getCountryByName(countryName).regions;
  for (var regionIndex = regions.length - 1; regionIndex >= 0; regionIndex--) {
    if (regions[regionIndex].name == regionName) {
      return regions[regionIndex];
    }
  }
}

function getSubRegionByName(countryName, regionName, subRegionName) {
  var subRegions = getRegionByName(countryName, regionName).subRegions;
  for (var subRegionIndex = subRegions.length - 1; subRegionIndex >= 0; subRegionIndex--) {
    if (subRegions[subRegionIndex].name == subRegionName) {
      return subRegions[subRegionIndex];
    }
  }
}

function getOfficesByRegion(region) {
  var offices = [];
  if (region.subRegions) {
    var subRegions = region.subRegions;
    for (var subRegionIndex = subRegions.length - 1; subRegionIndex >= 0; subRegionIndex--) {
      var subRegion = subRegions[subRegionIndex];
      offices.merge(subRegion.offices);
    }
  }
  else if (region.offices) {
    offices = region.offices;
  }
  return offices;
}


/**********************************************************************
   Utilities
 *********************************************************************/

Array.prototype.merge = function(array2) {
  for (var index2 = array2.length - 1; index2 >= 0; index2--) {
    this.push(array2[index2]);
  }
}


window.addEvent(window, 'load', careersPageInit);
