//*** init page and nav ***//

window.addEvent('domready', function() {
  add_nav_events();

  // set up part finder
  try {
    finder = new DataFinder('pickers', 'results', 'count', PartResults);
    get_part_data();
  } catch (ex) {} // ignore
});


function add_nav_events() {
  var blocks = $$('#leftnav .nav_block');
  blocks.each(function(block) {
    var button = block.getElement('.main_button');
    var menu = block.getElement('.menu');
    block.addEvent('mouseover', function() {
      this.addClass('hover');
      button.addClass('nav_hover');
      menu.style.display = "block";
    });
    block.addEvent('mouseout', function() {
      this.removeClass('hover');
      button.removeClass('nav_hover');
      menu.style.display = "none";
    });
  });
}

//*** END init page and nav ***//

//*** part lookup ***//

var finder;
function get_part_data() {
  // get product data from db
  var req = new XHR({
    method: 'get',
    onSuccess: function(res) {
      try {
        var newData = eval(res);
        finder.init(newData);
        view_all();
      } catch (ex) {
      }
    }
  });
  try {
    req.send(BASE_DIR + "getPartData.php"); 
  } catch (ex) {
  }
}

//*** END part lookup ***//

//*** Popup functions ***//

function open_popup(content) {
  var req = new XHR({
    method: 'get',
    onSuccess: function(res) {
      try {
        $('popup_content').innerHTML = res;
        $E('body').addClass("grayout");
        window.scrollTo(0,0);
      } catch (ex) {
      }
    }
  });
  try {
    req.send(content, ""); 
  } catch (ex) {
  }
}

function open_cad_download(content, download_url) {
  if ((LL_get_cookie('product_form') == 'yes')) {
    document.location = download_url; // shouldn't get here. PHP should see cookie and echo cad link instead of open_cad_download()
  } else {
    open_popup(content + "?download_url=" + escape(download_url));
  }
}

function close_popup() {
  $('popup_content').innerHTML = '';
  $E('body').removeClass("grayout");
}

//*** END Popup functions ***//

//*** From submissions/validation ***//

function cancel_validation(formObj) {
  formObj.onsubmit = function () { return true; };
}

function submit_if_valid(formObj, errorClass, required) {
  // reset errors
  var errorMsg = $E('.'+errorClass, formObj);
  errorMsg.innerHTML = '';
  $ES('.field_label', formObj).each(function(item) {
    item.removeClass('error');
  });

  var valid = true;
  required.each(function(item) {
    var field = $E('input[name='+item+']', formObj);
    if (!field) {
      field = $E('select[name='+item+']', formObj);
    }
    if (!field) {
      field = $E('textarea[name='+item+']', formObj);
    }
    if (field.tagName == "INPUT") {
      if ((field.type == 'text' && field.value == '')
           || (field.type == 'checkbox' && !field.checked)) {
        valid = false;
        $E('.field_label', field.getParent()).addClass('error');
      } else if (field.type == 'radio') {
         //!field.checked
      }
    } else if (field.tagName == "SELECT") {
      if (field.options[field.selectedIndex].value == '') {
        valid = false;
        $E('.field_label', field.getParent()).addClass('error');
      }
    } else if (field.tagName == "TEXTAREA") {
      if (field.value == '') {
        valid = false;
        $E('.field_label', field.getParent()).addClass('error');
      }
    }

  });

  if (valid) {
    try {
      LL_set_cookie('first_name', formObj.first.value);
    } catch (ex) {
    }
    return true;
  } else {
    errorMsg.innerHTML = 'Please enter the missing information and submit again.';
    return false;
  }
}

function submit_and_remember_me(formObj, errorClass, required) {
  if (submit_if_valid(formObj, errorClass, required)) {
    var rem_fields = ['first', 'last', 'company', 'title', 'email', 'phone', 'address1', 'address2', 'city', 'state', 'zip', 'country']; // text inputs only
    var user_data = {};
    rem_fields.each(function(fld) {
      try {
      user_data[fld] = formObj[fld].value;
      } catch (ex) {} // field not in form
    });
    LL_set_cookie('user_data', Json.toString(user_data));
    return true;
  } else {
    return false;
  }
}

function submit_cad_download(formObj, errorClass, required) {
  if (submit_and_remember_me(formObj, errorClass, required)) {
    LL_set_cookie('product_form', 'yes');
    return true;
  } else {
    return false;
  }
}

function submit_check_load_rpm(formObj, errorClass, required) {
  if (submit_if_valid(formObj, errorClass, required)) {
    var errors = [];

    // check load
    var maxMetricLoad = formObj.metric_max_load.value;
    var maxStndLoad = formObj.stnd_max_load.value;
    var units = "newtons";
    $ES('input[name=units]', formObj).each(function(radio) {
      if (radio.checked) {
        units = radio.value;
      }
    });
    var maxLoad = (units == "newtons") ? maxMetricLoad : maxStndLoad;

    if (parseFloat(formObj.load.value) > parseFloat(maxLoad)) {
      var field = $E('input[name=load]', formObj);
      $E('.field_label', field.getParent()).addClass('error');
      errors.push("Load exceeds maximum recommended value of " + maxMetricLoad + "N (" + maxStndLoad + " lbf)");
    }

    // check rpm
    var maxSpeed = formObj.max_rpm.value;
    if (parseFloat(formObj.rpm.value) > parseFloat(maxSpeed)) {
      var field = $E('input[name=rpm]', formObj);
      $E('.field_label', field.getParent()).addClass('error');
      errors.push("Speed exceeds maximum recommended value of " + maxSpeed + " rpm");
    }

    if (errors.length > 0) {
      $E('.'+errorClass, formObj).innerHTML = errors.join('<br>');
      return false; //return true; // if it should be a WARNING instead of an ERROR
    } else {
      return true;
    }
  } else {
    return false;
  }
}

//*** END From submissions/validation ***//

//*** Spec table functions ***//

function show_part_buttons(part) {
  children = $('hidden_links').getChildren();
  $(part+'_links_row').injectAfter($(part+'_row'));
  $(part+'_cell').rowSpan = 2;
}

function hide_part_buttons(part) {
  $(part+'_links_row').injectInside($('hidden_links'));
  $(part+'_cell').rowSpan = 1;
}

function show_part_links(links) {
  $$('.part_spec_links').each(function(item) {
    item.style.display = "none";
  });
  $(links).style.display = "block";
}

function hide_part_links(ob) {
  ob.style.display = "none";
}

function find_part(ob) {
  var partno = ob.p.value;
  if (partno != 'Part Number' && partno != '') {
    return true;
  }
  return false;
}

//*** END Spec table functions ***//

//***  Case Studies and Solutions Nav ***//

function load_prev(form_name, sel_id) {
  var formObj = document.forms[form_name];
  var menu = $(sel_id);
  var selected = menu.selectedIndex;
  if (selected > 0) {
    menu.selectedIndex--;
  } else {
    menu.selectedIndex = menu.options.length-1;
  }
  formObj.submit();
}

function load_next(form_name, sel_id) {
  var formObj = document.forms[form_name];
  var menu = $(sel_id);
  var selected = menu.selectedIndex;
  if (selected < menu.options.length-1) {
    menu.selectedIndex++;
  } else {
    menu.selectedIndex = 0;
  }
  formObj.submit();
}

//***  END Case Studies and Solutions Nav ***//


//*** Wear/Life functions ***//

function show_wear_time_field(type) {
  if (type == "calc_wear") {
    $('wear_wrap').style.display = "none";
    $('wear_field').value = "";
    $('time_wrap').style.display = "block";
  } else { // calc time
    $('wear_wrap').style.display = "block";
    $('time_wrap').style.display = "none";
    $('time_field').value = "";
  }
}
//*** END Wear/Life functions ***//
