var chg_prof_http = "";
var mod_user_http = "";
var join_grp_http = "";
function change_em_pw(chng) {
 var user_name = get_user_name();
 var out = "";
 var chng_div = document.getElementById("chng_em_pw");
 if(chng == "pw") {
  out+= "<br><b><u>Change Password</u></b><br><table><tr><td>User Name:</td><td>" + user_name + "</td>";
  out+= "<tr><td>Current Password:</td><td><input type='password' id='curr_pw'></td></tr>\n";
  out+= "<tr><td>New Password:</td><td><input type='password' id='new_pw1'></td></tr>\n";
  out+= "<tr><td>Retype Password:</td><td><input type='password' id='conf_pw2'></td></tr></table><br>\n"; 
  out+= "<input type='image' onClick='do_change(\"pw\"); return false;' src='../images/submit.png'>&nbsp;&nbsp;";
  out+= "<input type='image' onClick='change_em_pw(\"cancel\"); return false;' src='../images/cancel.png'><br>";
  out+= "<div id='pw_em_err_div'></div>\n";
 }
 else if (chng == "cancel") {
  out+= "<a onClick='change_em_pw(\"pw\"); return false;' class='link_class' onmouseover=className='link_class_over'; onmouseout=className='link_class';>Change Password<br><br>\n";
  out+= "<a onClick='change_em_pw(\"em\"); return false;' class='link_class' onmouseover=className='link_class_over'; onmouseout=className='link_class';>Change Email Address</a><br><br>";
  out+= "<a href='plans.php' target='_blank' class='link_class' onmouseover=className='link_class_over'; onmouseout=className='link_class';>Subscribe/Renew</a>\n";
 }
 else  {
  var curr_em = document.getElementById("prof_email").innerHTML;
  out+= "<br><b><u>Change Email</u></b><br><table><tr><td>User Name:</td><td>" + user_name + "</td>\n";
  out+= "<tr><td>Current Email:</td><td>" + curr_em + "</td></tr>\n";
  out+= "<tr><td>New Email:</td><td><input type='text' id='new_em1'></td></tr>\n";
  out+= "<tr><td>Retype Email:</td><td><input type='text' id='conf_em2'></td></tr></table><br>\n"; 
  out+= "<input type='image' onClick='do_change(\"em\"); return false;' src='../images/submit.png'>&nbsp;&nbsp;";
  out+= "<input type='image' onClick='change_em_pw(\"cancel\"); return false;' src='../images/cancel.png'><br>";
  out+= "<div id='pw_em_err_div'></div>\n"; 
 }
 chng_div.innerHTML = out;
} //end function change_em_pw

function do_change(do_chng) {
 var user_name = document.getElementById("user_name").value;
 var chg_url = "";
 var chg_param = "";
 var err_div = document.getElementById("pw_em_err_div");
 if(do_chng == "pw") {
  var cur_pw = document.getElementById("curr_pw").value;
  var chg_pw1 = document.getElementById("new_pw1").value;
  var chg_pw2 = document.getElementById("conf_pw2").value;
  if(chg_pw1 != chg_pw2) {
   err_div.innerHTML = "<font color='red'>New password and Retype Password must be the same and at least 4 characters long.<br>";
  }
  else if(chg_pw1.length < 4) {
     err_div.innerHTML = "<font color='red'>Passwords must be at least 4 characters long.<br>";
  }
  else {
  err_div.innerHTML = "";
  chg_prof_http = getHTTPObject();
  chg_param = "act=ch_pw&user=" + user_name + "&curr_pw=" + cur_pw + "&newpw=" + chg_pw1;  
  chg_prof_http.open("POST", "profile.php", true);
  chg_prof_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  chg_prof_http.setRequestHeader("Content-length", chg_param.length);
  chg_prof_http.setRequestHeader("Connection", "close");
  chg_prof_http.onreadystatechange = do_change_res;
  chg_prof_http.send(chg_param);
  }
 } //end if do_chng = pw
 if(do_chng == "em") {
  var chg_em1 = document.getElementById("new_em1").value;
  var chg_em2 = document.getElementById("conf_em2").value;
  if(chg_em1 != chg_em2) {
   err_div.innerHTML = "<font color='red'>New Email and Retype Email must be the same<br>\n";
  }
  else {
   err_div.innerHTML = "";
   chg_param = "act=ch_em&user=" + user_name + "&newem=" + chg_em1;
   chg_prof_http = getHTTPObject();
   chg_prof_http.open("POST", "profile.php", true);
   chg_prof_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   chg_prof_http.setRequestHeader("Content-length", chg_param.length);
   chg_prof_http.setRequestHeader("Connection", "close");
   chg_prof_http.onreadystatechange = do_change_res;
   chg_prof_http.send(chg_param);
  }
 } 
} //end do_change function

function do_change_res() {
 if(chg_prof_http.readyState == 4) {
  var chng_div = document.getElementById("chng_em_pw");
  var err_div = document.getElementById("pw_em_err_div");
  var chg_xml = chg_prof_http.responseXML;
  var ch_res = chg_xml.getElementsByTagName('res').item(0).firstChild.data;
  if(ch_res == "PWSuccess") {
   var upw = chg_xml.getElementsByTagName('newpw').item(0).firstChild.data;
   var un = document.getElementById("user_name").value;
   var cookie_value = un + "-" + upw;
   SetCookie('spec_calc',cookie_value,365);
   chng_div.innerHTML = "You password was successfully changed.";
  }
  else if(ch_res == "PWInvalid") {
   err_div.innerHTML = "<br>Your current password is incorrect. Please try enter your current password, then try again<br>";
  }
  else if(ch_res == "EMSuccess") {
   var upem = chg_xml.getElementsByTagName('newem').item(0).firstChild.data;
   chng_div.innerHTML = "You email was successfully updated to " + upem + ".";
  }
  else if(ch_res == "EMInvalid") {
   chng_div.innerHTML = "An error occurred while trying to update your email address. Please try to update your email address again<br>";
  }
  else {
   err_div.innerHTML = "An error occurred. Please try again.";  
  }
 }
}

//this function will add a user to a group based on the users id.
function show_add_to_grp(admin_id, user_type, gCode) {
 var add_str= "";
 if(user_type == "user") {
  add_str = "Please enter the user name of the user you wish to add to the group subscription: <br>User name: <input type='text' name='add_user_name' id='add_user_name' value=''>";
 add_str+="&nbsp;&nbsp;<a onclick='add_to_grp(\"" + admin_id + "\", \"user\");' class=\"link_class\" onmouseover=\"className='link_class_over';\" onmouseout=\"className='link_class';\">Add</a>";
 }
 else if(user_type == "admin") {
 add_str = "Please enter the user name of the user you wish to add as an administrator to the group subscription.<br>The user must currently be a member of this group.<br><br>User name: <input type='text' name='add_admin_name' id='add_admin_name' value=''>";
 add_str+="&nbsp;&nbsp;<a onclick='add_to_grp(\"" + admin_id + "\", \"admin\");' class=\"link_class\" onmouseover=\"className='link_class_over';\" onmouseout=\"className='link_class';\">Add</a>";
 }
 add_str+="&nbsp;&nbsp;&nbsp;&nbsp;<a onclick='cancel_add();' class=\"link_class\" onmouseover=\"className='link_class_over';\" onmouseout=\"className='link_class';\">Cancel</a><br>";
 document.getElementById("add_grp_user").innerHTML = add_str;
 document.getElementById("add_grp_err").innerHTML = "";
}

function cancel_add() {
 document.getElementById("add_grp_user").innerHTML = "";
 document.getElementById("add_grp_err").innerHTML = "";

}
//this function gets the name of the user to be added to the group & sends it to a php file to be added.
function add_to_grp(admin_id, user_type) {
 var remote_address = document.getElementById("calc_remote_addr").value;
 var remote_host = document.getElementById("calc_remote_host").value;
 var user_agent = document.getElementById("calc_user_agent").value;
 var param_str = "remote_addr=" + remote_address + "&remote_host=" + remote_host + "&ua=" + user_agent;
 var err_str = "none";
 if(user_type == "user") {
  var new_user_name = document.getElementById("add_user_name").value;
  if(new_user_name.length == 0) {
   err_str = "User name can not be blank.";
  }
  param_str+= "&admin_id=" + admin_id + "&new_user_name=" + new_user_name + "&action=add";
 }
 else if(user_type == "admin") {
  var new_admin_name = document.getElementById("add_admin_name").value;
  if(new_admin_name.length == 0) {
   err_str = "Administrator name can not be blank.";
  }
  param_str+= "&admin_id=" + admin_id + "&new_admin_name=" + new_admin_name + "&action=addAdmin";
 }
 if(err_str != "none") {
   document.getElementById("add_grp_err").innerHTML = "<font color='red'>" + err_str + "</font><br>";
 }
 else {
  mod_user_http = getHTTPObject();
  mod_user_http.open("POST", "modify_group_user.php", true);
  mod_user_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  mod_user_http.setRequestHeader("Content-length", param_str.length); 
  mod_user_http.setRequestHeader("Connection", "close");
  mod_user_http.onreadystatechange = modify_user_res;
  mod_user_http.send(param_str);
 }
}

//this function gets the result of the add_to_grp function.
function modify_user_res() {
 if(mod_user_http.readyState == 4) {
  var http_res = mod_user_http.responseXML;
  var res_action = http_res.getElementsByTagName('action').item(0).firstChild.data;
  var out = "";
  if(res_action == "add") {
   var add_res = http_res.getElementsByTagName('result').item(0).firstChild.data;
   var user_res_name = http_res.getElementsByTagName('usern').item(0).firstChild.data;
    if(add_res == "pass") {
     var res2 = http_res.getElementsByTagName('res2').item(0).firstChild.data;
     if(res2 == "NOT_FULL") {
    // out = "User " + user_res_name + " has been added to your group.<br>"; 
     window.location = "../info/account.php";
    } //end res2 = not_full
    else if(res2 == "USER_IN_PLAN") {
    out = "User " + user_res_name + " is already a member in your group.<br>"; 
    document.getElementById("add_grp_err").innerHTML = out;
    }
    else if(res2 == "MAXED_OUT") {
     out = "<font color='red>Your group has the maximum number of users allowed.<br>User ";
     out+= user_res_name + " was not added to the group.</font><br>"; 
   document.getElementById("add_grp_err").innerHTML = out;
    } //end else res2 = maxed_out
   } //end if add_res = pass
   else if(add_res == "fail"){
    out = "<font color='red'>User " + user_res_name + " does not exist, please check the user name and try again.</font><br>";
    document.getElementById("add_grp_err").innerHTML = out;
   }
   else {
    out = "<font color='red'>An error has occurred while trying to add the user " + user_res_name + " please try again.</font><br>";
    document.getElementById("add_grp_err").innerHTML = out;
   }

  } //end if action = add
  else if(res_action == "addAdmin") {
   var add_admin_res = http_res.getElementsByTagName('result').item(0).firstChild.data;
   var user_res_name = http_res.getElementsByTagName('usern').item(0).firstChild.data;
   var out = "";
   if(add_admin_res == "ADMIN_ADDED") {
    //out = "User " + user_res_name + " has been added as an administrator to the group.<br>";
    window.location = "../info/account.php";
   } //end if add_res = ADMIN_ADDED
   else if(add_admin_res == "ADMIN_NIP") {
    out = "<font color='red'>User " + user_res_name + " has not been added as an administrator because he/she is not a member of the group.<br>";
    out+= "Users must be a member of the group before becoming an administrator.</font><br>";
    document.getElementById("add_grp_err").innerHTML = out;
   } //end else if add_res = ADMIN_NIP
   else if(add_admin_res == "MAX_ADMINS") {
    out = "<font color='red'>User " + user_res_name + " has not been added as an administrator to the group because the group already has the maximum number (2) of administrators allowed.</font><br>";
    document.getElementById("add_grp_err").innerHTML = out;
  } //end else if add_res = MAX_ADMINS
   else if(add_admin_res == "UNKNOWN_ERR") {
    out = "<font color='red'>An error has occurred while trying to add the user " + user_res_name + " as an administrator. Please try again.</font><br>";
    document.getElementById("add_grp_err").innerHTML = out;
   } //end else if add_res = UNKNOWN_ERR
   else {
    out = "An error has occurred while trying to add the user " + user_res_name + " as an administrator. Please try again.<br>";
    document.getElementById("add_grp_err").innerHTML = out;
   }
 
  } //end else res_action = addAdmin
  else if(res_action == "remove") {
   var add_res = http_res.getElementsByTagName('res').item(0).firstChild.data;
   if(add_res == "done") {
     window.location = "../info/account.php";
   }
   else {
    document.getElementById("rmv_user_span").innerHTML = "An error has occurred while trying to delete the user.<br>Please try again.<br>";
   }
  }
 } //end http ready state = 4
} //end function

function rmv_confirm(user_id) {
var do_rmv = window.confirm('Are you sure you want to delete this user from the group?');
 if(do_rmv == true)
 {
  remove_from_grp(user_id);
 }
}

function remove_from_grp(user_id) {
 var remote_address = document.getElementById("calc_remote_addr").value;
 var remote_host = document.getElementById("calc_remote_host").value;
 var user_agent = document.getElementById("calc_user_agent").value;
 var param_str = "del_uid=" + user_id + "&action=remove";
 param_str+="&remote_addr=" + remote_address + "&remote_host=" + remote_host + "&ua=" + user_agent;
 mod_user_http = getHTTPObject();
 mod_user_http.open("POST", "modify_group_user.php", true);
 mod_user_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 mod_user_http.setRequestHeader("Content-length", param_str.length); 
 mod_user_http.setRequestHeader("Connection", "close");
 mod_user_http.onreadystatechange = modify_user_res;
 mod_user_http.send(param_str);
}
//this function shows the information after a user clicks on
//the "Join Group" link under 'My Account'
function show_user_join(user_id) {
 var out_str = "<br>Please enter the code of the group you would like to join.<br>";
 out_str+="Group Code: <input type='text' name='user_group_code' id='user_group_code'>&nbsp;&nbsp;";
 out_str+="<input type='image' src='../images/join.png' onClick=\"join_group('" + user_id + "');\"><br>";
 out_str+= "<span id='join_err_span' name='join_err_span'></span>";

 document.getElementById("join_grp_span").innerHTML = out_str;
}

//this function is used when users try to add themselves to a group under the 'My Account' page.
function join_group(user_id) {
 var remote_address = document.getElementById("calc_remote_addr").value;
 var remote_host = document.getElementById("calc_remote_host").value;
 var user_agent = document.getElementById("calc_user_agent").value;
 var join_code = document.getElementById("user_group_code").value;
 var param_str = "user_id=" + user_id + "&action=user_add" + "&join_code=" + join_code;
 param_str+="&remote_addr=" + remote_address + "&remote_host=" + remote_host + "&ua=" + user_agent;
 join_grp_http = getHTTPObject();
 join_grp_http.open("POST", "modify_group_user.php", true);
 join_grp_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 join_grp_http.setRequestHeader("Content-length", param_str.length); 
 join_grp_http.setRequestHeader("Connection", "close");
 join_grp_http.onreadystatechange = join_group_res;
 join_grp_http.send(param_str);
}
//this function shows the result of the join_group function.
function join_group_res() {
 if(join_grp_http.readyState == 4) {
  var http_res = join_grp_http.responseXML;
  var join_res = http_res.getElementsByTagName('res').item(0).firstChild.data;
  var out_str = "";
  if(join_res == "group_DNE") {
   out_str = "<font color='red'>That group code does not exist. Please check your group code and try again.</font>";
   document.getElementById("join_err_span").innerHTML = out_str;
  }
  else if(join_res == "group_EX") {
   var res2 = http_res.getElementsByTagName('res2').item(0).firstChild.data;
   if(res2 == "NOT_FULL") {
   var join_code = http_res.getElementsByTagName('join_code').item(0).firstChild.data;
   var join_end =  http_res.getElementsByTagName('group_end').item(0).firstChild.data;
   out_str = "You have joined the group " + join_code + ". Your subscription is active until " + join_end;
   window.alert(out_str);
   window.location = "../info/account.php";
  }
  else if(res2 == "MAXED_OUT") {
   out_str = "<font color='red'>The group you are trying to join has reached the maximum number of users allowed.<br>";
   out_str+= "Please contact the group administrator for more information.</font>";
   document.getElementById("join_err_span").innerHTML = out_str;
  }
 }
 else {
   out_str = "<font color='red'>An error has occurred. Please try again.</font>";
   document.getElementById("join_err_span").innerHTML = out_str;
 }
 } //end readystate = 4 


}
