// Global variables
var lock = false;
var selected_countries = new Array();
var wait = 800;

var tc_objects = new Array();
var tc_prefixes = new Array();
var tariffs_adv = new Array();
var tc_timeout_ref;
var tc_changed = true;
var tc_panel_disabled = false;

var kw_objects = new Array();
var kw_prefixes = new Array();
var keywords_basic = new Array();
var keywords_adv = new Array();
var second_keywords_adv = new Array();
var kw_loading_indicators = new Array();
var kw_timeout_ref;
var kw_changed = true;
var kw_panel_disabled = false;

var submit_btn = 'nextButton';
var confirm_msg = "By switching to 'Basic' mode all changes made in the 'Advanced' mode will be lost.\n" +
  "Are you sure?";


// General
function init_table_row(table_id, row_id, position) {
  var table = $(table_id);
  if (!table || $(row_id)) {
    return;
  }
  var pos = position;
  if (!position) {
    pos = table.rows.length;
  }
  var row = table.insertRow(pos);
  if (row) {
    row.id = row_id;
  }
}

function fix_table_rows(table_id, classNames) {
  var table = $(table_id);
  if (!table) {
    return;
  }
  var rows = table.rows;
  var i = 1;
  while (i < rows.length) {
    for (var j = 0; j < classNames.length; j++) {
      if (rows[i]) {
        rows[i].className = classNames[j];
      }
      i++;
    }
  }
}

function build_key_value_pairs_for_request(index_value_pairs, prefix) {
  param_value_pairs = new Array();
  for (var i = 0; i < index_value_pairs.length; i++) {
    if (index_value_pairs[i]) {
      param_value_pairs.push(encodeURIComponent(prefix + i) + '=' + encodeURIComponent(index_value_pairs[i] + ''));
    }
  }
  return param_value_pairs;
}

function get_values(input_name) {
  var values = new Array();
  var inputs = document.getElementsByName(input_name);
  for (var i = 0; i < inputs.length; i++) {
    try {
      values.push(parseInt(inputs[i].value));
    } catch (err) {
    }
  }
  return values;
}


// Tariffclasses
function confirm_tc_basic() {
  if (tc_changed) {
    var conf = confirm(confirm_msg);
    if (conf) {
      Element.hide(tc_objects['adv_panel']); 
      Element.show(tc_objects['basic_panel']); 
      set_tariffs_basic(0);
    }
  } else {
    Element.hide(tc_objects['adv_panel']); 
    Element.show(tc_objects['basic_panel']); 
  }
}

function init_tc_panel_properties() {
  var basicBtn = tc_objects['basicButton'];
  var advBtn = tc_objects['advButton'];

  basicBtn.onclick = function() {confirm_tc_basic(confirm_msg)};
  advBtn.onclick = function() {
    Element.show(tc_objects['adv_panel']);
    Element.hide(tc_objects['basic_panel']);
  }
}

function tc_panel_props_on_load() {
  var basicBtn = tc_objects['basicButton'];
  var advBtn = tc_objects['advButton'];

  basicBtn.onclick = function() {};
  basicBtn.style.cursor = "";
  basicBtn.className = "btn-gray";

  advBtn.onclick = function() {};
  advBtn.style.cursor = "";
  advBtn.className = "btn-gray";  
}

function tc_panel_props_on_success() {
  var basicBtn = tc_objects['basicButton'];
  var advBtn = tc_objects['advButton'];

  basicBtn.onclick = function() {confirm_tc_basic(confirm_msg)};
  basicBtn.style.cursor = "pointer";
  basicBtn.className = "btn-orange";

  advBtn.onclick = function() {
    Element.show(tc_objects['adv_panel']);
    Element.hide(tc_objects['basic_panel']);
  };
  advBtn.style.cursor = "pointer";
  advBtn.className = "btn-orange";  
}

function tc_basic_table_props_on_load() {
  Element.show(tc_prefixes['indicator']);
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var tc_row_id_basic = tc_prefixes['basic_row'] + country;
    var tc_row_id_adv = tc_prefixes['adv_row'] + country;
    try {
      Element.show(tc_prefixes['indicator'] + country);
      $(tc_row_id_basic + '_tc_enduser_cost').style.color = "#575757";
      $(tc_row_id_basic + '_tc_enduser_cost_preferred').style.color = "#575757";
      $(tc_row_id_basic + '_shortcodes').innerHTML = '';
      $(tc_row_id_basic + '_revenue_share').innerHTML = '';
      $(tc_prefixes['tariffclass'] + country).disabled = true;
      $(tc_row_id_adv + '_tc_enduser_cost_preferred').innerHTML = '&nbsp;';
      $(tc_row_id_adv + '_shortcodes').innerHTML = '';
      $(tc_row_id_adv + '_revenue_share').innerHTML = '';
    } catch(err) {
    }
  }
}

function tc_adv_table_props_on_load(selected_tariffclasses) {
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var tariffclass = selected_tariffclasses[country];
    if (tariffclass) {
      try {
        Element.show(tc_prefixes['indicator'] + country);
        var tc_row_id_adv = tc_prefixes['adv_row'] + country;
	$(tc_row_id_adv + '_tc_enduser_cost_preferred').innerHTML = '&nbsp;';
	$(tc_row_id_adv + '_shortcodes').innerHTML = '';
	$(tc_row_id_adv + '_revenue_share').innerHTML = '';
      } catch(err) {
      }
    }
  }
}

function tc_basic_table_props_on_success() {
  Element.hide(tc_prefixes['indicator']);
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var tc_row_id_basic = tc_prefixes['basic_row'] + country;
    try {
      Element.hide(tc_prefixes['indicator'] + country);
      $(tc_row_id_basic + '_tc_enduser_cost').style.color = "#000000";
      $(tc_row_id_basic + '_tc_enduser_cost_preferred').style.color = "#000000";
      $(tc_prefixes['tariffclass'] + country).disabled = false;
    } catch(err) {
    }
  }
}

function tc_adv_table_props_on_success(selected_tariffclasses) {
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    if (selected_tariffclasses[country]) {
      try {
        Element.hide(tc_prefixes['indicator'] + country);
      } catch(err) {
      }
    }
  }
}

function tc_basic_configuration_on_load() {
  tc_panel_props_on_load();
  tc_basic_table_props_on_load();
}

function tc_adv_configuration_on_load(selected_tariffclasses) {
  tc_panel_props_on_load();
  tc_adv_table_props_on_load(selected_tariffclasses);
}

function tc_basic_configuration_on_success() {
  tc_panel_props_on_success();
  tc_basic_table_props_on_success();
}

function tc_adv_configuration_on_success(selected_tariffclasses) {
  tc_panel_props_on_success();
  tc_adv_table_props_on_success(selected_tariffclasses);
}


// Keywords
function confirm_kw_basic() {
  if (kw_changed) {
    var conf = confirm(confirm_msg);
    if (conf) {
      Element.hide(kw_objects['adv_panel']); 
      Element.show(kw_objects['basic_panel']); 
      set_keywords_basic(0);
    }
  } else {
    Element.hide(kw_objects['adv_panel']); 
    Element.show(kw_objects['basic_panel']); 
  }
}

function get_basic_keywords() {
  var basic_keywords = new Array();
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    try {
      var kw_id = $(kw_prefixes['keyword'] + country).value;
      if (kw_id.length > 0) {
        basic_keywords[country] = parseInt(kw_id);
      }
    } catch (err) {
    }
  }
  return basic_keywords;
}

function init_kw_panel_properties() {
  var basicBtn = kw_objects['basicButton'];
  var advBtn = kw_objects['advButton'];

  basicBtn.onclick = function() {confirm_kw_basic()};
  advBtn.onclick = function() {
    Element.show(kw_objects['adv_panel']);
    Element.hide(kw_objects['basic_panel']);
  }
}

function kw_panel_props_on_load() {
  var basicBtn = kw_objects['basicButton'];
  var advBtn = kw_objects['advButton'];

  basicBtn.onclick = function() {};
  basicBtn.style.cursor = "";
  basicBtn.className = "btn-gray";

  advBtn.onclick = function() {};
  advBtn.style.cursor = "";
  advBtn.className = "btn-gray";
}

function kw_panel_props_on_success() {
  var basicBtn = kw_objects['basicButton'];
  var advBtn = kw_objects['advButton'];

  basicBtn.onclick = function() {confirm_kw_basic()};
  basicBtn.style.cursor = "pointer";
  basicBtn.className = "btn-orange";

  advBtn.onclick = function() {
    Element.show(kw_objects['adv_panel']);
    Element.hide(kw_objects['basic_panel']);
  };
  advBtn.style.cursor = "pointer";
  advBtn.className = "btn-orange";
}

function kw_basic_table_props_on_load() {
  Element.show(kw_prefixes['indicator']);
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var kw_row_id_basic = kw_prefixes['basic_row'] + country;
    var kw_row_id_adv = kw_prefixes['adv_row'] + country;
    try {
      Element.show(kw_prefixes['indicator'] + country);
      $(kw_row_id_basic + '_keyword').style.color = "#575757";
      $(kw_row_id_basic + '_second_keyword').style.color = "#575757";
      $(kw_row_id_basic + '_status').innerHTML = '';
      $(kw_prefixes['keyword_adv'] + country).disabled = true;
      $(kw_prefixes['second_keyword'] + country).disabled = true;
      $(kw_row_id_adv + '_status').innerHTML = '';
    } catch(err) {
    }
  }
}

function kw_adv_table_props_on_load(selected_keywords) {
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var keyword = selected_keywords[country];
    if (keyword) {
      var kw_row_id_adv = kw_prefixes['adv_row'] + country;
      try {
        Element.show(kw_prefixes['indicator'] + country);
	$(kw_row_id_adv + '_status').innerHTML = '';
      } catch(err) {
      }
    }
  }
}

function kw_basic_table_props_on_success() {
  Element.hide(kw_prefixes['indicator']);
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var kw_row_id_basic = kw_prefixes['basic_row'] + country;
    try {
      Element.hide(kw_prefixes['indicator'] + country);
      $(kw_row_id_basic + '_keyword').style.color = "#000000";
      $(kw_row_id_basic + '_second_keyword').style.color = "#000000";
      $(kw_prefixes['keyword_adv'] + country).disabled = false;
      $(kw_prefixes['second_keyword'] + country).disabled = false;
    } catch(err) {
    }
  }
}

function kw_adv_table_props_on_success(selected_keywords) {
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    if (selected_keywords[country]) {
      try {
        Element.hide(kw_prefixes['indicator'] + country);
      } catch(err) {
      }
    }
  }
}

function kw_basic_configuration_on_load() {
  kw_panel_props_on_load();
  kw_basic_table_props_on_load();
}

function kw_adv_configuration_on_load(selected_keywords) {
  kw_panel_props_on_load();
  kw_adv_table_props_on_load(selected_keywords);
}

function kw_basic_configuration_on_success() {
  kw_panel_props_on_success();
  kw_basic_table_props_on_success();
}

function kw_adv_configuration_on_success(selected_keywords) {
  kw_panel_props_on_success();
  kw_adv_table_props_on_success(selected_keywords);
}

function disable_tc_panel(selected_keywords) {
  tc_panel_props_on_load();
  $(tc_objects['group_select']).disabled = true;
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    if (selected_keywords && selected_keywords[country] || !selected_keywords) {
      var tc_row_id_basic = tc_prefixes['basic_row'] + country;
      var tc_row_id_adv = tc_prefixes['adv_row'] + country;
      try {
        $(tc_row_id_basic + '_tc_enduser_cost').style.color = "#575757";
        $(tc_row_id_basic + '_tc_enduser_cost_preferred').style.color = "#575757";
        $(tc_row_id_basic + '_shortcodes').style.color = "#575757";
        $(tc_row_id_basic + '_revenue_share').style.color = "#575757";
        $(tc_prefixes['tariffclass'] + country).disabled = true;
        $(tc_row_id_adv + '_tc_enduser_cost_preferred').style.color = "#575757";
        $(tc_row_id_adv + '_shortcodes').style.color = "#575757";
        $(tc_row_id_adv + '_revenue_share').style.color = "#575757";
      } catch(err) {
      }
    }
  }
}

function enable_tc_panel() {
  tc_panel_props_on_success();
  $(tc_objects['group_select']).disabled = false;
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var tc_row_id_basic = tc_prefixes['basic_row'] + country;
    var tc_row_id_adv = tc_prefixes['adv_row'] + country;
    try {
      $(tc_row_id_basic + '_tc_enduser_cost').style.color = "#000000";
      $(tc_row_id_basic + '_tc_enduser_cost_preferred').style.color = "#000000";
      $(tc_row_id_basic + '_shortcodes').style.color = "#000000";
      $(tc_row_id_basic + '_revenue_share').style.color = "#000000";
      $(tc_prefixes['tariffclass'] + country).disabled = false;
      $(tc_row_id_adv + '_tc_enduser_cost_preferred').style.color = "#000000";
      $(tc_row_id_adv + '_shortcodes').style.color = "#000000";
      $(tc_row_id_adv + '_revenue_share').style.color = "#000000";
    } catch(err) {
    }
  }
}

function disable_kw_panel(selected_tariffclasses) {
  kw_panel_props_on_load();
  $(kw_objects['second_keyword_input']).disabled = true;
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var kw_row_id_basic = kw_prefixes['basic_row'] + country;
    var kw_row_id_adv = kw_prefixes['adv_row'] + country;
    if (selected_tariffclasses && selected_tariffclasses[country] || !selected_tariffclasses) {
      try {
        $(kw_row_id_basic + '_status').style.color = "#575757";
        $(kw_row_id_adv + '_status').style.color = "#575757";
      } catch(err) {
      }
    }
    try {
      $(kw_row_id_basic + '_keyword').style.color = "#575757";
      $(kw_row_id_basic + '_second_keyword').style.color = "#575757";
      $(kw_prefixes['keyword_adv'] + country).disabled = true;
      $(kw_prefixes['second_keyword'] + country).disabled = true;
    } catch(err) {
    }
  }
}

function enable_kw_panel() {
  kw_panel_props_on_success();
  $(kw_objects['second_keyword_input']).disabled = false;
  for (var i = 0; i < selected_countries.length; i++) {
    var country = selected_countries[i];
    var kw_row_id_basic = kw_prefixes['basic_row'] + country;
    var kw_row_id_adv = kw_prefixes['adv_row'] + country;
    try {
      $(kw_row_id_basic + '_keyword').style.color = "#000000";
      $(kw_row_id_basic + '_second_keyword').style.color = "#000000";
      $(kw_prefixes['keyword_adv'] + country).disabled = false;
      $(kw_prefixes['second_keyword'] + country).disabled = false;
      $(kw_row_id_basic + '_status').style.color = "#000000";
      $(kw_row_id_adv + '_status').style.color = "#000000";
    } catch(err) {
    }
  }
}
