﻿var selectedNetworkPartnerId = 0;
var selectedCountryId = 86; // US default
var selectedStateProvinceId = 0;
var siteRoot = "";
var isProcessing = false;
var page = 1;
var totalPages = 1;
var tags = "";
var filter = "";
var hostersOnly = false;

function SetupNetworkPartners(obj) {
  selectedNetworkPartnerId = $(obj).val();
}

function SubmitHoster(obj) {
  selectedNetworkPartnerId = $(obj).attr("id").substring(2);
  $("#selectedNetworkPartnerId").val(selectedNetworkPartnerId);
  document.location = document.location.href + "?npid=" + selectedNetworkPartnerId;
}

function SetupPartnerDirectory() {
  $(".ddlNetworkPartnerCountry").change(function() { ddlNetworkPartnerCountry_Change(); });
  $(".ddlNetworkPartnerStateProvince").change(function() { RunQuery(); });
  $("input[name='CountryType']").click(function() { RunQuery(); });

  SetupDropDowns();
}

function SetupDropDowns() {

  if ($("#ddlCountry").length > 0) {
    selectedCountryId = $("#ddlCountry").val();
  }
//  if ($("#ddlStateProvince").length > 0) {
//    selectedStateProvinceId = $("#ddlStateProvince").val();
//  }
  
  $(".ddlNetworkPartnerCountry").val(selectedCountryId);

  //Now get state/province
  GetNetworkPartnerStateProvince();

  RunQuery();
}


function GetNetworkPartnerStateProvince() {
  ClearNetworkPartnerStateProvince();
  if ($(".ddlNetworkPartnerCountry").length > 0 && $(".ddlNetworkPartnerCountry").val() > 0) {        
    var countryId = $(".ddlNetworkPartnerCountry").val();
    $.ajax({
      type: "POST",
      url: siteRoot + "Service/GlobalWebService.asmx/GetStateProvince",
      data: "{countryId:" + countryId + ",otherFields:2}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      cache: true,
      success: GetNetworkPartnerStateProvince_Success,
      failure: function(msg) { alert(msg); }
    });
    $(".ddlNetworkPartnerStateProvince").attr("disabled", "");
  } else {
    $(".ddlNetworkPartnerStateProvince").attr("disabled", "disabled");
  }
}


function ClearNetworkPartnerStateProvince() {
  var ddl = $(".ddlNetworkPartnerStateProvince");
  ddl.empty();
  ddl.attr("disabled", false);
}


function GetNetworkPartnerStateProvince_Success(response) {
  var ddl = $(".ddlNetworkPartnerStateProvince");
  ddl.empty();
  if (response.d.length > 2) {
    $.each(response.d, function(index, stateProvince) {
      ddl[0].options[index] = new Option(stateProvince.Name, stateProvince.StateProvinceId);
    });
    ddl.attr("disabled", false);
  } else {
    ddl.attr("disabled", true);
  } 

  if (selectedStateProvinceId != null) {
    $(".ddlNetworkPartnerStateProvince").val(selectedStateProvinceId);
    selectedStateProvinceId = null;
  }
}

function RunQuery() {
  page = 1;
  filter = "";
  GetNetworkPartners();
  GetNetworkPartnerNames();
} 

function FilterNetworkPartners() {
  page = 1;
  filter = $(".FilterTextBox").val();
  GetNetworkPartners();
  GetNetworkPartnerNames();
}

function ddlNetworkPartnerCountry_Change() {
  GetNetworkPartnerStateProvince();
  RunQuery();
}

function GetNetworkPartners() {
  ShowLoading();
  var countryId = $(".ddlNetworkPartnerCountry").val();
  var stateProvinceId = 0;
  var countryType = $("input[name='CountryType']:checked").val();

  if ($(".ddlNetworkPartnerStateProvince").val() != null) {
    stateProvinceId = $(".ddlNetworkPartnerStateProvince").val();
  }

  $.ajax({
    type: "POST",
    url: siteRoot + "Startup/Content/NetworkPartners.aspx?Dev=false&CountryId=" + countryId + "&StateProvinceId=" + stateProvinceId + "&CountryType=" + countryType + "&Page=" + page + "&Filter=" + filter + "&HostersOnly=" + hostersOnly,
    data: {},
    cache: true,
    success: function(html) { NetworkPartnersLoaded(html); },
    failure: function(msg) { alert(msg); },
    complete: HideLoading
  });
  
}  //GetNetworkPartners

function GetNetworkPartnerNames() {
  var countryId = $(".ddlNetworkPartnerCountry").val();
  var stateProvinceId = 0;
  var countryType = $("input[name='CountryType']:checked").val();

  if ($(".ddlNetworkPartnerStateProvince").val() != null) {
    stateProvinceId = $(".ddlNetworkPartnerStateProvince").val();
  }

  $.ajax({
    type: "POST",
    url: siteRoot + "Startup/Content/NetworkPartnerList.aspx?CountryId=" + countryId + "&StateProvinceId=" + stateProvinceId + "&CountryType=" + countryType + "&Filter=" + filter + "&HostersOnly=" + hostersOnly,
    data: {},
    cache: true,
    success: function(html) { GetTags(html); },
    failure: function(msg) { alert(msg); }
  });

}  

function NetworkPartnersLoaded(html) {
  // np list
  var accordion = $("#content", html).html();
  $("#NetworkPartnersAccordion").html(accordion);
  
  // hide descriptions over 200 chars
  $(".blurb").each(function(i) {
    var text = $(this).html();
    if (text.length > 200) {
      text = text.substring(0, 200) + "<span id='expandLink" + i + "'>...<a href='javascript:showMore(" + i + ")'>" + expandText + "</a></span><span class='hide' id='moreText" + i + "'>" + text.substring(200) + "</span>";
      $(this).html(text);
    }
  });

  UpdateFilter();

  $(".cbNetworkPartners").click(function() { SetupNetworkPartners(this); });
  $(".addHosterButton").click(function() { SubmitHoster(this); });

} //NetworkPartnersLoaded

function GetTags(tagstring) {

  if (tagstring.length > 0 && tagstring.indexOf("|") > 0) {
    // last item is page count
    totalPages = tagstring.substring(tagstring.lastIndexOf("|") + 1);

    if (filter.length == 0) {
      tags = tagstring.substring(0, tagstring.lastIndexOf("|"));
      tags = tags.split("|");
    }
  }
  else {
    tags = "";
    totalPages = 1;
  }
  UpdateFilter();
}

function UpdateFilter() {
  // update page number
  $(".pageNumber").text(page);
  $(".totalPages").text(totalPages);
  $(".FilterTextBox").val(filter);

  // add indicator
  
  // setup autocomplete
  $(".FilterTextBox").unbind().autocomplete(tags, {
    matchContains: true,
    minChars: 1,
    selectFirst: false,
    max: 500,
    scroll: true,
    scrollHeight: 300
  }).keyup(CheckForEnter).keydown(CancelEnter);  //call the filter button when the enter key is clicked
}

function Paging(pageIncrement) {
  PageTo(page + pageIncrement);
}

function PageToLast() {
  PageTo(parseInt(totalPages));
}

function PageTo(pageTo) {
  if (pageTo <= totalPages && pageTo > 0 && page != pageTo) {
    page = pageTo;
    GetNetworkPartners();
  }
  return false;
}

function showMore(id) {
  $("#expandLink" + id).hide();
  $("#moreText" + id).show();
}

function showLess(id) {
  $("#expandLink" + id).show();
  $("#moreText" + id).hide();
}

//check for the enter key
function CheckForEnter(event) {
  if (event.keyCode == 13) {
    $(".SearchButton").click();
    $(".ac_results").hide();
    return false;
  } //if  
} //checkforenter

//check for the enter key
function CancelEnter(event) {
  if (event.keyCode == 13) {
    return false;
  } //if  
}

function ShowLoading(){
  $(".indicator").show();
}

function HideLoading(){
  $(".indicator").fadeOut();
}
      