var xmlHttp;
var edit_space;
var id_s;
var id_f;
var st_f;
var pc_f;

function ajaxCall(page,str,space) {
  edit_space = space;
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null) {
    alert ("Browser does not support HTTP Request");
    return;
  }

  var url=page;
  url=url+"?q="+str;
  url=url+"&sid="+Math.random();
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function stateChanged() {
  if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
    document.getElementById(edit_space).innerHTML=xmlHttp.responseText
  }
}

function GetXmlHttpObject() {
  var xmlHttp=null;
  try {
    xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
  }
  catch (e) {
    //Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

function smartSuggest(a,b,c,d,e) {
  xmlHttp=GetXmlHttpObject();
  // sanity check..
  if (xmlHttp==null) {
    alert ("Browser does not support HTTP Request");
    return;
  }

  id_s = a; // id of field to be set (e.g. city_name)
  id_f = b; // where to display results (e.g. edit_space)
  st_f = c; // optional 2nd field to populate (state)
  pc_f = e; // optional 3rd field to populate (postal code)

  var url;
  // configure url..
  if (d) {
    url = d;
  } else {
    url = '/inc/lib/smartSuggest.php';
  }

  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
    var str = escape(document.getElementById(id_s).value);
    url+='?str='+str+"&sid="+Math.random();

    xmlHttp.onreadystatechange = function(){
      if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
        document.getElementById(id_f).innerHTML = '';
        var s = xmlHttp.responseText.split("\n");
        // clear field if no match..
        if (s.length == 1) {
          document.getElementById(id_f).style.display = 'none';
          return;
        }

        var exitStrategy = '<div class="suggest_not" onmouseovere=:javascript:strOver(this);" onclick="javascript:exitSearch();">Close</div>';
        document.getElementById(id_f).innerHTML = exitStrategy;

        for(i=0; i < s.length - 1; i++) {
          var suggest = '<div onmouseover="javascript:suggestOver(this);" ';
          suggest += 'onmouseout="javascript:suggestOut(this);" ';
          suggest += 'onclick="javascript:setSearch(this.innerHTML);" ';
          suggest += 'class="suggest_link">' + s[i] + '</div>';
          document.getElementById(id_f).innerHTML += suggest;
          document.getElementById(id_f).style.display = '';
        }
      }
    }
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
  }
}

//Mouse over function
function suggestOver(div_value) {
	div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value) {
	div_value.className = 'suggest_link';
}

function exitSearch() {
  document.getElementById(id_f).style.display = 'none';
}

function strOver(div_value) {
  div_value.className = 'suggest_not_over';
}
//Click function
function setSearch(f_value) {
	var s = f_value.split(",");
	document.getElementById(id_s).value = s[0];
	if (st_f) { document.getElementById(st_f).value = s[1]; }
	if (pc_f) { document.getElementById(pc_f).value = s[2]; }
	document.getElementById(id_f).innerHTML = '';
	document.getElementById(id_f).style.display = 'none';
}

// a cleaner validation script...EG 03/27/2000
function checkForm(form) {
  var errors ="";
  var msg;
  var i;
  var j = 1;

  var fields = new Array;
  // Company Data..
  fields['customer_name'] = 'Customer Name';
  fields['customer_id'] = 'Customer Name';
  fields['fed_ein_nbr'] = 'FED EIN(Tax ID)';
  fields['pri_contact'] = 'Primary Contact';
  fields['business_type_cd'] = 'Business Type';
  fields['credit_limit'] = 'Credit Limit';
  fields['pay_terms'] = 'Terms of Payment';
  fields['business_phone'] = 'Business Phone';
  fields['business_fax'] = 'Business Fax';
  fields['contact_name'] = 'Contact Name';

  fields['first_name'] = 'First Name';
  fields['last_name'] = 'Last Name';
  fields['lead_email'] = 'Email';
  fields['lead_type_cd'] = 'Topic of Interest';
  fields['company_name'] = 'Company Name';

  fields['senders_name'] = 'Name';
  fields['senders_email'] = 'Email';
  fields['category_type_cd'] = 'Subject';
  fields['message_text'] = 'Message';

  // Carrier Data..
  fields['carrier_name'] = 'Carrier Name';
  fields['cargo_ins_limit'] = 'Cargo Insurance Amount';
  fields['ins_exp_date'] = 'Insurance Expiration Date';
  fields['safety_rating'] = 'Safety Rating';
  fields['equip_id'] = 'Equipment ID';
  fields['driver_id'] = 'Driver ID';
  fields['co_id'] = 'Company';
  fields['trip_nbr'] = 'Trip Number';
  fields['pu_date'] = 'Pickup Date';
  fields['del_date'] = 'Delivery Date';
  fields['pu_city'] = 'Pickup City';
  fields['pu_state'] = 'Pickup State';
  fields['del_city'] = 'Delivery City';
  fields['del_state'] = 'Delivery State';
  fields['mt_miles'] = 'Empty Miles';
  fields['ld_miles'] = 'Loaded Miles';
  fields['addtl_stops'] = 'Additional Stops';
  fields['ld_rate'] = 'Load Rate';

  //load data..
  fields['agent_id'] = 'Agent Name';
  fields['agent_name'] = 'Agent_name';
  fields['load_size_cd'] = 'Load Size';
  fields['equip_type_cd'] = 'Equipment Type';
  fields['revenue'] = 'Revenue';
  fields['origin_city'] = 'Origin City';
  fields['origin_state_cd'] = 'Origin State';
  fields['dest_city'] = 'Destination City';
  fields['dest_state_cd'] = 'Destination State';
  fields['stop_count'] = 'Number of Stops';
  fields['loaded_miles'] = 'Loaded Miles';
  fields['available_date'] = 'Available Date';
  fields['weight'] = 'Net Weight';
  fields['active_sw'] = 'Active Switch';
  fields['pro_number'] = 'Pro Number';

  fields['trip_sheet_id'] = 'Trip Number';
  fields['expense_type_cd'] = 'Expense Type';
  fields['vendor_id'] = 'Vendor Name';
  fields['exp_city_name'] = 'Expense City Name';
  fields['state_cd'] = 'State';
  fields['expense_date'] = 'Expense Date';
  fields['unit_count'] = 'Gallons / Item Count';
  fields['expense_amount'] = 'Expense Amount';

  fields['maint_svc_date'] = 'Maintenance Service Date';
  fields['vendor_name'] = 'Vendor Name';
  fields['category_cd'] = 'Expense Category';

  fields['shipper_name'] = 'Shipper Name';

  fields['location_type_cd'] = 'Location Type';
  fields['directions'] = 'Directions';

  fields['mc_nbr'] = 'MC Number';
  fields['usdot_nbr'] = 'US DOT Number'
  fields['co_type_cd'] = 'Company Type';
  fields['co_name'] = 'Company Name';
  fields['pri_contact_email'] = 'Email';
  fields['co_website'] = 'Company Website';
  fields['pymnt_terms'] = 'Payment Terms';
  fields['co_notes'] = 'Notes';
  fields['address_line_one'] = 'Address Line One';
  fields['city_name'] = 'City';
  fields['postal_cd'] = 'Postal Code';
  fields['country_cd'] = 'Country';
  fields['address_line_one_b'] = 'Bill-To Address Line One';
  fields['address_line_two_b'] = 'Bill-To Address Line Two';
  fields['city_name_b'] = 'Bill-To Address City';
  fields['state_cd_b'] = 'Bill-To Address State';
  fields['postal_cd_b'] = 'Bill-To Address Postal Code';
  fields['country_cd_b'] = 'Bill-To Address Country';
  fields['phone_nbr_b'] = 'Business Phone';
  fields['phone_nbr_m'] = 'Mobile Phone';
  fields['phone_nbr_f'] = 'Business Fax';
  fields['phone_nbr_o'] = 'Other Phone';
  fields['phone_nbr'] = 'Phone/Fax Number';
  fields['phone_type_cd'] = 'Phone Type';
  fields['address_type_cd'] = 'Address Type';


  fields['trip_sheet_id'] = 'Trip Nbr';
  fields['shipper_id'] = 'Shipper/Receiver';
  fields['activity_cd'] = 'Activity Code';
  fields['order_nbr'] = 'PO/Order Nbr';
  fields['shipping_ref_nbr'] = 'Shipping Ref# or Pickup Nbr';
  fields['bol_nbr'] = 'BOL#';
  fields['product'] = 'Product description or NMFC classification';
  fields['weight'] = 'Net Product Weight';
  fields['piece_count'] = 'Piece Count';
  fields['temperature_control_cd'] = 'Temperature Control Code';

  fields['shipper_id1'] = 'Shipper/Receiver';
  fields['activity_cd1'] = 'Activity Code';


  msg = "\n"
    + "The following required fields are missing or incorrect:\n"
    + "_________________________________________\n";

  var field_id;

  for (i = 0; i < form.elements.length; i++ ) {
    try { field_id = form.elements[i].name; }
    catch (e) { alert(e); }

    if (form.elements[i].value == "" && form.elements[i].name.indexOf('_opt') == -1 &&
    ( form.elements[i].type == "text" ||
      form.elements[i].type == "password" ||
      form.elements[i].type == "textarea" ||
      form.elements[i].type == "select-one" ) ) {

      document.getElementById(field_id).className = 'data_error';
      document.getElementById(field_id).parentNode.parentNode.className = 'data_error_row';

      if (j < 10) { j = "  " + j }
      errors += "\n\t"
        + j + ".   " + fields[form.elements[i].name];
        j++;

    } else {
      try {
        field_id = form.elements[i].id;
        document.getElementById(field_id).className = 'data_ok';
        document.getElementById(field_id).parentNode.parentNode.className = 'data_ok_row';
      }
      catch (e) { }
    }
  }

  if (errors) {
    msg += errors;
    alert(msg);
    return false;
  }

  if (!errors) {
    return true;
  }
  return false;
}

function resetForm(obj) {
  if (confirm("Choose OK to clear ALL form values")) {
    for (var i = 0; i < obj.elements.length; i++ ) {
      if (obj.elements[i].type == "text" || obj.elements[i].type == "password" || obj.elements[i].type == "textarea" || obj.elements[i].type == "select-one" ) {
        try {
          field_id = obj.elements[i].id;
          document.getElementById(field_id).className = 'data_ok';
          document.getElementById(field_id).parentNode.parentNode.className = 'data_ok_row';
        }
        catch (e) { }
      }
    }
    return true;
  }
  return false;
}

if (parent != self) {
  top.location=self.document.location;
}

// start...
var ns = window.navigator.appName == "Netscape";
var ie = window.navigator.appName == "Microsoft Internet Explorer";

function toUpper(obj) {
  if (obj.length == 0) { return obj; }

  var pattern = /(\w)(\w*)/;
  var a = obj.split(/\s+/g);

  for (i = 0 ; i < a.length ; i ++ ) {
    var parts = a[i].match(pattern);
    var firstLetter = parts[1].toUpperCase();
    var restOfWord = parts[2].toLowerCase();

    // save and move on..
    a[i] = firstLetter + restOfWord;
  }
  obj = a.join(' ');
  return obj;
}

function formatPhone(obj) {
  var org_str = obj;
  obj = obj.replace(/\D/g,'');
  obj = obj.replace(/^1/,'');
  if (obj.length == 10) {
    var str = "(";
    var area_code = obj.substring(0,3);
    str += area_code + ") ";

    var prefix = obj.substring(3,6);
    str += prefix + "-";

    var num = obj.substring(6,10);
    str += num;

    return str;
  } else if (obj.length > 10) {
    var str = "(";
    var area_code = obj.substring(0,3);
    str += area_code + ") ";

    var prefix = obj.substring(3,6);
    str += prefix + "-";

    var num = obj.substring(6,10);
    str += num;

    var ext = obj.substring(10,obj.length);
    str += ' Ext. ' + ext;
    return str;
  } else {
    return org_str;
  }
}

function formatNbr(obj) {
  obj = obj.replace(/\D/g,'');
  return (obj);
}

function formatEIN(obj) {
  var org_str = obj;
  obj = obj.replace(/\D/g,'');
  if (obj.length == 9) {
    var str = obj.substring(0,2);
    str += "-";
    str += obj.substring(2,9);
    return str;
  } else {
    alert('EIN/SSN must be nine(9) digits');
    return org_str;
  }
}

function copyText() {
  if (document.getElementById('same_as_physical_sw').checked == true) {
    document.getElementById('address_line_one_b').value = document.getElementById('address_line_one').value;
    document.getElementById('address_line_two_b_opt').value = document.getElementById('address_line_two_opt').value;
    document.getElementById('city_name_b').value = document.getElementById('city_name').value;
    document.getElementById('state_cd_b').value = document.getElementById('state_cd').value;
    document.getElementById('postal_cd_b').value = document.getElementById('postal_cd').value;
    document.getElementById('country_cd_b').value = document.getElementById('country_cd').value;
  }
}

function showDetail(s) {
  document.getElementById('pos_'+s).style.display = 'none';
  document.getElementById('neg_'+s).style.display = '';
  document.getElementById(s).style.display = '';
}
function hideDetail(s) {
  document.getElementById('pos_'+s).style.display = '';
  document.getElementById('neg_'+s).style.display = 'none';
  document.getElementById(s).style.display = 'none';
}
function hideObj(s) { document.getElementById(s).style.display = 'none'; }
