var emailRegxp = new RegExp(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/);
var zipRegxp = new RegExp(/^\w*$/);
var uszipRegxp = new RegExp( /^\d*$/);
var numRegxp = new RegExp( /^\d*$/);
var count_url = 1;
var count_message = 1;
var count_subcategory = 1;
var display_error = "";

function remove_website_field(dom_element) {
  disp_msg(4, 'show_link', 'hide_link', 'websiteinput');
  if ((document.getElementsByClassName('websiteinput').length) > 1) {
    dom_element.parentNode.removeChild(dom_element);
  }
  return false;
}

function remove_messenger(dom_element) {
  disp_msg(4, 'im_show_link', 'im_hide_link', 'text_message');
  if ((document.getElementsByClassName('text_message').length) > 1) {
    dom_element.parentNode.removeChild(dom_element);
  }
  return false;
}

function remove_number(dom_element) {
  disp_msg(7, 'phone_show_link', 'phone_hide_link', 'num');
  if ((document.getElementsByClassName('num').length) > 1) {
    dom_element.parentNode.removeChild(dom_element);
  }
  return false;
}

function load_subcategory(category_id) {
  var subcategory_boxes=document.getElementsByClassName('subcategory_box');

  for(j = 0; j < subcategory_boxes.length; j++) {
    set_subcategories(subcategory_boxes[j], category_id);
  }
}

function set_subcategories(subcategory_box, category_id) {
  var i;
  for(i = subcategory_box.options.length - 1; i > 0; i--) {
    subcategory_box.remove(i);
  }

  if(category_id != "") {
    for(i = 0; i < category[category_id].length; i++) {
      var optn = document.createElement("OPTION");
      optn.text = category[category_id][i][1];
      optn.value =  category[category_id][i][0];
      subcategory_box.options.add(optn);
    }
  }
}

function remove_subcategory(dom_element){
  disp_msg(4, 'sub_show_link', 'sub_hide_link', 'subcategory');
  if ((document.getElementsByClassName('subcategory_box').length) > 1) {
    dom_element.parentNode.removeChild(dom_element);
  }
  return false;
}

function check_num(e) {
  var key;
  if(window.event)
    key = window.event.keyCode; //IE
  else
    key = e.which; //firefox
  if ((key > 47 && key < 58 ) || (key == 8) || (key == 46) || (key == 0)) {
    return true;
  }
  else {
    return false;
  }
}

function send_focus(focus_element, element_length, e) {
  if(element_length == 3 && check_num(e)) {
    focus_element.value = "";
    focus_element.focus();
  }
}

function check_username_availabilty()
{
  $('username_availability_message').innerHTML = "";
  var username = $('username').value
  if(username.length >= 3 && username.length <= 30) {
      $('username').focus();
      new Ajax.Request( '/profile_addresses/username_availability', {asynchronous:true, evalScripts:true, onComplete:function(request){$('ajax_image1').hide();}, onLoading:function(request){$('ajax_image1').show();}, parameters:'username='+username});
  }
  else {
    $('username').focus();
    $('username_availability_message').innerHTML = "Username should be in the range of 3 to 30 characters";
  }
}

function validation(action)
{
  var success = true;
  switch(action) {
    case "pro_profile" : {
      success = category_validation(success);
      success = subcategory_validation(success);
      success = messenger_validation(success);
      success = check_profile_rate_unit(success);
      break;
    }
    case "provider_basic_info" : {
      success = category_validation(success);
      success = subcategory_validation(success);
      success = messenger_validation(success);
      break;
    }
  }

  if(success == false) {
    $('flash_message').innerHTML = "<div class='orangeborder'><p class='orangetxt'>Please fix the following errors indicated.<br>" + display_error + "</p></div>";
  }

  return success;
}

function category_validation(success){
  var category_box = document.getElementById("category_box");
  if (category_box.value == '') {
    $('error_cat').childNodes[0].className = "listnames2 error";
    success=false;
    window.scrollTo(0, 0);
  }
  else {
    display_error =""
    $('error_cat').childNodes[0].className = "listnames2";
  }

  if (success == false) {
    display_error = "Please select Category <br>";
  }
  return success;
}

function subcategory_validation(success){
  var subcategory_boxes = document.getElementsByClassName("subcategory_box");
  var subcategory_error = document.getElementsByClassName("error_sub");
  for (j = 0; j < subcategory_boxes.length; j++) {
    var subcategory_box = subcategory_boxes[j];
    if (subcategory_box.value == '') {
      subcategory_error[j].childNodes[0].className = "listnames2 error";
      success = false;
      window.scrollTo(0, 0);
    }
    else {
      display_error = ""
      subcategory_error[j].childNodes[0].className = "listnames2";
    }
  }

  if(success == false) {
    display_error += "Please select Subcategory <br>";
  }
  else {
    display_error = "";
  }

  return success;
}

function state_validation(success) {
  var state_box=document.getElementById("profile_state");
  if (state_box.selectedIndex == 0) {
    $('error_state').innerHTML = "<p class='orangetxt'>Choose your state</p>";
    success = false;
    window.scrollTo(0, 0);
  }
  else {
    $('error_state').innerHTML = "";
  }
  return success;
}

function zip_validation(success) {
  var zip = $('profile_zip').value;
  var country = $('profile_country').value;
  if (zip == '') {
    $('error_zip').innerHTML = "<font color=\"red\">Enter zip code</font>";
    success = false;
    window.scrollTo(0,0);
  }
  else {
    $('error_zip').innerHTML = "";
  }

  if((country == "United States" && zip.length != 5) || (country == "United States" && !(uszipRegxp.test(zip))) || (country != "United States" && !(zipRegxp.test(zip)))) {
    $('error_zip').innerHTML = "<font color=\"red\">Invalid Postalcode</font>";
    success = false;
    window.scrollTo(0, 0);
  }
  else {
    $('error_zip').innerHTML = "";
  }
  return success;
}

function messenger_validation(success) {
  var message_fields = document.getElementsByClassName('text_message');
  var message_select = document.getElementsByClassName('select_message');
  var message_screen_error = document.getElementsByClassName('error_msg_screenname');
  var message_messenger_error = document.getElementsByClassName('error_msg_messenger');

  var screenerr = false;
  var msgerr = false;

  for(j = 0; j < message_fields.length; j++) {
    var message_field = message_fields[j];
    var message_box = message_select[j];

    message_screen_error[j].childNodes[0].className="sdeheadrgt";
    message_messenger_error[j].childNodes[0].className="sdehead2";

    if ((message_field.value == "" || message_field == null) && (message_box.selectedIndex != "0")) {
      message_screen_error[j].childNodes[0].className = "sdeheadrgterr";
      success = false;
      screenerr = true;
      window.scrollTo(0, 0);
    }

    if ((message_box.selectedIndex == "0") && (message_field.value != "")) {
      message_messenger_error[j].childNodes[0].className = "sdehead2err";
      success = false;
      msgerr = true;
      window.scrollTo(0, 0);
    }
  }

  if(screenerr == true) {
    display_error += "Please provide screen name <br>";
  }

  if(msgerr == true) {
    display_error += "Please provide messenger name <br>";
  }

  return success;
}

function phonenumber_validation(success) {
  var phone_number = $('phone1').value + $('phone2').value + $('phone3').value;
  if (!(numRegxp.test(phone_number)) || phone_number.length != 10) {
    $('phone_error').childNodes[0].className = "sdehead2err";
    success = false;
    window.scrollTo(0, 0);
  }
  else {
    $('phone_error').childNodes[0].className = "sdehead2";
  }

  return success;
}

function faxnumber_validation(success){
  var fax_number = $('fax1').value + $('fax2').value + $('fax3').value;
  if (!(numRegxp.test(fax_number)) || fax_number.length != 10) {
    $('fax_error').childNodes[0].className = "sdeheadrgterr";
    success = false;
    window.scrollTo(0, 0);
  }
  else {
    $('fax_error').childNodes[0].className = "sdeheadrgt";
  }
  return success;
}

function check_profile_rate_unit(success){
  var rate = $('profile_rate').value;
  var unit = $('profile_unit').value;
  display_error = ""
  $('rate_error').childNodes[0].className = "rgtlistname";
  $('unit_error').childNodes[0].className = "symbol";

  if (rate != "" && unit == "") {
    $('unit_error').childNodes[0].className = "symbol error";
    success = false;
    window.scrollTo(0, 0);
    display_error += "Please provide unit <br>";
  }

  if (rate == "" && unit != "") {
    $('rate_error').childNodes[0].className = "rgtlistname error";
    success = false;
    window.scrollTo(0, 0);
    display_error += "Please provide rate <br>";
  }

  if (success == false) {
    $('flash_message').innerHTML = "<div class='orangeborder'><p class='orangetxt'>Please fix the following errors indicated.<br>" + display_error + "</p></div>"
  }

  return success;
}

function photoupload_validation(success){
  if (document.getElementById('photoupload_uploaded_data').value == '') {
    $('error_image').innerHTML = "<font color=\"red\">Choose an image</font>";
    success = false;
    window.scrollTo(0, 0);
  }
  else {
    $('error_image').innerHTML = " ";
  }

  return success
}

function check_all(checkbox_name) {
  var check_boxes = document.getElementsByClassName(checkbox_name);
  for (i=0; i < check_boxes.length; i++) {
    check_boxes[i].checked = true;
    eval(check_boxes[i].attributes["onclick"].value);
  }
}

function uncheck_all(checkbox_name) {
  var check_boxes = document.getElementsByClassName(checkbox_name);
  for (i = 0; i < check_boxes.length; i++) {
    check_boxes[i].checked = false;
    eval(check_boxes[i].attributes["onclick"].value);
  }
}

function update_username_box(userid, username) {
  if (document.getElementById('list_' + userid).checked == true)
    create_username_box(userid, username);
  else {
    remove_username_box(userid);
  }
}

function create_username_box(userid,username) {
  var listspan = $('list_inputs');
  var list_span = listspan.appendChild(document.createElement('span'));
  list_span.setAttribute('id','user_list_' + userid);
  list_span.appendChild(document.createElement('br'));
  var urldiv = new Element('div');
  urldiv.className = "checkbxpop";
  list_span.appendChild(urldiv);

  var anchortag = urldiv.appendChild(document.createElement('a'));
  anchortag.href = '#';
  anchortag.onclick = function(){return remove_list(this.parentNode.parentNode, userid)}
  anchortag.innerHTML = '<img src="/images/blue_theme/close.jpg" border=0>';

  var e = document.createElement('div');
  e.className = "popname";
  e.innerHTML = username;
  list_span.appendChild(e);
  list_span.appendChild(document.createElement('br'));

  var input_field = document.createElement('input');
  input_field.setAttribute('type', 'hidden');
  input_field.setAttribute('name', 'user[list][]');
  input_field.setAttribute('size', '40');
  input_field.className = 'popname';
  input_field.value = userid;
  list_span.appendChild(input_field);
}

function remove_list(dom_element, userid) {
  dom_element.parentNode.removeChild(dom_element);
  $('list_' + userid).checked = false;
  return false;
}

function remove_username_box(userid){
  if($('user_list_' + userid)) {
    $('user_list_' + userid).remove();
  }
}

function clear_to_address_field() {
  var holder = document.getElementsByClassName('holder');
  var holderChildNodes = holder[0].childNodes;
  var childNodesLength = holderChildNodes.length
  if (childNodesLength > 1) {
    for(i = childNodesLength - 2; i >= 0; i--) {
      holderChildNodes[i].remove();
    }
  }
}

// This function is to move boxes to To-address field from user-name selector box.
function userboxes_to_address_field(user_details, field_name) {
  var holder = document.getElementsByClassName('holder');
  var holderChildNodes = holder[0].childNodes
  user_details.each(function(t) {
    var li = new Element('li', {'class': 'bit-box'});
    li.insert(t[0]);
    var anchor = new Element('a', {
      'href': '#',
      'class': 'closebutton'
    });

    anchor.observe('click', function(e) {
      Event.stop(e);
      this.parentNode.remove();
    });

    hidden_input = new Element('input',{'class': 'smallinput', 'value': t[2],'name': field_name});
    hidden_input.setStyle({'display': 'none'});
    li.insert(anchor);
    li.insert(hidden_input);
    if (holderChildNodes.length <= 1) {
      holder[0].insertBefore(li, holderChildNodes[0]);
    }
    else {
      holder[0].insertBefore(li,holderChildNodes[holderChildNodes.length - 1]);
    }
  });
}

function make_reviews_of_active() {
  var class_name1 = document.getElementById("reviews_of_link");
  var class_name2 = document.getElementById("reviews_by_link");
  var left_img1 = document.getElementById("reviews_of_left_link");
  var right_img1 = document.getElementById("reviews_of_right_link");
  var left_img2 = document.getElementById("reviews_by_left_link");
  var right_img2 = document.getElementById("reviews_by_right_link");

  left_img1.innerHTML = "<img src='/images/img/active_tab_left.gif' />"
  right_img1.innerHTML = "<img src='/images/img/active_tab_right.gif' />"
  left_img2.innerHTML = "<img src='/images/img/deactive_tab_left.gif' />"
  right_img2.innerHTML = "<img src='/images/img/deactive_tab_right.gif' />"
  class_name1.className = "tabnavmiddleactive";
  class_name2.className = "tabnavmiddle";
}


function make_reviews_by_active() {
  var class_name1 = document.getElementById("reviews_of_link");
  var class_name2 = document.getElementById("reviews_by_link");
  var left_img1 = document.getElementById("reviews_of_left_link");
  var right_img1 = document.getElementById("reviews_of_right_link");
  var left_img2 = document.getElementById("reviews_by_left_link");
  var right_img2 = document.getElementById("reviews_by_right_link");
  left_img1.innerHTML = "<img src='/images/img/deactive_tab_left.gif' />"
  right_img1.innerHTML = "<img src='/images/img/deactive_tab_right.gif' />"
  left_img2.innerHTML = "<img src='/images/img/active_tab_left.gif' />"
  right_img2.innerHTML = "<img src='/images/img/active_tab_right.gif' />"
  class_name1.className = "tabnavmiddle";
  class_name2.className = "tabnavmiddleactive";
}

function setCursor(el, st, end) {
  if(el.setSelectionRange) {
    el.focus();
    el.setSelectionRange(st, end);
  }
  else {
    if (el.createTextRange) {
      range = el.createTextRange();
      range.collapse(true);
      range.moveEnd('character', end);
      range.moveStart('character', st);
      range.select();
    }
  }
}

function reply_message(message_subject, user_details, field_name) {
  var element = $('message_form')
  clear_to_address_field();
  userboxes_to_address_field(user_details, field_name);
  $('message_title').value = "Re: "+ message_subject
  element.show();
  setCursor($('message_body'),0,0)
}

function forward_message(message_subject) {
  clear_to_address_field();
  $('message_title').value = "Fwd: " + message_subject
    var element = $('message_form')
    element.show();
    setCursor($('message_body'),0,0)
  }

function select_all(checkbox_name) {
  var check_boxes = document.getElementsByClassName(checkbox_name);
  for (i = 0; i < check_boxes.length; i++) {
    check_boxes[i].checked = true;
  }
}

function select_none(checkbox_name) {
  var check_boxes = document.getElementsByClassName(checkbox_name);
  for (i = 0; i < check_boxes.length; i++) {
    check_boxes[i].checked = false;
  }
}

function tooLong(strTest, maxlen) {
  if (strTest.value.length > maxlen) {
    strTest.value = strTest.value.substr(0, maxlen);
  }
}

function disp_msg(len, ref1, ref2, ref3) {
  if ((document.getElementsByClassName(ref3).length) < len) {
    $(ref1).show();
    $(ref2).hide();
  }
  else {
    $(ref1).hide();
    $(ref2).show();
  }
}

function clear_default_website_values(form) {
  $(form).select('input.websiteinput').each(function(input) {
    if (input.value == 'http://') {
      input.value = '';
    }
  });
}

function rating_text(value) {
  rating_descriptions = ['Abysmal', 'Terrible', 'Poor', 'Mediocre', 'Fair', 'Average', 'Good', 'Great', 'Excellent', 'Outstanding', 'Extraordinary'];
  return rating_descriptions[Math.round(parseFloat(value))]
}