//-------------------------------------------------------------------
// isDigit(value)
//   Returns true if value is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num)
{
  if (num.length > 1) { return false; }
  var string = "1234567890";
  if (string.indexOf(num) != -1) { return true; }
  return false;
}

function selectRange(textbox, iStart, iEnd)
{
  if (textbox.createTextRange)
  {
    var oRange = textbox.createTextRange();
    oRange.moveStart("character", iStart);
    oRange.moveEnd("character", iEnd - textbox.value.length);
    oRange.select();
  } else if (textbox.setSelectionRange)
  {
    textbox.setSelectionRange(iStart, iEnd);
  }

  textbox.focus();
}

function get_selection(the_id)
{
  var e = document.getElementById(the_id);

  //Mozilla and DOM 3.0
  if ('selectionStart' in e)
  {
    var l = e.selectionEnd - e.selectionStart;
    return { start: e.selectionStart, end: e.selectionEnd, length: l, text: e.value.substr(e.selectionStart, l) };
  }
  //IE
  else if (document.selection)
  {
    e.focus();
    var r = document.selection.createRange();
    var tr = e.createTextRange();
    var tr2 = tr.duplicate();
    tr2.moveToBookmark(r.getBookmark());
    tr.setEndPoint('EndToStart', tr2);
    if (r == null || tr == null) return { start: e.value.length, end: e.value.length, length: 0, text: '' };
    var text_part = r.text.replace(/[\r\n]/g, '.'); //for some reason IE doesn't always count the \n and \r in the length
    var text_whole = e.value.replace(/[\r\n]/g, '.');
    var the_start = text_whole.indexOf(text_part, tr.text.length);
    return { start: the_start, end: the_start + text_part.length, length: text_part.length, text: r.text };
  }
  //Browser not supported
  else return { start: e.value.length, end: e.value.length, length: 0, text: '' };
}
function getSelectionStart(node)
{
  if (node.selectionStart)
  {
    return node.selectionStart;
  } else if (!document.selection)
  {
    return 0;
  }
  var range = document.selection.createRange();
  // We'll use this as a 'dummy'
  var stored_range = range.duplicate();
  // Select all text
  stored_range.moveToElementText(node);
  // Now move 'dummy' end point to end point of original range
  stored_range.setEndPoint('EndToEnd', range);
  return stored_range.text.length - range.text.length;
}
function PageLoad()
{
  FindOutChange();
  HandleOptionChanged();
}

function FindOutChange()
{
  var pnlFindOut = e("pnlFindOut");
  var lstFindOut = e("lstFindOut");
  var lblReqtxtFindOut = e("lblReqtxtFindOut");
  if (lstFindOut == null)
    return;
  if (lstFindOut.value == "Other")
  {
    pnlFindOut.style.visibility = "visible";
    pnlFindOut.style.height = "100%";
    lblReqtxtFindOut.style.visibility = "visible";
  }
  else
  {
    pnlFindOut.style.visibility = "hidden";
    pnlFindOut.style.height = "0px";
    lblReqtxtFindOut.style.visibility = "hidden";
  }


}

function e(id)
{
  return document.getElementById(id);
}

function validateFoundOut()
{
  var lblFindOut = e("lblFindOut");
  var lblReqFindOut = e("lblReqFindOut");
  var lblReqtxtFindOut = e("lblReqtxtFindOut")
  var dd = e("lstFindOut");
  var txt = e("txtFindOut");
  if (dd.value == "Select")
  {
    lblFindOut.style.color = "Red";
    lblReqFindOut.style.color = "Red";
    return false;
  }
  else if (dd.value == "Other")
  {
    if (txt.value == "")
    {
      lblFindOut.style.color = "Red";
      lblReqtxtFindOut.style.color = "Red";
      return false;
    }
  }
  return true;
}

function validateTextBox(id)
{
  var label = e("lbl" + id);
  var textbox = e("txt" + id);
  var asterisk = e("lblReq" + id);

  if (textbox.value == "")
  {
    label.style.color = "Red";
    asterisk.style.color = "Red";
    return false;
  }
  else
  {
    return true;
  }
}

function validatePhone()
{
  var label = e("lblPhone");
  var textbox = e("txtPhone");
  var asterisk = e("lblReqPhone");

  var text = new String(textbox.value);
  if (text.length != 14)
    return false;
  return true;
}

function validateState()
{
  var label = e("lblState");
  var state = e("lstState");
  var asterisk = e("lblReqState");

  if (state.value == "Select")
  {
    label.style.color = "Red";
    asterisk.style.color = "Red";
    return false;
  }
  else
  {
    return true;
  }
}

function validateAddress()
{
  var ret = true;
  // Address
  if (!validateTextBox("Address"))
    ret = false;
  // City
  if (!validateTextBox("City"))
    ret = false;
  // State
  if (!validateState())
    ret = false;
  // Zip
  if (!validateTextBox("Zip"))
    ret = false;
  return ret;
}

function validateEmail(goRed)
{
  var txt = e("txtEmail");
  var text = new String(txt.value);
  if (text.indexOf("@", 0) == -1)
  {
    if (goRed)
    {
      e("lblEmail").style.color = "Red";
      e("lblReqEmail").style.color = "Red";
    }
    return false;
  }
  e("lblEmail").style.color = "";
  e("lblReqEmail").style.color = "";
  return true;
}

function Validate()
{
  var ret = true;

  var rbCat = e("rbCat");
  var rbComment = e("rbComment");
  var rbEmail = e("rbEmail");

  resetColor();
  if (e("chkOffers").checked)
  {
    validateEmail(true);
  }

  if (rbCat.checked)
  {
    e("rbCatLabel").style.color = "";
    e("rbCommentLabel").style.color = "";
    e("rbEmailLabel").style.color = "";

    if (!validateTextBox("NameFirst"))
      ret = false;

    if (!validateTextBox("NameLast"))
      ret = false;

    if (!validateAddress())
      ret = false;

    if (!validateFoundOut())
      ret = false;

    return ret;
  }
  else if (rbComment.checked)
  {
    e("rbCatLabel").style.color = "";
    e("rbCommentLabel").style.color = "";
    e("rbEmailLabel").style.color = "";

    if (!validateTextBox("NameFirst"))
      ret = false;

    if (!validateTextBox("NameLast"))
      ret = false;

    if (!validateEmail(true))
      ret = false;

    if (!validateTextBox("Comments"))
      ret = false;

    if (!validateFoundOut())
      ret = false;

    return ret;
  }
  else if (rbEmail.checked)
  {

    e("rbCatLabel").style.color = "";
    e("rbCommentLabel").style.color = "";
    e("rbEmailLabel").style.color = "";

    if (!validateTextBox("NameFirst"))
      ret = false;

    if (!validateTextBox("NameLast"))
      ret = false;

    if (!validateEmail(true))
      ret = false;

    return ret;
  }
  else
  {
    e("rbCatLabel").style.color = "red";
    e("rbCommentLabel").style.color = "red";
    e("rbEmailLabel").style.color = "red";

    return false;
  }
}

function HandleOptionChanged()
{
  var rbCat = e("rbCat");
  var rbComment = e("rbComment");
  var rbEmail = e("rbEmail")
  resetColor();
  if (rbCat == null)
    return;
  if (rbCat.checked)
  {
    e("lblReqNameFirst").style.visibility = "visible";
    e("lblReqNameLast").style.visibility = "visible";
    e("lblReqAddress").style.visibility = "visible";
    e("lblReqCity").style.visibility = "visible";
    e("lblReqState").style.visibility = "visible";
    e("lblReqZip").style.visibility = "visible";
    e("lblReqFindOut").style.visibility = "visible";
    e("lblReqPhone").style.visibility = "hidden";
    e("lblReqEmail").style.visibility = "hidden";
    e("lblReqComments").style.visibility = "hidden";
    e("rowOffers").style.visibility = "visible";
  }
  else if (rbComment.checked)
  {
    e("lblReqNameFirst").style.visibility = "visible";
    e("lblReqNameLast").style.visibility = "visible";
    e("lblReqFindOut").style.visibility = "visible";
    e("lblReqEmail").style.visibility = "visible";
    e("lblReqComments").style.visibility = "visible";
    e("lblReqAddress").style.visibility = "hidden";
    e("lblReqCity").style.visibility = "hidden";
    e("lblReqState").style.visibility = "hidden";
    e("lblReqZip").style.visibility = "hidden";
    e("lblReqPhone").style.visibility = "hidden";
    e("rowOffers").style.visibility = "visible";
  }
  else if (rbEmail.checked)
  {

    e("lblReqNameFirst").style.visibility = "visible";
    e("lblReqNameLast").style.visibility = "visible";
    e("lblReqEmail").style.visibility = "visible";
    e("lblReqFindOut").style.visibility = "hidden";
    e("lblReqComments").style.visibility = "hidden";
    e("lblReqAddress").style.visibility = "hidden";
    e("lblReqCity").style.visibility = "hidden";
    e("lblReqState").style.visibility = "hidden";
    e("lblReqZip").style.visibility = "hidden";
    e("lblReqPhone").style.visibility = "hidden";
    e("rowOffers").style.visibility = "hidden";
  }

  if (e("chkOffers").checked && e("chkOffers").style.visibility != "hidden")
  {
    e("lblReqEmail").style.visibility = "visible";

  }
}

function ErrorVisible(yes)
{
  var msgFillin = e("msgFillin");
  if (yes)
  {
    msgFillin.style.width = "auto";
    msgFillin.style.visibility = "visible";
  }
  else
  {
    msgFillin.style.width = "0px";
    msgFillin.style.visibility = "hidden";
  }
}


function SendClick()
{
  var validated = Validate();
  if (validated)
  {
    ErrorVisible(false);
    __doPostBack("btnSend", "");
  }
  else
  {
    ErrorVisible(true);
  }
}

var changing = false;

function txtPhoneChanged()
{
  if (changing)
    return;

  changing = true;
  var txtPhone = e("txtPhone");

  var value = txtPhone.value;
  var newValue = "";
  var i = 0;
  if (value.length > 0)
  {
    for (; i < value.length; i++)
    {
      var c = value.charAt(i);
      if (newValue.length == 3)
        newValue = newValue + "-";
      if (newValue.length == 7)
        newValue = newValue + "-";
      if (isDigit(c))
        newValue = newValue + c;
    }
    var selectionStart = get_selection("txtPhone").start;
    if (selectionStart == value.length)
      selectionStart = -1;
    if (txtPhone.value != newValue)
    {
      txtPhone.value = newValue;
      if (selectionStart != -1)
        selectRange(txtPhone, selectionStart, selectionStart);
    }
  }
  changing = false;
}

function resetColor()
{
  ErrorVisible(false);
  if (e("rbCatLabel") == null)
    return;
  e("rbCatLabel").style.color = "";
  e("rbCommentLabel").style.color = "";
  e("rbEmailLabel").style.color = "";
  e("lblNameFirst").style.color = "";
  e("lblReqNameFirst").style.color = "";
  e("lblNameLast").style.color = "";
  e("lblReqNameLast").style.color = "";
  e("lblAddress").style.color = "";
  e("lblReqAddress").style.color = "";
  e("lblCity").style.color = "";
  e("lblReqCity").style.color = "";
  e("lblState").style.color = "";
  e("lblReqState").style.color = "";
  e("lblZip").style.color = "";
  e("lblReqZip").style.color = "";
  e("lblPhone").style.color = "";
  e("lblReqPhone").style.color = "";
  e("lblEmail").style.color = "";
  e("lblReqEmail").style.color = "";
  e("lblFindOut").style.color = "";
  e("lblReqFindOut").style.color = "";
  e("lblReqtxtFindOut").style.color = "";
  e("lblComments").style.color = "";
  e("lblReqComments").style.color = "";
}
